Как создать пользователя SFTP (SSH) с крайне ограниченными разрешениями

8

я запускаю сервер на Ubuntu Server 14.04. Я хочу создать пользователя, который сможет подключаться через sftp, скачать 1 файл и разорвать соединение. Пользователь не должен быть в состоянии сделать что-либо еще. Просмотр системных файлов или настроек, ни записей командной строки, ничего. Авторизуйтесь, скачайте файл, gg. Когда файл обновится, войдите в систему, загрузите его, gg. Файл находится в одном и том же каталоге каждый раз и каждый раз имеет одно и то же имя, но обновляется.

РЕДАКТИРОВАТЬ: Я пытаюсь реализовать ваше решение, но я обнаружил некоторые проблемы: В конфигурационном файле SSH в моей конфигурации есть строка с «разрешить группы sshdusers». Я добавил sftp_users. Но впереди еще одна проблема. sudo chown root.root / ubuntu / не является оптимальным для меня, потому что root не может выполнить ssh и записать в каталог файл, который должен загрузить «ubuntu» (мы назовем его user1. Я хочу, чтобы user1 мог писать на каталог и Ubuntu только для чтения. Если я изменяю sudo chown user1.user1 / ubuntu /, и я пытаюсь sftp с пользователем Ubuntu, соединение не устанавливается. Если я оставляю его root, как вы, я могу подключиться, но я не вижу currentdirectory, который я вижу только / и использую filezilla. Я даже добавил user1 в sftp_users, но все еще безуспешно.

Большое спасибо

BlueStarry
источник

Ответы:

11

Давайте начнем

Создать пользователя ubuntu

sudo useradd ubuntu

Сделать пароль

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

Создать только для SFTP группы

xxx@xxx:~$ sudo groupadd sftp_users 

Добавить к пользователю "Ubuntu" для группы только SFTP

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

Сделать каталог для sftpдоступа

sudo mkdir /ubuntu

Смена владельца, потому что разрешение на чтение / запись

sudo chown root.root /ubuntu/

Добавить разрешение

sudo chmod 755 /ubuntu/

редактировать /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Закомментируйте и добавьте строку, как показано ниже

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

Добавьте в конце

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

Перезапустить sshсервис

sudo service ssh restart

С этой настройкой вы можете ssh в папку ubuntuи получить файлы. Не может putилиdelete

Пытаться.

Редактировать 1

Для sftp в правой папке отредактируйте /etc/passwd. Измените строку, чтобы пользователь ubuntuвыглядел так

sudo nano /etc/passwd

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

Это изменит домашнюю папку пользователя Ubuntu на вашу папку сервера sftp.

Включение rootаккаунта не очень хорошая идея.

Вы можете SSH к серверу с user1.

При добавлении пользователя user1в sudoer groupвас будет иметь возможность писать в папку /ubuntu/и установить соответствующее разрешение

sudo adduser user1 sudo

Сделайте папку, напишите в папку Ubuntu. После действий вы должны установить разрешение для пользователя ubuntu. Самый простой способ - установить разрешение 755.

sudo chmod 755 -R /ubuntu/

-R - опция даст разрешение на чтение всех файлов и директорий для пользователя ubuntu

2707974
источник
Большое спасибо Вам. Смотрите мое редактирование для получения дополнительной информации, так как комментарии действительно плотные.
BlueStarry
1
У вас есть Правка 1 в моем ответе.
2707974
Мне жаль говорить, что это не работает. С filezilla sftp я не могу писать в папку с user1 или ubuntu. вход в систему с Ubuntu через sftp дает мне папку / несмотря на последние изменения. Я пытался несколько раз, и я не могу понять проблему.
BlueStarry
Я думаю также, что 755 не годится для этой цели, потому что владелец - root, и sudoers не может писать в папку с 755
BlueStarry
Еще в 2015 году, я уверен , что Ubuntu использует adduserи addgroup, вместо того useradd, groupaddи т.д. sudo chown root.root /ubuntu/просто неправильно. Вы создали каталог, используя sudo, поэтому право собственности уже есть root. Это следует использовать ubuntu.sftp_users. Наконец, если вы изначально создали его как принадлежащего ubuntu, все из « Включение пользователя root …» является излишним.
Auspex