Надеюсь, вы, ребята, сможете помочь и посмотреть, не сделал ли я здесь что-то странное. Я пытаюсь войти в систему с пользователем, которого я настроил, FileZilla показывает мне:
Command: open "///@///" Command: Pass: ********
Status: Connected to ///
Error: Connection closed by server with exitcode 1
Error: Could not connect to server
Итак, я зашел в auth.log и вижу следующее:
Feb 12 11:08:49 sshd[12056]: Accepted password for /// from /// port /// ssh2
Feb 12 11:08:49 sshd[12056]: pam_unix(sshd:session): session opened for user /// by (uid=0)
Feb 12 11:08:50 sshd[12164]: subsystem request for sftp by user ///
Feb 12 11:08:50 sshd[12056]: pam_unix(sshd:session): session closed for user ///
Это запись passwd для рассматриваемого пользователя:
///:x:666:666:///,,,:/chroot:/usr/bin/rssh
Если я попробую запустить rssh сам, я получу Allowed commands: sftp
так что кажется, что он настроен правильно. Что касается папки, которую я установил в качестве домашней папки, она принадлежит группе "sftp", членом которой является пользователь.
Очевидно, я здесь что-то делаю не так, поэтому приветствуются любые советы о том, что я должен попробовать, чтобы приблизиться к решению.
редактировать: Он отлично работает, если я изменю / usr / bin / rssh на / bin / bash, но пользователь по-прежнему может просматривать всю систему, что не идеально. По сути, я хочу, чтобы пользователь заходил прямо в каталог, делал там все, что захотел, вплоть до чтения и записи файлов, но не мог переходить в файловую систему, запускать другие двоичные файлы и так далее.
Создайте группу под названием sftpusers. Только пользователи, принадлежащие к этой группе, будут автоматически ограничены в среде chroot SFTP в этой системе.
# groupadd sftpusers
Допустим, вы хотите создать пользователя-гостя, которому должно быть разрешено только выполнение SFTP в среде chroot, и ему не должно быть разрешено выполнять SSH.
Следующая команда создает guestuser, назначает этого пользователя группе sftpusers, делает / incoming в качестве домашнего каталога, устанавливает / sbin / nologin в качестве оболочки (что не позволит пользователю использовать ssh и получить доступ к оболочке).
# useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
# passwd guestuser
Убедитесь, что пользователь был создан правильно.
# grep guestuser /etc/passwd
guestuser:x:500:500::/incoming:/sbin/nologin
Если вы хотите изменить существующего пользователя и сделать его только пользователем sftp и поместить его в тюрьму chroot sftp, сделайте следующее:
# usermod -g sftpusers -d /incoming -s /sbin/nologin john
Кстати, если вам нужно перенести файлы из Windows в Linux, используйте любой из клиентов sftp, упомянутых в этом списке 7 лучших клиентов sftp.
Вы должны указать sshd использовать внутренний sftp для sftp (вместо sftp-server по умолчанию).
Измените файл / etc / ssh / sshd_config и закомментируйте следующую строку:
#Subsystem sftp /usr/libexec/openssh/sftp-server
Затем добавьте следующую строку в файл / etc / ssh / sshd_config
Subsystem sftp internal-sftp
Должно получиться так:
# grep sftp /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Вы хотите поместить только определенных пользователей (то есть пользователей, принадлежащих к группе sftpusers) в среду chroot jail. Добавьте следующие строки в конец / etc / ssh / sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Выше:
Поскольку мы указали / sftp как ChrootDirectory выше, создайте этот каталог (который является эквивалентом вашего обычного каталога / home).
# mkdir /sftp
Теперь в / sftp создайте отдельные каталоги для пользователей, которые входят в группу sftpusers. то есть пользователи, которым будет разрешено только выполнять sftp и будут находиться в среде chroot.
# mkdir /sftp/guestuser
Итак, / sftp / guestuser эквивалентен / для гостевого пользователя. Когда guestuser sftp входит в систему и выполняет «cd /», он будет видеть только содержимое каталогов в «/ sftp / guestuser» (а не реальный / системы). В этом сила chroot.
Итак, в этом каталоге / sftp / guestuser создайте любой подкаталог, который вы хотите, чтобы пользователь видел. Например, создайте входящий каталог, в котором пользователи могут изменять свои файлы.
# mkdir /sftp/guestuser/incoming
Для правильной работы chroot вам необходимо убедиться, что соответствующие разрешения правильно настроены в каталоге, который вы только что создали.
Установите принадлежность пользователю и сгруппируйте его в группу sftpusers, как показано ниже.
# chown guestuser:sftpusers /sftp/guestuser/incoming
Разрешение для входящего каталога будет выглядеть следующим образом.
# ls -ld /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
Разрешение для каталога / sftp / guestuser будет выглядеть следующим образом
# ls -ld /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
# ls -ld /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
Перезагрузите sshd:
# service sshd restart
Протестируйте среду chroot sftp. Как вы видите ниже, когда gusetuser выполняет sftp и выполняет «cd /», они будут видеть только входящий каталог.
# sftp guestuser@thegeekstuff.com
guestuser@thegeekstuff's password:
sftp> pwd
Remote working directory: /incoming
sftp> cd /
sftp> ls
incoming
Когда guestuser передает какие-либо файлы из sftp в каталог / incoming, они действительно будут находиться в каталоге / sftp / guestuser / incoming в системе.