To jest proste. Po prostu utwórz nowego użytkownika z ustawionym katalogiem domowym na ten, do którego chcesz mieć dostęp (to polecenie musi być uruchomione w sudo
lub w powłoce root):
adduser --home /restricted/directory restricted_user
Spowoduje to utworzenie użytkownika restricted_user
, katalog, /restricted/directory
a następnie uprawnienia do katalogu zostaną ustawione, aby użytkownik mógł do niego pisać. Domyślnie nie będzie miał możliwości zapisu w żadnym innym katalogu.
Jeśli masz już katalog, możesz uruchomić adduser
polecenie z --no-create-home
dołączoną opcją i ręcznie ustawić uprawnienia (także z uprawnieniami administratora), takie jak:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Jeśli chcesz, aby nawet światowe katalogi były niedostępne dla tego użytkownika, istnieją dwa warianty.
1) Jeśli chcesz udostępnić użytkownikowi interaktywną sesję powłoki, zastanów się nad przestrzeganiem tej instrukcji tworzenia więzienia chroot (w twoim /restricted/directory
).
Następnie dodaj następujące elementy do sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Jeśli potrzebujesz go tylko do kopiowania plików między punktem końcowym połączenia a hostem, wszystko jest znacznie łatwiejsze. Dodaj te linie na końcu sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Następnie skomentuj, Subsystem sftp /usr/lib/openssh/sftp-server
umieszczając znak skrótu ( #
) na początku.
Po zrestartowaniu serwera SSH (nie zabija on sesji interaktywnych przy ponownym uruchomieniu, więc jest bezpieczny, nawet jeśli źle coś skonfigurowałeś; nie zamyka też uruchomionej sesji przed sprawdzeniem, czy nadal możesz się zalogować), wszystko powinno działać jak zamierzono.
Subsystem sftp internal-sftp
linię w swoim drugim przykładzie powyżejMatch
bloku. W przeciwnym razie ssh wydrukuje błąd i nie uruchomi się.Najprostszym sposobem na utworzenie użytkownika z ograniczonym dostępem, który nie będzie mógł zejść z danego katalogu (np. Do katalogu wyższego itp.) I ma ograniczony / wybrany zestaw poleceń, jest użycie powłoki z ograniczeniami. Ref:
http://man.he.net/man1/rbash
Najpierw utwórz dowiązanie symboliczne o nazwie
rbash
(uruchom jako użytkownik root).Następnie po prostu utwórz normalnego użytkownika za pomocą tej Ograniczonej powłoki i ustaw katalog główny na żądany folder:
Nawet bez Powłoki Ograniczonej, jeśli wyraźnie nie dodasz tego użytkownika do listy sudoer lub jakichkolwiek specjalnych grup, będzie on domyślnie ograniczony.
W przypadku powłoki z ograniczeniami następujące czynności są niedozwolone lub nie są wykonywane:
zmiana katalogów za pomocą cd
ustawianie lub wyłączanie wartości SHELL, PATH, ENV lub BASH_ENV
określanie nazw poleceń zawierających /
określenie nazwy pliku zawierającej / jako argument dla pliku. wbudowane polecenie
Podanie nazwy pliku zawierającej ukośnik jako argumentu opcji -p wbudowanego polecenia mieszającego
import definicji funkcji ze środowiska powłoki podczas uruchamiania
analizowanie wartości SHELLOPTS ze środowiska powłoki podczas uruchamiania
przekierowanie wyjścia za pomocą operatorów przekierowania>,> |, <>,> &, &> i >>
za pomocą wbudowanego polecenia exec w celu zastąpienia powłoki innym poleceniem
dodawanie lub usuwanie wbudowanych poleceń z opcjami -f i -d do wbudowanego polecenia enable
Użycie wbudowanego polecenia enable, aby włączyć wyłączone wbudowane powłoki
określając opcję -p wbudowanego polecenia
wyłączenie trybu ograniczonego z ograniczeniem set + r lub set + o.
Te ograniczenia są egzekwowane po dowolnych plikach startowych
Ponadto / Opcjonalnie, aby ograniczyć użytkownika do ograniczonego / wybranego zestawu komend do użycia, możesz utworzyć profil .bash_profile tylko dla tego użytkownika, za pomocą
i dowiązanie symboliczne dowolnymi poleceniami do folderu ~ / bin do tego użytkownika:
itp.
HTH
źródło