[+] rbash - możliwo

Konfiguracja serwerów, usług, itp.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

[+] rbash - możliwość wykonywania skryptów

Post 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?
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post 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ąć.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post 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.
fnmirk
Senior Member
Posty: 8321
Rejestracja: 03 grudnia 2007, 06:37

Post autor: fnmirk »

&quot pisze:Natomiast w środkowym jest faktycznie coś co wygląda na to czego szukam:
To jeszcze sobie sprawdź:

Kod: Zaznacz cały

man rbash
man bash
Aby na przyszłość daleko nie szukać.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post 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

#!/bin/bash +r

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
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

A tak:

Początek skryptu

Kod: Zaznacz cały

#!/bin/rbash +r
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post 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ć.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post 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.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post 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:
&quot 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:

Kod: Zaznacz cały

testowy2a ALL=/root/skrypt.bash
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

Kod: Zaznacz cały

#!/bin/bash
bez parametru -e.
ODPOWIEDZ