Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Internet a sítě => Téma založeno: Zipule 11 Ledna 2009, 21:23:14
-
Zdravím, potřeboval bych prosím poradit s tím, jak jednoduše vytvořit spouštěč, který by mi zapínal a vypínal wifi.
Chtěl jsem použít příkaz
zipule@Holy:~$ sudo echo 1 > /sys/devices/platform/asus-laptop/wlan
bash: /sys/devices/platform/asus-laptop/wlan: Permission denied
zipule@Holy:~$
ale bohužel u tohodle zlobí oprávnění a abych zapsal do toho souboru wlan místo nuly jedničku musím se v konzoli přihlásit příkazem su jako root. Šlo by to nějak jednoduše ošetřit, abych jen kliknul na tlačítko a wifi se zapla klikl na druhý a wifi ze vypla?
-
sudo chown root skript.sh
sudo chmod 4755 skript.sh
-
To je jasné, proč to nejde, sudo funguje úplně jinak...
http://wiki.ubuntu.cz/Root%20sudo#Nev.2BAP0-hodysudo
-
Tak se mi podařilo upravit pomocí chmod přístup k souboru wlan, ale stále mi nejde udělat spouštěč,.... pokud do konzole napíšu echo 1 > /sys/devices/platform/asus-laptop/wlan wifi se mi zapne, ale pokud to hodím na tlačítko tak se hodnota v souboru wlan nepřepíše...Jestli někdo ví jak na to, zkuste mi to prosím napsat nějak polopatě. Používám Ubuntu teprve chvilku :)
-
http://forum.ubuntu.cz/index.php/topic,10122.msg171603.html#msg171603
-
zipuleee, tohle uloz do souboru:
sudo echo 1 > /sys/devices/platform/asus-laptop/wlana tomu soubor nadel (jako jezisek) ty prava a pak si na nej udelej odkaz na plochu nebo kamkoliv. Uz se snad chapem.
#edit: Pojnta je, ze ten soubor bude vlastnit root a chmodem reknes, ze ikdyz ho spoustis jako zipule, pri spusteni se to spusti pod tim uzivatelem, kterej je vlastnikem souboru (root).
-
@starenka :: to nebude imho fungovat jak ma .. set{uid,gid} nefunguje timto zpusobem ..
# echo '/sbin/fdisk $@' >/tmp/xx
# chmod +x /tmp/xx
# chmod +s /tmp/xx
# ls -la /tmp/xx
-rwsr-sr-x 1 root root 15 2009-01-12 00:57 /tmp/xx
# sudo -u nettezzaumana /tmp/xx -l
# chmod -s /tmp/xx
# ls -la /tmp/xx
-rwxr-xr-x 1 root root 15 2009-01-12 00:57 /tmp/xx
# chmod +s `which fdisk`
# sudo -u nettezzaumana /tmp/xx -l
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0005373f
Device Boot Start End Blocks Id System
/dev/sda1 1 797 6401871 7 HPFS/NTFS
/dev/sda2 * 798 810 104422+ 83 Linux
/dev/sda3 811 944 1076355 82 Linux swap / Solaris
/dev/sda4 945 14593 109635592+ f W95 Ext'd (LBA)
/dev/sda5 945 2984 16386268+ 7 HPFS/NTFS
/dev/sda6 2985 4068 8707198+ 83 Linux
/dev/sda7 4069 4515 3590496 83 Linux
/dev/sda8 4516 14593 80951503+ 83 Linux
#
@Zipule :: ja osobne vidim tuto jedinou rozumnou moznost ::
#include <stdio.h>
main() {
FILE *fw;
fw = fopen("/sys/devices/platform/asus-laptop/wlan", "w");
fprintf(fw, "1\n");
fclose(fw);
}
#include <stdio.h>
main() {
FILE *fw;
fw = fopen("/sys/devices/platform/asus-laptop/wlan", "w");
fprintf(fw, "0\n");
fclose(fw);
}
zkompilujes pomoci `gcc -o wlan-on wlan-on.c`a `gcc -o wlan-off wlan-off.c` .. umistis tyto dva soubory nekam do cesty a das jako vlastnika roota a priradis jim jak rikal vyse starenka setuid ..
takze napriklad pokud mas soubory v /tmp jako wlan-{on,off}.c a v ceste mas adresar ~/bin, tak udelas ::
# cd ~/bin
# gcc -o wlan-on /tmp/wlan-on.c
# gcc -o wlan-off /tmp/wlan-off.c
# sudo chown root wlan-*
# sudo chmod +s wlan-*
a dale s nima uz nudes zachazet dle libosti (aka zastupce na plochu apod ..)
regards
-
argh! myslel jsem, ze jsem na to konecne prisel, ale bylo to tim, ze si to sudo to heslo pamatuje par minut.
zipuli se timto omlouvam
-
A co uživatele a soubor přidat do /etc/sudoers (přes visudo) s oprávněním přístupu NOPASSWD?
Nebo jsem nepochopil, o co se tu snažíte?
-
A co treba v /etc/sudoers povolit uzivateli bez zadavani hesla (jenom) tento konkretni prikaz?
ntz: Ja vim, sudo, uplne se mi navalilo.
-
ale dyk jsem napsal (u sebe odzkouseno) postup .. co je tak tezkeho na tom zkompilovat si dve male binarky wlan-on a wlan-off a tem priradit +s (setuid) ???
-
nettezzaumana: jistě, ale proč to dělat složitě? :)
kkaarreell: není to to samé, co jsem navrhoval? :D
-
nettezzaumana: jistě, ale proč to dělat složitě? :)
kkaarreell: není to to samé, co jsem navrhoval? :D
.. ne. muj postup je zdaleka nejjednodussi a rekl bych, ze i v ramci moznosti nejbezpecnejsi ..
proste dve binarky co zapisuji na jedno misto (jinam nemuzou) a jde s nima krasne manipulovat .. jde si z nich udelat zastupce na plochu, namapovat je na klavesovou zkratku, neni potreb anic nastavovat v systemu apod ..
-
Sice tomu moc nerozumím, ale taky mi přijde jednodušší ten od Ntz, každopádně jsem to podle toho udělal a už to šlape děkuju mockrát :)
-
@Zipule ::
cat << 'EOF' >/tmp/wlan-on.c
#include <stdio.h>
main() {
FILE *fw;
fw = fopen("/sys/devices/platform/asus-laptop/wlan", "w");
fprintf(fw, "1\n");
fclose(fw);
}
EOF
cat << 'EOF' >/tmp/wlan-off.c
#include <stdio.h>
main() {
FILE *fw;
fw = fopen("/sys/devices/platform/asus-laptop/wlan", "w");
fprintf(fw, "0\n");
fclose(fw);
}
EOF
gcc -o /tmp/wlan-on /tmp/wlan-on.c
gcc -o /tmp/wlan-off /tmp/wlan-off.c
chmod +s /tmp/wlan-{on,off}
.. tohle cele staci jen "cut and paste" jako root (sudo -i) do terminalu a v /tmp/ se ti vytvori wlan-on a wlan-off .. staci jak rikam jen oznacit mysi a zmacknout prostredni mysitko a je to hotovo ;)
-
Děkuju moc, někam si to uschovám pro případný reinstal :), nakonec se mi to povedlo podle toho postupu co jsi psal výš...
-
Netz: pokud vytvořím script, do kterého bude mít právo zápisu jen root a root bude i jeho vlastníkem, nastavím mu možnost být spuštěn přes sudo bez nutnosti zadávání hesla a onen script bude zapisovat právě jen do jednoho místa, řekni mi, co je na tom méně bezpečné, než je tvé řešení? Mimochodem, jednodušší je vytvářet dva soubory, kompilovat je, než vytvořit jediný script a upravit /etc/sudoers?
Zipule: super :)
-
Netz: pokud vytvořím script, do kterého bude mít právo zápisu jen root a root bude i jeho vlastníkem, nastavím mu možnost být spuštěn přes sudo bez nutnosti zadávání hesla a onen script bude zapisovat právě jen do jednoho místa, řekni mi, co je na tom méně bezpečné, než je tvé řešení? Mimochodem, jednodušší je vytvářet dva soubory, kompilovat je, než vytvořit jediný script a upravit /etc/sudoers?
Zipule: super :)
.. bude to fungovat taky, ale je potreba kvuli tomu modifikovat /etc/sudoers .. navic me reseni umim udelat v konecnem vysledku (muj posledni post) tak jednoduse, ze staci jen pohyb ruky (oznaceni textu) a zmacknuti prostredniho mysitka a je vse hotovo ;)
-
Netz: pokud vytvořím script, do kterého bude mít právo zápisu jen root a root bude i jeho vlastníkem, nastavím mu možnost být spuštěn přes sudo bez nutnosti zadávání hesla a onen script bude zapisovat právě jen do jednoho místa, řekni mi, co je na tom méně bezpečné, než je tvé řešení? Mimochodem, jednodušší je vytvářet dva soubory, kompilovat je, než vytvořit jediný script a upravit /etc/sudoers?
Zipule: super :)
.. bude to fungovat taky, ale je potreba kvuli tomu modifikovat /etc/sudoers .. navic me reseni umim udelat v konecnem vysledku (muj posledni post) tak jednoduse, ze staci jen pohyb ruky (oznaceni textu) a zmacknuti prostredniho mysitka a je vse hotovo ;)
No to já umím taky :D Ukaž mi něco, co se nedá do scriptu přepsat :D :D :D
Modifikovat /etc/sudoers můžeš jako jakýkoliv jiný běžný soubor - visudo se používá proto, aby ti zabránilo uložit nesmysly a tím se odříznout od systému
-
kkaarreell: není to to samé, co jsem navrhoval? :D
no, ja to pochopil jako umozneni uzivateli pouzivat sudo bez hesla pro jakykoliv prikaz, coz je proste bezpecnostni dira jak vrata. ale asi jsem te pochopil spatne, sorry
-
Kdyz jsem u ty osvety, muze mi nekdo teda vysvetlit, k cemu je to zatroleny setgid a setuid? Proc to nefunguje, jak predpokladam? (viz muj post nekde na zacatku). Dekuju, sluzebnicek.
-
Kdyz jsem u ty osvety, muze mi nekdo teda vysvetlit, k cemu je to zatroleny setgid a setuid? Proc to nefunguje, jak predpokladam? (viz muj post nekde na zacatku). Dekuju, sluzebnicek.
http://en.wikipedia.org/wiki/Setuid .. prtecti si babizno lenosna zejmena sekci '^setuid on executables' a pochopis, jak se chova setuid flag k "binary executable" a jak ke zbytku sveta ;)
-
Hrejiva slova, priteli. Uz chapu. Popravde ale nechapu v cem je rozdil ohledne bezpecnosti binarka vs skript. Pokud jsi magor, je ti fuk, jestli rozhazujes prava tam ci onam. Takze jediny reseni se skriptem, je vyse zmineny sudoers, hm?
-
Hrejiva slova, priteli. Uz chapu. Popravde ale nechapu v cem je rozdil ohledne bezpecnosti binarka vs skript. Pokud jsi magor, je ti fuk, jestli rozhazujes prava tam ci onam. Takze jediny reseni se skriptem, je vyse zmineny sudoers, hm?
babizno? nechapes snad, ze pokud soubor /tmp/xx obsahuje '/bin/sleep 100' a ty ho spustis aka `/tmp/xx`, tak se ti vyvola subshell ?? ::
dpecka 24703 0.0 0.1 4996 2324 pts/11 Ss 13:43 0:00 \_ /bin/bash
dpecka 25547 0.0 0.0 3996 1328 pts/11 S+ 15:03 0:00 \_ /bin/sh /tmp/xx
dpecka 25548 0.0 0.0 2888 596 pts/11 S+ 15:03 0:00 \_ /bin/sleep 100
.. a kvuli tomu nelze prenest setuid flag na dalsi proces jim vyvolany ? .. ps. v prikladu vyse nemam vubec setuid .. jen ti ukazuju, co to dela ..
regards ;)
ps. ja jsem desnej maaaagoooor