Egy roppant egyszerű scriptet kéne írnom, ám van benne egy pici csavar, egy másoláshoz kéne root jog:
A lényegi rész
...
wget http://x.hu/valami_program #letöltöm a programot
cp valami_program /usr/local/bin #itt a probléma, mert ide root jog kellene
...
A biztonsági szempontok nem játszanak, desktop gép, néha a juzernek upgrade-elnie kéne a progit, ennyi az egész, csak nem akarom, hogy jelszavakat gépeljen be, használja a su-t, minél egyszerűbb életet akarok neki. Tudja a root jelszót, csak nem akarom, hogy egy parancs kiadásánál többet kelljen csinálnia.
Valami ötlet?
- 6773 megtekintés
Hozzászólások
használj sudo-t.
- A hozzászóláshoz be kell jelentkezni
google: sudo NOPASSWD
Segitsunk nagyon :)
- A hozzászóláshoz be kell jelentkezni
Nem szívleli.
Azt mondja, "menjen a fenébe a user, nem futtathat sudo-val root joggal scriptet"
Vagy valami hasonlót.
- A hozzászóláshoz be kell jelentkezni
Annyira királyi út azért nem vezet ehhez, hogy csak beírod, oszt annyi.
man sudoers
man visudo
man sudo
Ebben a sorrendben.
- A hozzászóláshoz be kell jelentkezni
visudo-val tudod szerkeszteni az /etc/sudoers fájlt.
Azt nézegesd a paraméterezéshez, ott tudod beállítani hogy milyen felhasználó/csoport, milyen parancsokhoz kaphat sudo jogot, akár jelszó nélkül is.
- A hozzászóláshoz be kell jelentkezni
"A biztonsági szempontok nem játszanak, desktop gép, néha a juzernek upgrade-elnie kéne a progit,"
Mi akadályozza meg, hogy cronból a root fennhatósága alatt töltsd le, és rögtön el is helyezd a célállomásán a programot tetszőleges rendszerességgel?
Mert ha tényleg megakadályozza valami, akkor tényleg egy sudo bejegyzés, NOPASSWD-vel.
- A hozzászóláshoz be kell jelentkezni
Lemented a scriptet root ownerrel es teszel ra setuid bitet, onnantol rootkent fut. :)
- A hozzászóláshoz be kell jelentkezni
Milyen UNIX vagy UNIX-szerű oprendszer enged manapság scriptet suid-dal futtatni?? Azt hittem, ez a fícsör már 20+ éve kihalt mindenhol.
- A hozzászóláshoz be kell jelentkezni
Miert is halt volna ki?
- A hozzászóláshoz be kell jelentkezni
Feláldoztatott a szekhól- és terrorizmusellenes küzdelemben (nem mindenhol, de elég helyen ahhoz, hogy nagy tétben ne fogadj vakon a lehetőségre):
# touch /tmp/ownedbyroot
# ls -l /tmp/ownedbyroot
-rw-r--r-- 1 root root 0 2013-06-12 11:12 /tmp/ownedbyroot
# cat /tmp/setuidscript.sh
echo "I am: $USER";
echo "who: "; who
echo "whoami: "; whoami
echo "id: "; id
date >> /tmp/ownedbyroot
# chmod 4755 /tmp/setuidscript.sh
$ /tmp/setuidscript.sh
I am: lx
who:
lx tty7 Jun 12 07:06 (:0)
whoami:
lx
id:
uid=500(lx) ...
/tmp/setuidscript.sh: line 6: /tmp/ownedbyroot: Permission denied
- A hozzászóláshoz be kell jelentkezni
Szerintem így jobban néz ki:
echo "I am: $USER";
echo "who: $(who)"
echo "whoami: $(whoami)"
echo "id: $(id)"
- A hozzászóláshoz be kell jelentkezni
A torkánál ragadtad meg a kérdést, kolléga!
Ne is álljunk meg félúton:
FMT='%-10s: %s\n'
printf "$FMT" "I am" "$USER"
printf "$FMT" "who" "`who`"
printf "$FMT" "whoami" "`whoami`"
printf "$FMT" "id" "`id`"
Katonásan, elvágólag, portolhatóan.
- A hozzászóláshoz be kell jelentkezni
Más jellegű kérdés, ha már így alakult... miért jobb a `` mint a $() parancs futtatására?
ha tippelnem kéne arra gondolnék, hogy előbbi több shellben működik mint utóbbi, de ez nem biztos.... esetleg csak megszokás? (régebben én is így használtam amíg rá nem leltem a $() -re :-) )
- A hozzászóláshoz be kell jelentkezni
Jól tipelsz.
De egy kezemen meg tudnám számolni, 15 év alatt hányszor volt gondom abból, hogy másolt szkript(részlet) $()-re volt hangszerelve `` helyett. Távoli rendszereken a Bourne-féle volt a nekem mint gyalogszintű júzernek alapértelmezett shell - de az is csak a távoli admin benézéséből.
- A hozzászóláshoz be kell jelentkezni
De gustibus... A $() többek szerint olvashatóbb...
- A hozzászóláshoz be kell jelentkezni
Szerintem is.
Ennek ellenére a backticket használom, hogy legalább az általam leggyakrabban használt két nyelvféleség (a perl a másik) között ne beszéljek kétfelé.
- A hozzászóláshoz be kell jelentkezni
Igen, több shellben működik. És ugyan rohadt csekély esélye van a dolognak, de elvben lehet értelmes, valódi funkciót ellátó scriptet írni úgy, hogy mind a Bourne-, mind a C-shell elfogadja. Viszont a C-shell csak a `parancs`formát ismeri, a $(parancs) formát nem fogadja el (mint ahogy egyébként az eredeti/vagy azzal kompatibilis Bourne-shell sem - ez ugyanis a Korn-shellben jelent meg előszőr, onnan szivárgott be a többibe, a POSIX-, illetve a Bash-shellekbe).
- A hozzászóláshoz be kell jelentkezni
A kinézet nem számít, az eredeti változat gyorsabb, mert minden $() egy subshellt forkol.
- A hozzászóláshoz be kell jelentkezni
miért szerinted a `` nem indít subshellt? :-)
szerk: bocs azt hittem a printf-re írtad... még egyszer visszanéztem, s látom hogy te a ; parancs verzióra írtad...
- A hozzászóláshoz be kell jelentkezni
Hol nem halt ki? Konkrétan aki még emlékszik, talán a 4-es perl része volt a suidperl nevű bináris, pont amiatt, hogy ha kell, akkor legalább perl-scripttel lehessen ilyet csinálni. Szóval hol működik még ez a lehetőség?
Szerk: FreeBSD-n nem megy a SUID-script; Linuxon nem megy; HP-UX-on (11iV3) egyik tesztelő szerint nem megy, Solaris10-en másik tesztelő szerint nem megy. Kimaradt az AIX (az akkora őskövület tud időnként lenni, hogy akár el is tudom képzelni - bár inkább azt se), meg a OSX illetve kb. a kihalt állatok (mint IRIX, Tru64)
- A hozzászóláshoz be kell jelentkezni
Az AIX 4.x-es (4.2-4.3) verzióban a ksh nem lájkolta a suid bitet a scripteken. És az nem igazán mostanában volt ugye...
- A hozzászóláshoz be kell jelentkezni
Pontosan ilyesmit hoztam volna ellenpéldának, aztán beugrott, hogy az adott szkript hajdan éppen azért binárisult be, mert.
- A hozzászóláshoz be kell jelentkezni
Mea culpa, en kerek elnezest, valoban nem mukodik.
- A hozzászóláshoz be kell jelentkezni
ezt az õ disztrója sicher nem támogatja
~~~~~~~~
Linux 3.2.0-0.bpo.4-486
Debian 6.0.7
- A hozzászóláshoz be kell jelentkezni
Egyszerűbb a dolog, első körben kell root, utána már nem:
# touch /usr/local/bin/valami && chown juzerke /usr/local/bin/valami
Ez után már a juzerke felül tudja írni a /usr/local/bin/valami fájlt. De lehet úgy is, hogy chgrp _a_juzerke_csoportja_ /usr/local/bin/valami && chmod g+w /usr/local/bin/valami
- A hozzászóláshoz be kell jelentkezni
Köszönöm mindekinek!
A visudo és társai lesz a megoldás, most hirtelen egyelőre egy ALL(ALL) ALL dolgot beírogattam és attól működik, bár egy security expert ettől nyilván fejhangon sírva borulna a karjaira az asztalon, gondolván, hogy ez a marha ennyi erővel 755-öt is adhatna rekurzívan mindenre a gyökérből, de most működnie kell és gyorsan, a cifrázást már megoldom SSH-val távolról is.
Szóval mégegyszer köszi!
- A hozzászóláshoz be kell jelentkezni
Ha biztonságon szeretnél "picit" javítani a jövőben, akkor érdemes lehet két script.
Egyik ami root jogú másolást végzi (sajat_copy_script) és a visudo -ban csak arra adsz sudo jogot.
A másik script meg a jelenlegi scripted. Így a scripted a felhasználó jogán fog futni, de a másolás már rootként futhat anélkül, hogy a /bin/cp -re vagy épp mindenre adnál sudo jogot növelve a biztonsági kockázatokat... (ami persze most nem játszik...)
Így a scriptedben a másolás rész így nézne ki...
sudo -u root /usr/local/sbin/sajat_copy_script
(amúgy a cp-nél az install parancs jobb, mert lehet ownership és mode-okat is adni... )
visudo-ban:
#%users -> users csoport tagjai
#(root) csak a root nevében tudják futtatni máséban nem (persze ha nem feltétlen pont root kell akkor érdemes annak akár system user jogán, akinek van írás joga arra a mappára/meglévő fájlra, amit felül akarsz írni másolni akarod...)
#NOPASSWD: ne kérje a felhasználó jelszavát (pl ha nincs a felhasználóidnak jelszava mert kulccsal lépnek be...)
%users ALL=(root) NOPASSWD: /usr/local/sbin/sajat_copy_script
Ezzel picit fokoztad a biztonságot és relatíve gyorsan megvan...
- A hozzászóláshoz be kell jelentkezni
Ha tényleg nem számítanak a biztonsági szempontok, kockázatok:
chmod a+rwx /usr/local/bin
vagy
chown -R $USER /usr/local/bin
- A hozzászóláshoz be kell jelentkezni
Ilyen allatsagokat ha lehet meg viccbol se.
- A hozzászóláshoz be kell jelentkezni
+1. (Mert még valaki komolyan veszi...)
- A hozzászóláshoz be kell jelentkezni