Portál AbcLinuxu, 9. června 2025 18:18


Dotaz: cmd Shutdown pro non-root usera

22.8.2018 12:23 venda
cmd Shutdown pro non-root usera
Přečteno: 570×
Odpovědět | Admin
Ahoj,

potřebuji restartovat server (debian9) přes webové rozhraní. Mám v php script
shell_exec('/sbin/shutdown -r now')
který spouší user www-data, který nemá práva spustit cmd shutdown, jak mu je jednoduše přidat aniž bych musel instalovat sudo?

Předem dík
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.8.2018 12:40 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proč?

No ale jak chceš. Povol si (pokud je povoleny nemáš) tzv. "Magic SysRq Keys", tím že zapíšeš do /proc/sys/kernel/sysrq controls 128. Pak si nastav na soubor /proc/sysrq-trigger skupinu www-data. A změň nastavení přes chmod z 200 na 200.

Pak můžeš nechat php skriptem do tohoto souboru zapsat 'p' pro vypnutí, nebo 'b' pro restart. Ale podle mě udělat něco takového hraničí se ztrátou soudnosti. Protože ti pak ten stroj otočí kdejaký šmudla co ti najde díru v PHP.
22.8.2018 13:11 venda
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Takže doporučujete instalovat sudo?
23.8.2018 17:22 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Jistě, přes sudo je to trivialita.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
23.8.2018 10:25 R
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
To je poriadne debilny napad. Na co sluzi magic sysrq? A co sa stane s beziacimi procesmi a namountovanymi filesystemami pri tom restarte?
23.8.2018 12:32 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Debilní je už sám prvotní požadavek:
…potřebuji restartovat server (debian9) přes webové rozhraní.
Podle mě nemá webový server do spouštění služeb a potažmo zapínání a vypínání serveru vůbec co zasahovat. Ale považuji za občanskou povinnost sebevrahovi, který si to hodlá hodit, najít pořádnou a vhodnou větev. A ne mu ten nápad rozmlouvat.
k3dAR avatar 23.8.2018 16:10 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
to ale neznamena ze by bylo vhodne pouzit az tu nejhorsi/posledni moznost, a kdyz uz (jako ze NE), tak alespon misto jenom natvrdo 'b" tam poslat postupne s,u,b, tedy sync, remount-ro, reboot...
porad nemam telo, ale uz mam hlavu... nobody
23.8.2018 20:00 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Smyslem poradny je ukázat cestu, ne vodit za ruku. Předpokládám že dotyčný je natolik gramotný, aby si zjistil jaká to má rizika a co se s tím dá všechno dělat. Přijde mi totálně na palici pořád dokola někomu psát jedno a to samé.

Chtěl vědět jak udělat shutdown přes webový server, tak ho má mít. O korektním vypnutí nepadlo ani slovo. Ostatně. Vzhledem k účelu pro jaký to nejspíš chce by to stejně zůstalo jen na něčem viset.
k3dAR avatar 23.8.2018 22:17 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
v poradne ae ma radit, tak bud mas dat odkaz na wiky o magic sysrq, nebo kdyz uz pises jak tak pridat 2 pismwnka s a u te nezabije, aspon by pak nebyla rada pololikvidacni ;-)
porad nemam telo, ale uz mam hlavu... nobody
Pavel 'TIGER' Růžička avatar 22.8.2018 13:07 Pavel 'TIGER' Růžička | skóre: 54
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Odpovědět | | Sbalit | Link | Blokovat | Admin
Access Control List (ACL), ovšem též není vhodný na vše.
22.8.2018 13:44 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Myslím si, že to nie je o prístupe k binárke /sbin/shutdown:
$ ls -l /sbin/shutdown 
-rwxr-xr-x 1 root root 27264 Jun 21 20:41 /sbin/shutdown*

$ /sbin/shutdown  now
shutdown: you must be root to do that!
22.8.2018 13:50 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Resp. keby sa tie defaultné práva upravili nejako takto:
chgrp www-data /sbin/shutdown
chmod u+s,o= /sbin/shutdown
tak by to snáď mohlo klapnúť.
22.8.2018 14:01 venda
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
U /sbin/shutdown nejde změnit GROUP
chgrp www-data /sbin/shutdown
ls -l
lrwxrwxrwx 1 root root 14 Jun 13 22:20 /sbin/shutdown -> /bin/systemctl
22.8.2018 14:09 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
To máš za to, že používaš distro so systemd ;-)

No tak asi budeš musieť upraviť práva pre /bin/systemctl, nie?
Pavel 'TIGER' Růžička avatar 22.8.2018 14:48 Pavel 'TIGER' Růžička | skóre: 54
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Ještě když jsem používal openSUSE se systemd, tak uživateli stačilo systemctl poweroff a systém se vypnul. Bez jakýchkoliv dalších práv.
22.8.2018 13:34 SpaceExplo | skóre: 15
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Odpovědět | | Sbalit | Link | Blokovat | Admin
Reseni stylem "drbani se levou rukou za pravym uchem", ale funkcni by to byl melo:
- php skript vytvori soubor (napriklad /tmp/udelej_restart.ted)
- skript v cronu roota bude kazdou minutu kontrolovat, zda ten soubor existuje a pokud ho najde, tak ho smaze a provede restart
Jendа avatar 22.8.2018 15:56 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
S inotify, inotifywait to půjde i bez periodického kontrolování.
24.8.2018 00:06 Bherzet | skóre: 19 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Chtělo by to v takovém případě dát pozor na to, aby tam ten soubor nemohl zůstat viset v případě, že se FS remountne jako read-only (nebo nastane jiný problém, který smazání zabrání) a server poté neuvázl v nekonečném cyklu restartů. Doporučoval bych použít tmpfs/ramfs, nebo místo cronu/inotify rovnou spustit TCP/IP daemona (pozor na to, aby ten port nebyl přístupný zvenku).

S ohledem na to, že ten daemon obdrží jen jediný příkaz, jednoduchý rychlý hack může vypadat nějak jako:
#!/bin/sh
nc -l -p 1234 && shutdown -r
Z PHP pak stačí otevřít a zavřít socket na localhost:1234. A hlavně na to nezapomenout a nezačít si scannovat porty, nebo tak…
otasomil avatar 22.8.2018 15:21 otasomil | skóre: 39 | blog: puppylinux
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim
Musi to byt nutne pres PHP?
Pouzit se da dobre CGI pomoci Busybox httpd ktery umi i authorized pristup pod jmenem a heslem. Posilam takto magicky paket pro start serveru a nastartovanym pak shutdown.
Je to vse jednoduchy, Busybox byva soucasti systemu a jen si jej nechate (jako root kdyz je to nutne) pomoci @reboot v Cronu nastartovat.
K čemu hudba, která nevede k extázi... Stop MDMA !!! I spam umí být roztomilý
22.8.2018 20:45 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vygeneruj si dvojici SSH klíčů uživatele root. Privátní klíč zpřístupni uživateli www-data, do authorized_keys kromě veřejného klíče přidej parametr command="/sbin/shutdown -r now"

Z PHP už jen spustíš SSH s privátním klíčem.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
23.8.2018 19:49 debian
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nastavit prava seduit pre prikaz shutdown a moze vypnut pc hocijaky uzivatel pocitaca.
23.8.2018 21:08 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: cmd Shutdown pro non-root usera
To je vceľku zaujímavý, a rokmi overený bezpečnostný koncept. Na takú radu si prišiel sám, alebo ju máš z hackerského fóra okolo Anonymous?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.