Jak utworzyć użytkownika SFTP (SSH) z bardzo ograniczonymi uprawnieniami

8

uruchamiam serwer na Ubuntu Server 14.04. Chcę utworzyć użytkownika, który będzie mógł połączyć się przez sftp, pobrać 1 plik i zakończyć połączenie. Użytkownik nie powinien być w stanie zrobić NIC. Przeglądanie plików systemowych lub ustawień ani pozycji wiersza poleceń, nic. Zaloguj się, pobierz plik, gg. Po zaktualizowaniu pliku zaloguj się, pobierz go, gg. Plik jest za każdym razem w tym samym katalogu i ma tę samą nazwę, ale jest aktualizowany.

EDYCJA: Próbuję wdrożyć twoje rozwiązanie, ale znalazłem pewne problemy: W pliku konfiguracyjnym ssh w mojej konfiguracji znajduje się wiersz z „zezwalaj grupom sshdusers”. Dodałem sftp_users. Ale czeka nas kolejny problem. sudo chown root.root / ubuntu / nie jest dla mnie optymalny, ponieważ root nie jest w stanie ssh i zapisać do katalogu pliku, który musi pobrać „ubuntu” (nazwiemy go użytkownik 1. Chcę, aby użytkownik1 mógł pisać katalog i ubuntu tylko do odczytu. Jeśli zmienię sudo chown user1.user1 / ubuntu / i spróbuję sftp z użytkownikiem ubuntu, połączenie nie powiedzie się. Jeśli zostawiam to jako root, mogę się połączyć, ale nie widzę currentdirectory Widzę tylko / i empy na filezilla. Dodałem nawet user1 do sftp_users, ale nadal nie powiodło się.

Wielkie dzięki

BlueStarry
źródło

Odpowiedzi:

11

Zaczynajmy

Stwórz użytkownika ubuntu

sudo useradd ubuntu

Utwórz hasło

sudo passwd ubuntu
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Utwórz dla grupy tylko SFTP

xxx@xxx:~$ sudo groupadd sftp_users 

Dodaj do użytkownika „ubuntu” dla grupy tylko SFTP

xxx@xxx:~$ sudo usermod -G sftp_users ubuntu 

Utwórz katalog sftpdostępu

sudo mkdir /ubuntu

Zmień właściciela, ponieważ uprawnienia do odczytu / zapisu

sudo chown root.root /ubuntu/

Dodaj uprawnienie

sudo chmod 755 /ubuntu/

Edytować /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Skomentuj i dodaj wiersz jak poniżej

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Dodaj na końcu

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /ubuntu
  ForceCommand internal-sftp

Uruchom ponownie sshusługę

sudo service ssh restart

Dzięki tej konfiguracji możesz ssh w folderze ubuntui pobierać pliki. Nie mogę putlubdelete

Próbować.

Edytuj 1

Aby sftp w prawym folderze edytować /etc/passwd. Zmień linię, aby użytkownik ubuntuwyglądał tak

sudo nano /etc/passwd

 ubuntu:x:1001:1001::/ubuntu:

Spowoduje to zmianę folderu domowego użytkownika Ubuntu na folder serwera sftp.

Włączenie rootkonta nie jest dobrym pomysłem.

Możesz ssh do serwera za pomocą user1.

Jeśli dodasz użytkownika user1w sudoer groupbędzie można napisać w folderze /ubuntu/i ustawić odpowiednie uprawnienia

sudo adduser user1 sudo

Utwórz folder, napisz w folderze ubuntu. Po działaniach musisz ustawić uprawnienia dla użytkownika ubuntu. Najprościej jest ustawić agai na 755

sudo chmod 755 -R /ubuntu/

-R - opcja daje użytkownikowi uprawnienia do odczytu wszystkich plików i katalogów ubuntu

2707974
źródło
Wielkie dzięki. Zobacz moją edycję, ponieważ komentarze są bardzo ciasne.
BlueStarry
1
W mojej odpowiedzi masz Edycja 1.
2707974
Przykro mi powiedzieć, że to nie działa. Z filezilla sftp nie mogę pisać w folderze z użytkownikami 1 ani z Ubuntu. zalogowanie się w Ubuntu przez sftp daje mi folder / pomimo ostatnich modyfikacji. próbowałem wiele razy i nie mogę rozwiązać problemu.
BlueStarry
Myślę też, że 755 nie nadaje się do tego celu, ponieważ właściciel jest rootem, a sudoers nie może pisać w folderze z 755
BlueStarry
Jeszcze w 2015 roku, jestem pewien, że Ubuntu używałem adduseri addgroupzamiast useradd, groupadditp sudo chown root.root /ubuntu/jest po prostu błędne. Utworzyłeś katalog za pomocą sudo, więc własność jest już root. Powinien użyć ubuntu.sftp_users. Wreszcie, jeśli początkowo utworzyłeś go jako własność ubuntu, wszystko od „ Włączanie użytkownika root …” jest zbędne.
Auspex