Aby utworzyć użytkownika SSH, który ma uprawnienia tylko do dostępu do określonych folderów

47

Zainstalowałem SSH, ale okazało się, że jeśli użyję mojego oryginalnego konta, aby zalogować się do Ubuntu, ma on zbyt wiele uprawnień.

Chcę zmusić użytkownika do posiadania uprawnień tylko do określonych folderów w Ubuntu. Jak mogę skonfigurować takiego użytkownika?

Głupi
źródło

Odpowiedzi:

49

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 sudolub w powłoce root):

adduser --home /restricted/directory restricted_user

Spowoduje to utworzenie użytkownika restricted_user, katalog, /restricted/directorya 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ć adduserpolecenie z --no-create-homedołą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-serverumieszczają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.

Whitequark
źródło
1
Próbowałem, ale wydaje się, że nadal mogę cd .. i przeglądać górny katalog. a kiedy używam vi a.txt w górnym katalogu, pokazuje: naciśnij enter lub polecenie, aby kontynuować, i nie mogę wyjść z vi
Foolish
1
Czy mogę użyć opcji nr 2, jeśli użytkownik powinien mieć dostęp tylko do sshfs?
flickerfly
1
Wszystko działa dobrze, z wyjątkiem tego, że nie mam uprawnień do zapisu. Jak mogę ustawić uprawnienia do zapisu dla tego ograniczonego katalogu. Jeśli użyję chmod 775, użytkownik nie będzie mógł się już zalogować.
My-Name-Is
3
Powinieneś napisać Subsystem sftp internal-sftplinię w swoim drugim przykładzie powyżej Matchbloku. W przeciwnym razie ssh wydrukuje błąd i nie uruchomi się.
Tik0
1
Ostrzeżenie spoilera: nie działa z scp
rowerem
5

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).

ln -s /bin/bash /bin/rbash

Następnie po prostu utwórz normalnego użytkownika za pomocą tej Ograniczonej powłoki i ustaw katalog główny na żądany folder:

useradd -s /bin/rbash -d /home/restricted_folder username

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ą

PATH=$HOME/bin

i dowiązanie symboliczne dowolnymi poleceniami do folderu ~ / bin do tego użytkownika:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

itp.

HTH

xpt
źródło
mogę znaleźć dowolny plik w systemie plików, w tym katalog / root i mogę odczytać te pliki. Zastanawiasz się, jak jeszcze bardziej ograniczyć dostęp do wyświetlania czegokolwiek poza folderem użytkownika lub przechwytywania jakichkolwiek pakietów sieciowych lub czytania / var / log
contentu