2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Utwórz użytkownika SSH z uprawnieniami dostępu tylko do określonych folderów

Zainstalowałem SSH, ale stwierdziłem, że jeśli użyję mojego oryginalnego konta do zalogowania się do Ubuntu, to ma ono zbyt wiele uprawnień.

Chcę ograniczyć użytkownika, aby miał uprawnienia tylko do określonych folderów w Ubuntu. Jak mogę skonfigurować takiego użytkownika?

Odpowiedzi (2)

53
53
53
2010-06-06 12:49:32 +0000

To jest proste. Wystarczy utworzyć nowego użytkownika z katalogiem domowym ustawionym na ten, do którego ma mieć dostęp (ta komenda musi być uruchomiona pod sudo lub w powłoce roota):

adduser --home /restricted/directory restricted_user

To utworzy użytkownika restricted_user, katalog /restricted/directory, a następnie uprawnienia na tym katalogu zostaną ustawione tak, aby użytkownik mógł do niego pisać. Nie będzie on miał domyślnie możliwości zapisu do żadnego innego katalogu.

Jeśli masz już ten katalog, możesz uruchomić komendę adduser z dołączoną opcją --no-create-home i ustawić uprawnienia ręcznie (również z uprawnieniami roota), np:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Jeśli trzeba uczynić niedostępnymi dla tego użytkownika nawet katalogi zapisywalne przez świat, istnieją dwa warianty.

1) Jeśli chcesz zapewnić użytkownikowi interaktywną sesję powłoki, wtedy rozważ zastosowanie się do tego podręcznika na temat tworzenia chroot jail (w twoim /restricted/directory).

Po tym, dodaj następujące elementy do swojego sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Jeśli potrzebujesz go tylko do kopiowania plików między jego punktem końcowym połączenia a twoim hostem, wszystko jest o wiele łatwiejsze. Dodaj te linie na końcu swojego sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem sftp internal-sftp

Następnie wykomentuj Subsystem sftp /usr/lib/openssh/sftp-server umieszczając na początku znak hash (#).

Po ponownym uruchomieniu serwera SSH (nie zabija on interaktywnych sesji przy ponownym uruchomieniu, więc jest bezpieczny nawet jeśli coś źle skonfigurowałeś; nie zamyka też działającej sesji zanim nie sprawdzisz, że nadal możesz się zalogować), wszystko powinno działać zgodnie z przeznaczeniem.

5
5
5
2017-11-04 02:03:42 +0000

Najprostszym sposobem na stworzenie użytkownika z ograniczeniami, który nie może wędrować poza dany katalog (np. do górnego katalogu itp.), i ma ograniczony/wybrany zestaw poleceń do użycia, jest użycie Restricted Shell. Ref: http://man.he.net/man1/rbash

Najpierw utwórz symlink o nazwie rbash (uruchom jako użytkownik root).

ln -s /bin/bash /bin/rbash

Następnie po prostu utwórz normalnego użytkownika z tym Restricted Shell, i ustaw jego home dir na żądany folder:

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

Nawet bez Restricted Shell, jeśli jawnie nie dodasz tego użytkownika do listy sudoerów, ani żadnych specjalnych grup, to będzie on domyślnie ograniczony.

Z Restricted Shell, następujące czynności nie są dozwolone lub nie są wykonywane:

  • zmiana katalogów za pomocą cd

  • ustawianie lub usuwanie wartości SHELL, PATH, ENV lub BASH

  • określanie nazw poleceń zawierających /

  • określanie nazwy pliku zawierającej / jako argumentu wbudowanego polecenia .

  • określanie nazwy pliku zawierającej ukośnik jako argumentu opcji -p wbudowanego polecenia hash

  • importowanie definicji funkcji ze środowiska powłoki przy starcie

  • parsowanie wartości SHELLOPTS ze środowiska powłoki przy starcie

  • przekierowywanie wyjścia przy użyciu przekierowań >, >|, >, >&, &>, i operatorów przekierowania

  • używanie wbudowanego polecenia exec do zastąpienia powłoki innym poleceniem

  • dodawanie lub usuwanie poleceń wbudowanych z opcjami -f i -d do wbudowanego polecenia enable

  • używanie wbudowanego polecenia enable do włączania wyłączonych poleceń wbudowanych powłoki

  • określanie opcji -p wbudowanego polecenia

  • wyłączanie trybu ograniczonego przy pomocy set +r lub set +o restricted.

Ograniczenia te są wymuszane po każdym pliku startowym

Ponadto/opcjonalnie, aby ograniczyć użytkownika do ograniczonego/wybranego zestawu poleceń do użycia, możesz utworzyć .bash_profile tylko do odczytu dla tego użytkownika, z

PATH=$HOME/bin

i symlinkować dowolne polecenia 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

itd.

HTH