Strona 1 z 2
[+] rbash - możliwość wykonywania skryptów
: 31 stycznia 2011, 09:57
autor: sethiel
Ustawiłem powłokę rbash dla testowego użytkownika.
Dałem mu dostęp do ls, more i nano.
Chciałbym dać też temu użytkownikowi możliwość wykonania jednego skryptu.
Skrypt jest w innej powłoce (bash) i ma prawa 7771.
Oczywiście w skrypcie jest cała masa poleceń z powłoki bash innych niż te z rbash.
Jak można umożliwić wykonanie takiego skryptu?
: 01 lutego 2011, 15:11
autor: fnmirk
: 02 lutego 2011, 09:07
autor: sethiel
Z pierwszego i trzeciego linka korzystałem przy ustawianiu rbash-a. Natomiast w środkowym jest faktycznie coś co wygląda na to czego szukam:
turning off restricted mode with set +r or set +o restricted.
These restrictions are enforced after any startup files are read.
When a command that is found to be a shell script is executed, rbash
turns off any restrictions in the shell spawned to execute the script.
Tylko pomysłu nie mam jak to zastosować. Do każdej komendy w skrypcie dodać +r (?), szkoda że przykładu tam nie ma.
A polecenia w skrypcie są takie do których nie chcę by użytkownik miał po prostu dostęp.
Jak je dodam do rbasha to tak jakbym dał użytkownikowi prawa roota co właśnie chcę uniknąć.
: 02 lutego 2011, 10:14
autor: Bastian
Nie bardzo kumam o co Ci chodzi.
Chciałbym dać też temu użytkownikowi możliwość wykonania jednego skryptu.
Dodasz +r to tego skryptu to uzytkownik bedzie mógł go wykonywać o ile ma prawa do wykonywania tego pliku jak w zwykłym bashu. Jeśli w skrypcie masz polecenia, których nie chcesz aby ten uzytkownik mógł wykonywać to nie możesz mu pozwolić wykonać skryptu w ogóle, albo przerobić skrypt na taki, który będzie bezpieczny do wykonania. Jeśli chcesz aby będąc w rbash uzytkownik mógł wykonać skrypt z bez opcji +r to musisz w rbash udowstępnić mu te polecenia.
: 02 lutego 2011, 14:51
autor: fnmirk
" pisze:Natomiast w środkowym jest faktycznie coś co wygląda na to czego szukam:
To jeszcze sobie sprawdź:
Aby na przyszłość daleko nie szukać.
: 02 lutego 2011, 16:20
autor: sethiel
Przeczytałem to, ale mimo wszystko nie rozumiem. Moje czytanie ze zrozumieniem tego tekstu jest jak widać ograniczone.
oto liczne próby wykorzystania "+r":
Kod: Zaznacz cały
-rbash-3.2$ ./usr/bin/skrypt.bash +r
-rbash: ./usr/bin/skrypt.bash: restricted: cannot specify `/' in command names
-rbash-3.2$ +r ./usr/bin/skrypt.bash
-rbash: +r: command not found
Kod: Zaznacz cały
[root@linux root]# ln -s /root/skrypt.bash +r /home/testowy2a/usr/bin/test.bash
ln: cel `/home/testowy2a/usr/bin/test.bash' nie jest katalogiem
[root@linux root]# ln -s /root/skrypt.bash /home/testowy2a/usr/bin/test.bash +r
ln: cel `+r' nie jest katalogiem
edycja passwd (użytkownik testowy2a nie może się zalogować):
Kod: Zaznacz cały
testowy2a:x:1212:100::/home/testowy2a:/bin/rbash +r
edycja skryptu:
Kod: Zaznacz cały
-rbash-3.2$ ./usr/bin/skrypt.bash
-rbash: ./usr/bin/skrypt.bash: restricted: cannot specify `/' in command names
Dodam, że użytkownik ma ten skrypt dodany poprzez:
Kod: Zaznacz cały
[root@linux root]# ln -s /root/skrypt.bash /home/testowy2a/usr/bin/skrypt.bash
: 03 lutego 2011, 10:30
autor: Bastian
: 03 lutego 2011, 13:26
autor: sethiel
Coś się wydarzyło, ale jak się okazuje jednak w rbash pewnie się nie uda tego zrobić.
Jak napisałem, w skrypcie tym są polecenia, które nie mogą być normalnie przydzielone użytkownikowi jak choćby ,,passwd'', czy ,,useradd'' z różnymi parametrami.
Tak więc kolejny problem to
Kod: Zaznacz cały
rbash-3.2$ skrypt.bash
/home/testowy2a/usr/bin/skrypt.bash: line 24: cat: command not found
I tak będzie dla wszystkich programów użytych w skrypcie, które mogą być użyte tylko w tym skrypcie, a nie normalnie przez użytkownika, czyli użytkownik powinien całkiem słusznie dostać odpowiedź jak sam używa poleceń:
Kod: Zaznacz cały
rbash-3.2$ cat
rbash: cat: command not found
rbash-3.2$ cd
rbash: cd: restricted
A jak używa skryptu, do którego ma dostęp to powinno się to udać wykonać.
: 03 lutego 2011, 14:25
autor: Bastian
Tak, ale jeśli Cię dobrze rozumiem, to chyba normalne, bo w zwykłym bashu ten użytkownik też nie miałby dostępu do niektórych poleceń systemowych. Musisz skonfigurować sudo dla tego użytkownika.
: 03 lutego 2011, 14:31
autor: sethiel
A to nie jest tak, że:
- -na skrypcie ustawiony bit UID oraz GUID,
- -właściciel i grupa pliku skryptu to root,
- -użytkownik testowy2a ma prawa uruchomienia tego pliku (czyli 7776).
To taki użytkownik powinien móc wykonać polecenia, które są w skrypcie?
Po głębokich przemyśleniach:
" pisze:Tak, ale jeśli Cię dobrze rozumiem, to chyba normalne, bo w zwykłym bashu ten użytkownik też nie miałby dostępu do niektórych poleceń systemowych. Musisz skonfigurować sudo dla tego użytkownika.
Zgadza się, zgadza się, zgadza się!
Hura. Działa

.
Dziękuję.
Dopisanie linijki w /etc/sudoers:
dodanie dowiązania do sudo:
Kod: Zaznacz cały
ln -s /usr/bin/sudo /home/testowy2a/usr/bin/sudo
zaś plik skrypt.bash może mieć standardowy początek
bez parametru -e.