Set UID bit

Tematy związane z oprogramowaniem, instalacją, konfiguracją
Scooty
Posty: 47
Rejestracja: 13 maja 2014, 18:03

Set UID bit

Post autor: Scooty »

Hej,

mam pytanie dotyczące bita uprawnień "setUID" oraz setGID


wszędzie na internecie jest wytłumaczone, że służy on do uruchamiania programu na poziomie uprawnień jego właściciela.(zmienia jego efektywnego użytkownika)


więc tworzę 2 pliki:


/tmp/setuid
#!/bin/bash
cat /tmp/test

oraz /tmp/test który zawiera
I CAN READ IT

wynik komendy ls -l /tmp
-rwsrwxrwx 1 root root 26 sty 26 20:51 setuid
-rw-r----- 1 root root 14dsdasasty 26 20:51 test

i gdy wpiszę /tmp/setuid widzę:

scooty@no-restrictions:~$ /tmp/setuid
cat: /tmp/test: Brak dostępu

mógłby mi ktoś wytłumaczyć jak w praktyce działa ten bit uprawnień oraz jak powinienem go poprawnie użyć? Czytałem o tym dużo na internecie, ale dalej nie potrafię go zastosować w praktyce.


z góry dzięki za odpowiedzi! ;)
Awatar użytkownika
f1.micro
Beginner
Posty: 119
Rejestracja: 24 lutego 2009, 11:32
Lokalizacja: Kraków

Post autor: f1.micro »

Działa tak jak tego oczekujesz ... natomiast nie dotyczy to skryptów powłoki (#!...).

Napisz sobie na szybko program w C/C++ który robi sleep(100). W trakcie uruchomienia zerknij na procesy (ps -ef | grep NAZWA_PLIKU). Właścicielem będzie root.
Scooty
Posty: 47
Rejestracja: 13 maja 2014, 18:03

Post autor: Scooty »

dzieki wielkie za pomoc ;) w takim razie jest jakas mozliwosc uruchomienia bashowego skryptu z uprawnieniami jego wlasciciela?
Awatar użytkownika
f1.micro
Beginner
Posty: 119
Rejestracja: 24 lutego 2009, 11:32
Lokalizacja: Kraków

Post autor: f1.micro »

http://stackoverflow.com/questions/6462 ... -c-program
Wyjaśnienie jak to zrobić.

Właściwie prościej możesz sprawdzić, niż wczoraj napisałem:

Kod: Zaznacz cały

cp /bin/sleep ~/spij
sudo chown root. ~/spij
sudo chmod u+s ~/spij
~/spij 60 &
ps -ef | grep spij
id -un
Scooty
Posty: 47
Rejestracja: 13 maja 2014, 18:03

Post autor: Scooty »

cześć ;) sorry że tak długo się nie odzywałem ale nie bardzo miałem czas.

dzięki wielkie za wyjaśnienie, teraz już rozumiem ;) no prawie...

na internecie znalazłem kompilator basha(http://www.datsi.fi.upm.es/~frosal/)

gdy odpalam tą binarkę niestety linux też nie zwraca uwagi na bit setuid.

czy mogę jakimś innym sposobem tego użyć na skryptach powłoki? w czym napisane są programy w /usr/bin i /bin że reagują na setuid?
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Sa plikami nie tekstowymi a binarnymi. Otwórz sobie jakiś plik edytorem i popatrz. Tylko jakiś mały plik
Scooty
Posty: 47
Rejestracja: 13 maja 2014, 18:03

Post autor: Scooty »

Yampress, tak oczywiście zauważyłem to ;)

ale wyżej napisałem że znalazłem kompilator do basha, który tworzy ze zwykłego skryptu powłoki plik binarny, taki jakie znajdują się w /bin.

jednak setuid na niego nie działa, nie wiem dlaczego.
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

a jak nadajesz setuid?

i jakie prawa chmod ma plik wcześniej przed nadaniem setuid ?
Scooty
Posty: 47
Rejestracja: 13 maja 2014, 18:03

Post autor: Scooty »

przed:
-rwx-wx--x 1 root root 10332 sty 29 22:14 sleep.x
po wykonaniu 'sudo chmod a+s sleep.x':
-rws-ws--x 1 root root 10332 sty 29 22:14 sleep.x
i drugi sposób po wykonaniu 'sudo chmod u+s sleep.x':
-rws-wx--x 1 root root 10332 sty 29 22:14 sleep.x
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

A jaki masz /etc/fstab?

Coś dodawałeś
nodev, nosuid, and noexec?
ODPOWIEDZ