Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: maron 03 Února 2009, 16:40:29

Název: Spuštění souboru s právy roota
Přispěvatel: maron 03 Února 2009, 16:40:29
Mám problém že jsem si udělal script, který vypadá asi tak:
Kód: [Vybrat]
#!/bin/sh
#!/bin/sh: export USER=maron
echo ------------------------------ >> /tmp/lm-startstop.log
echo ------------------------------ >> /tmp/err-startstop.log
date >> /tmp/lm-startstop.log
date >> /tmp/err-startstop.log
echo $1 >> /tmp/lm-startstop.log
echo $USER >> /tmp/lm-startstop.log
#export >>/tmp/export.txt
#bash -c "echo $DBUS_SESSION_BUS_ADDRESS >> /tmp/lm-startstop.log"

case "$1" in
  start)
    #příkazy při přechodu do batery mody
    echo vypínám služby >> /tmp/lm-startstop.log
    service bluetooth stop 2>> /tmp/err-startstop.log
    service ssh stop 2>> /tmp/err-startstop.log
    service avahi-daemon stop 2>> /tmp/err-startstop.log
    service winbind stop 2>> /tmp/err-startstop.log
    service cups stop 2>> /tmp/err-startstop.log
    service hotkey-setup stop 2>> /tmp/err-startstop.log
    service rsync stop 2>> /tmp/err-startstop.log
    service apport stop 2>> /tmp/err-startstop.log
    service jetty stop 2>> /tmp/err-startstop.log
    service virtualbox-ose stop 2>> /tmp/err-startstop.log
    service vboxdrv stop 2>> /tmp/err-startstop.log
    service apache2 stop 2>> /tmp/err-startstop.log
    #service mysql-ndb-mgm stop 2>> /tmp/err-startstop.log
    #service mysql-ndb stop 2>> /tmp/err-startstop.log
    service mysql stop 2>> /tmp/err-startstop.log

    echo zavírám aplikace >> /tmp/lm-startstop.log
    killall akregator 2>> /tmp/err-startstop.log
#    killall kmix 2>> /tmp/err-startstop.log
    #killall knetworkmanager
    killall klipper 2>> /tmp/err-startstop.log
    killall java 2>> /tmp/err-startstop.log
    ;;
  stop)
    #příkazy při ukončení batery mode
    echo zapínám služby >> /tmp/lm-startstop.log
    service bluetooth start 2>> /tmp/err-startstop.log
    service ssh start 2>> /tmp/err-startstop.log
    service avahi-daemon start 2>> /tmp/err-startstop.log
    service winbind start 2>> /tmp/err-startstop.log
    service cups start 2>> /tmp/err-startstop.log
    service hotkey-setup start 2>> /tmp/err-startstop.log
    service rsync start 2>> /tmp/err-startstop.log
    service apport start 2>> /tmp/err-startstop.log
    service jetty start 2>> /tmp/err-startstop.log
    service virtualbox-ose start 2>> /tmp/err-startstop.log
    service vboxdrv start 2>> /tmp/err-startstop.log
    service apache2 start 2>> /tmp/err-startstop.log
    #service mysql-ndb-mgm start 2>> /tmp/err-startstop.log
    #service mysql-ndb start 2>> /tmp/err-startstop.log
    service mysql start 2>> /tmp/err-startstop.log


#    echo spouštím aplikace >> /tmp/lm-startstop.log
#    bash -c "akregator --hide-mainwindow 2>> /tmp/err-startstop.log"
#    bash -c "kmix 2>> /tmp/err-startstop.log"
    #knetworkmanager
#    bash -c "klipper 2>> /tmp/err-startstop.log"
    ;;
esac


exit 0


Spouští ho laptop mode při přejití na baterii s parametrem start při přechodu na AC mod je to parametr stop. Problém je v tom že pro spuštění a pro ovládání některých služeb se potřebují práva roota. Jak je položka v nastavení práv nastavit UID a GID při spuštění jsem už nastavil ale stejně to nefunguje. Zkoušel jsem taky před každý soubor dávat sudo, nebo na začátek sudo su. Řádek: echo $USER >> /tmp/lm-startstop.log  vypisuje do logu pouze prázdný řádek. Víte někdo co s tím?
Název: Re: Spuštění souboru s právy roota
Přispěvatel: kkaarreell 03 Února 2009, 20:00:13
pokud chces, aby se ten skript spoustel s pravy roota, tak to bohuzel nepujde zaridit pomoci suid. nejsnazsi reseni asi bude nastavit v /etc/sudoers, aby tento konkretni skript sel spoustet se sudo bez zadavani hesla.
Název: Re: Spuštění souboru s právy roota
Přispěvatel: maron 06 Února 2009, 15:39:27
pokud chces, aby se ten skript spoustel s pravy roota, tak to bohuzel nepujde zaridit pomoci suid. nejsnazsi reseni asi bude nastavit v /etc/sudoers, aby tento konkretni skript sel spoustet se sudo bez zadavani hesla.
Mohl by jsi to trochu upřesnit jak jsi to myslel? dal jsem tam podle nápovědy toto:
Kód: [Vybrat]
%sudo ALL=NOPASSWD: /etc/laptop-mode/batt-start/startstop.sh, ale zdá se že to nefunguje.
Název: Re: Spuštění souboru s právy roota
Přispěvatel: kkaarreell 06 Února 2009, 16:08:45
a je uzivatel (ten co to spousti) ve skupine sudo (ze to tak mas nastavene)? zkousel si to poustet z konzole (jak)? je ten skript spustitelny?
Název: Re: Spuštění souboru s právy roota
Přispěvatel: arrange 06 Února 2009, 16:54:21
Ten USER Ti nefunguje asi proto, že ho máš v poznámce
Citace
#!/bin/sh: export USER=maron

Možná jiná varianta: ten skript by měl fungovat s právy pro roota, pokud:
- je spustitelný uživatelem (maron)
- v sudoers je něco jako maron ALL=NOPASSWD: /home/maron/startstop.sh
- spouštíš ho pomocí sudo /home/maron/startstop.sh (neměl by chtít heslo)
- no a pokud samozřejmě funguje sám o sobě
Název: Re: Spuštění souboru s právy roota
Přispěvatel: maron 07 Února 2009, 13:27:43
a je uzivatel (ten co to spousti) ve skupine sudo (ze to tak mas nastavene)? zkousel si to poustet z konzole (jak)? je ten skript spustitelny?
Nevím který uživatel to spouští a asi ani nezjistím, protože to spouští laptop-mode a v logu to nechá prázdný řádek.
Z konzole jsem to zkoušel jako "./cesta k souboru" nespustilo se to s právy roota, pak jsem to zkoušel sudo ./cesta a chtělo to heslo.
Spustitelný příznak jsem mu nastavil.
Název: Re: Spuštění souboru s právy roota
Přispěvatel: maron 07 Února 2009, 13:30:24
Ten USER Ti nefunguje asi proto, že ho máš v poznámce
Citace
#!/bin/sh: export USER=maron

Možná jiná varianta: ten skript by měl fungovat s právy pro roota, pokud:
- je spustitelný uživatelem (maron)
- v sudoers je něco jako maron ALL=NOPASSWD: /home/maron/startstop.sh
- spouštíš ho pomocí sudo /home/maron/startstop.sh (neměl by chtít heslo)
- no a pokud samozřejmě funguje sám o sobě
Jenže to pořád neřeší můj problém, kdybych si ho chtěl spouštět sám tak už pro mě není problém napsat heslo. Problém je v tom že to spouští ten program laptop-mode při vytažení a zasunutí kabelu napájení... už jsem to tu párkrát psal
Název: Re: Spuštění souboru s právy roota
Přispěvatel: kkaarreell 07 Února 2009, 13:42:03
Z konzole jsem to zkoušel jako "./cesta k souboru" nespustilo se to s právy roota, pak jsem to zkoušel sudo ./cesta a chtělo to heslo.
cili jeste jednou a pomaleji... patris do skupiny "sudo"? Mas totiz nastaveno, aby to heslo nechtelo jen po clenech teto skupiny. spoustet se to ma samozrejme pomoci sudo a heslo (pokud patris do te skupiny) by to chtit nemelo. navic to zadavej s absolutni cestou ke skriptu (jak je to v /etc/sudoers).

Nevím který uživatel to spouští a asi ani nezjistím, protože to spouští laptop-mode a v logu to nechá prázdný řádek.
neni nic snazsiho, nez prinutit laptop-mode spustit skript s prikazem
Kód: [Vybrat]
id > /tmp/kdojsema pak si to precist.
Název: Re: Spuštění souboru s právy roota
Přispěvatel: maron 08 Února 2009, 11:20:35
Z konzole jsem to zkoušel jako "./cesta k souboru" nespustilo se to s právy roota, pak jsem to zkoušel sudo ./cesta a chtělo to heslo.
cili jeste jednou a pomaleji... patris do skupiny "sudo"? Mas totiz nastaveno, aby to heslo nechtelo jen po clenech teto skupiny. spoustet se to ma samozrejme pomoci sudo a heslo (pokud patris do te skupiny) by to chtit nemelo. navic to zadavej s absolutni cestou ke skriptu (jak je to v /etc/sudoers).

Nevím který uživatel to spouští a asi ani nezjistím, protože to spouští laptop-mode a v logu to nechá prázdný řádek.
neni nic snazsiho, nez prinutit laptop-mode spustit skript s prikazem
Kód: [Vybrat]
id > /tmp/kdojsema pak si to precist.

Tak jsem to nastavil pro všechny skupiny ALL ALL=NOPASSWD: /etc/laptop-mode/batt-start/startstop.sh
nicméně to pořád po mě chce heslo. Laptop-mode to vrátí toto: uid=0(root) gid=0(root)
A přesto když tam chci spustit akregator tak to hlásí chyby.
Kód: [Vybrat]
akregator(13062): KUniqueApplication: Cannot find the D-Bus session server
akregator(13038): KUniqueApplication: Pipe closed unexpectedly.
<unknown program name>(13070)/: KUniqueApplication: Cannot find the D-Bus session server
<unknown program name>(13068)/: KUniqueApplication: Pipe closed unexpectedly.
Název: Re: Spuštění souboru s právy roota
Přispěvatel: kkaarreell 08 Února 2009, 14:37:48
Laptop-mode to vrátí toto: uid=0(root) gid=0(root)
A přesto když tam chci spustit akregator tak to hlásí chyby.
Kód: [Vybrat]
akregator(13062): KUniqueApplication: Cannot find the D-Bus session server
akregator(13038): KUniqueApplication: Pipe closed unexpectedly.
<unknown program name>(13070)/: KUniqueApplication: Cannot find the D-Bus session server
<unknown program name>(13068)/: KUniqueApplication: Pipe closed unexpectedly.
hm, takze se to pousti s pravy roota uz ted, na laborovani se sudo muzes zapomenout. rekl bych, ze ta chyba s pravy vubec nesouvisi a ze k ni dojde vzdycky, jen o tom nevis (to pokud ten akregator nakonec bezi).. jsi si jisty, ze se ten akregator nespusti? treba si jen stezuje, ale nabehne.. a co ten d-bus, ten bezi?
Název: Re: Spuštění souboru s právy roota
Přispěvatel: maron 10 Února 2009, 15:36:23
Laptop-mode to vrátí toto: uid=0(root) gid=0(root)
A přesto když tam chci spustit akregator tak to hlásí chyby.
Kód: [Vybrat]
akregator(13062): KUniqueApplication: Cannot find the D-Bus session server
akregator(13038): KUniqueApplication: Pipe closed unexpectedly.
<unknown program name>(13070)/: KUniqueApplication: Cannot find the D-Bus session server
<unknown program name>(13068)/: KUniqueApplication: Pipe closed unexpectedly.
hm, takze se to pousti s pravy roota uz ted, na laborovani se sudo muzes zapomenout. rekl bych, ze ta chyba s pravy vubec nesouvisi a ze k ni dojde vzdycky, jen o tom nevis (to pokud ten akregator nakonec bezi).. jsi si jisty, ze se ten akregator nespusti? treba si jen stezuje, ale nabehne.. a co ten d-bus, ten bezi?
Určitě neběží, a co je to ten d-bus nevím, v procesech myslím ani ve službách ho nemám.
Název: Re: Spuštění souboru s právy roota
Přispěvatel: kkaarreell 10 Února 2009, 18:54:27
hm, zkus ty prikazy spoustet jeden po druhym, jestli to tak bezi
Kód: [Vybrat]
sudo -i
prikaz 1
prikaz 2
...
jestli to bude fungovat tak, jak ma. mozna tomu zastavis nejaky proces, co je treba.. no nevim.