Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: maron 03 Února 2009, 16:40:29
-
Mám problém že jsem si udělal script, který vypadá asi tak:
#!/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?
-
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.
-
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:%sudo ALL=NOPASSWD: /etc/laptop-mode/batt-start/startstop.sh, ale zdá se že to nefunguje.
-
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?
-
Ten USER Ti nefunguje asi proto, že ho máš v poznámce
#!/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ě
-
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.
-
Ten USER Ti nefunguje asi proto, že ho máš v poznámce #!/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
-
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
id > /tmp/kdojsema pak si to precist.
-
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
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. 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.
-
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. 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?
-
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. 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.
-
hm, zkus ty prikazy spoustet jeden po druhym, jestli to tak bezi
sudo -i
prikaz 1
prikaz 2
...jestli to bude fungovat tak, jak ma. mozna tomu zastavis nejaky proces, co je treba.. no nevim.