Jak zablokować polecenie, powiedzmy mkdir
dla konkretnego użytkownika?
To, co właśnie stworzyłem, stworzyłem funkcję tylko do odczytu i przechowuję w profilu użytkownika ~/.bashrc
/bin/mkdir() {
echo "mkdir command not allow for you"
}
mkdir() {
echo "mkdir command not allow for you"
}
./mkdir() {
echo "mkdir command not allow for you"
}
readonly -f /bin/mkdir
readonly -f mkdir
readonly -f ./mkdir
Test:
rahul@ubuntu:~$ cd /bin/
rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg
mkdir command not allow for you
rahul@ubuntu:/bin$ cd
rahul@ubuntu:~$ mkdir testing
mkdir command not allow for you
rahul@ubuntu:~$ /bin/mkdir testing
mkdir command not allow for you
Więc moje pytanie brzmi: jaki powinien być sposób na osiągnięcie tego? czy jest na to jakieś narzędzie?
Aktualizacja 1 # Ale jeśli użytkownik jest inteligentny, może skopiować plik binarny mkdir, zmienić jego nazwę i użyć go. Jak to osiągnąć?
linux
security
account-restrictions
restricted-shell
Rahul Patil
źródło
źródło
mkdir
i zmienić jego nazwę, a nawet po prostu skopiować i zmienić nazwę istniejącego pliku binarnego. Ponadto istnieje wbudowana powłoka do zastępowania aliasów i funkcji.cp /bin/mkdir mkdir2
a następnie użyć go :(cp -r /usr/local/lib ggg
utworzy katalog o nazwieggg
(zawierający kopię ewentualnej zawartości/usr/local/lib
, którą użytkownik może po prostu usunąć). Możesz użyć,find / -type d -empty
aby znaleźć pusty katalog do skopiowania.Odpowiedzi:
Nie wiem, jak to zrobić za pomocą bash, ale znam inną powłokę, która ogranicza środowisko użytkownika: lshell (ograniczona powłoka) .
Szybki przegląd konfiguracji
Lshell jest konfigurowany za pomocą pliku INI. Domyślnie przechowuje białą listę dozwolonych poleceń, ale można go łatwo skonfigurować, aby uniemożliwić użytkownikowi użycie określonej komendy.
Ta konfiguracja (domyślna konfiguracja
/etc/lshell.conf
) zabrania użytkownikowifoo
używaniamkdir
:Aby skonfigurować konto użytkownika do domyślnego używania lshell, musisz:
Lshell może zrobić więcej:
|
).I więcej.
Aktualizacja 1 # Dodano wynik testu:
źródło
allowed = 'all' - ['mkdir']
, czy nie możesz po prostu wykonaćbash
i znów być nieograniczonym?dd if=$(which bash) of=my_bash && chmod u+x my_bash && ./my_bash
. Myślę, że problemem jest brak restrykcyjnej domyślnej polityki, tzn. W tym scenariuszu domyślnie UDZIELAJ uprawnień, następnie ODMÓW na podstawie listy, kiedy powinno być na odwrót: domyślnie ODMÓW, a następnie GRANT na podstawie zasad .cp
zapisać pliku binarnego do swojej PATH (root
katalogrx
użytkownika dla użytkownika) irbash
uniemożliwia wykonanie./executables
. Czy to odpowiada na twoje pytanie?Sposób, w jaki zwykle wdrażam tego rodzaju ograniczenia, wymaga spełnienia kilku warunków, w przeciwnym razie ograniczenie można łatwo obejść:
wheel
grupy, która jest jedyną osobą upoważnioną do korzystaniasu
(wymuszoną przez PAM).Użytkownik otrzymuje odpowiednio zabezpieczoną
rbash
PATH tylko do odczytu wskazującą na prywatną~/bin
, ten~/bin/
katalog zawiera linki do prostych narzędzi:użytkownik otrzymuje ograniczoną, tylko do odczytu środowiska (myślę o takich rzeczach
LESSSECURE
,TMOUT
,HISTFILE
zmiennych).staff_u
i otrzymuje uprawnienia do wykonywania poleceń tak jak inny użytkownik zgodnie z wymaganiami za pośrednictwemsudo
.użytkownik i możliwe
/home
,/tmp
że/var/tmp
jest on polinstantified poprzez/etc/security/namespace.conf
:Ponadto
/etc/security/namespace.init
sprawia , że wszystkie pliki szkieletowe są tylko dla użytkownika i są własnościąroot
.W ten sposób możesz wybrać, czy
$USER
możesz wykonaćmkdir
we własnym imieniu (poprzez link w prywatnym~/bin
katalogu, udostępniony przez/etc/skel
, jak wyjaśniono powyżej), w imieniu innego użytkownika (przezsudo
), czy w ogóle.źródło
Dodaj grupę obojętne, dodać użytkownika do tej grupy
chown root:somegroup /bin/mkdir
,chmod g-x /bin/mkdir
. Pamiętaj, że zależy to od tego, że użytkownik nie będzie mógł modyfikować swoich grup. IIRC jest to prawdą w GNU / Linux, ale nie w niektórych innych Uniksach.źródło
Najlepsze, co przetestowałem, to użycie Profile.d najlepszy i najbezpieczniejszy sposób
Krok # 1 (Utwórz plik aliasu)
Dodaj poniższe linie:
Zapisz i wyjdź
Krok # 2 (Utwórz moduł ładujący profil)
/etc/profile.d/ ta lokalizacja zawiera pliki do ukończenia bash
Dodaj poniżej wierszy pod plikami te wiersze będą blokować wspomniane polecenia dla poniższych użytkowników
Zapisz i wyjdź
Teraz wyjdź i zaloguj się ponownie
Pozdrawiam, Manur
źródło
/etc/profile.d/
nie jest dobash
ukończenia , jest to miejsce, w którym należy umieścić dostosowania sesji logowania dla użytkowników korzystających z powłok logowania podobnych do POSIX, więc zazwyczaj nie jest to miejsce, w którymbash
idą dostosowania aliasu (które wolą wejść/etc/bash.bashrc
) i powinna mieć składnię powłoki POSIX (tak zazwyczaj.
zamiast tego zsource
i=
zamiast==
).zainstaluj sudoers i spróbuj skonfigurować tam, czyich użytkowników i jakie polecenie.
źródło
sudo
.