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

Název: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: 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
Kód: [Vybrat]
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?
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: starenka 11 Ledna 2009, 21:43:24
Kód: [Vybrat]
sudo chown root skript.sh
sudo chmod 4755 skript.sh
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: Tomáš Pikálek 11 Ledna 2009, 22:16:37
To je jasné, proč to nejde, sudo funguje úplně jinak...
http://wiki.ubuntu.cz/Root%20sudo#Nev.2BAP0-hodysudo
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: Zipule 11 Ledna 2009, 22:52:38
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 :)
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: nettezzaumana 11 Ledna 2009, 23:41:43
http://forum.ubuntu.cz/index.php/topic,10122.msg171603.html#msg171603
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: starenka 11 Ledna 2009, 23:59:52
zipuleee, tohle uloz do souboru:
Kód: [Vybrat]
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).
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: nettezzaumana 12 Ledna 2009, 01:08:03
@starenka :: to nebude imho fungovat jak ma .. set{uid,gid} nefunguje timto zpusobem ..
Citace
# 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 ::

Citace: wlan-on.c
#include <stdio.h>

main() {
FILE *fw;

fw = fopen("/sys/devices/platform/asus-laptop/wlan", "w");
fprintf(fw, "1\n");
fclose(fw);
}

Citace: wlan-off.c
#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
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: starenka 12 Ledna 2009, 03:33:53
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
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: Petr Merlin Vaněček 12 Ledna 2009, 08:08:39
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?
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: kkaarreell 12 Ledna 2009, 09:28:05
A co treba v /etc/sudoers povolit uzivateli bez zadavani hesla (jenom) tento konkretni prikaz?

ntz: Ja vim, sudo, uplne se mi navalilo.
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: nettezzaumana 12 Ledna 2009, 10:12:30
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) ???
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: Petr Merlin Vaněček 12 Ledna 2009, 10:38:05
nettezzaumana: jistě, ale proč to dělat složitě? :)
kkaarreell: není to to samé, co jsem navrhoval? :D
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: nettezzaumana 12 Ledna 2009, 11:01:11
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 ..
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: Zipule 12 Ledna 2009, 11:07:32
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 :)
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: nettezzaumana 12 Ledna 2009, 11:10:01
@Zipule ::

Citace
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 ;)
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: Zipule 12 Ledna 2009, 11:14:42
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ýš...
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: Petr Merlin Vaněček 12 Ledna 2009, 11:29:57
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 :)
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: nettezzaumana 12 Ledna 2009, 11:44:57
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 ;)
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: Petr Merlin Vaněček 12 Ledna 2009, 12:03:46
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
Název: Re: Spouštěč na zapnutí/vypnutí wifi
Přispěvatel: kkaarreell 12 Ledna 2009, 13:23:53
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
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: starenka 12 Ledna 2009, 13:33:18
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.
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: nettezzaumana 12 Ledna 2009, 13:39:09
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 ;)
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: starenka 12 Ledna 2009, 14:56:34
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?
Název: Re: Spouštěč na zapnutí/vypnutí wifi [vyřešeno]
Přispěvatel: nettezzaumana 12 Ledna 2009, 15:18:07
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 ?? ::
Citace
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