Я хочу предоставить клиенту доступ к моему серверу, но я хочу ограничить этих пользователей их домашними каталогами. Я буду привязывать любые файлы, которые я хочу, чтобы они могли видеть.
Я создал пользователя по имени bob
и добавил его в новую группу под названием sftponly
. У них есть домашний каталог по адресу /home/bob
. Я изменил их оболочку, /bin/false
чтобы остановить SSH логины. Вот их /etc/passwd
линия:
bob:x:1001:1002::/home/bob:/bin/false
Я также изменил, /etc/ssh/sshd_config
чтобы включить следующее:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Когда я пытаюсь войти как они, вот что я вижу
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Если я закомментирую ChrootDirectory
строку, я могу ввести SFTP, но тогда у них будет свободное управление сервером. Я обнаружил, что это ChrootDirectory /home
работает, но все равно дает им доступ к любому домашнему каталогу. Я явно пытался, ChrootDirectory /home/bob
но это тоже не работает.
Что я делаю неправильно? Как я могу ограничить bob
до /home/bob/
?
----РЕДАКТИРОВАТЬ-----
Итак, я просто посмотрел /var/log/auth.log
и увидел это:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
Я не совсем уверен, что там происходит, но это говорит о том, что что-то не так с пользовательским каталогом. Вот ls -h /home
вывод:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%u
можно заменитьChrootDirectory %h
.Ответы:
Вся эта боль происходит из-за нескольких проблем безопасности, как описано здесь . По сути, каталог chroot должен принадлежать
root
и не может быть доступом для групповой записи. Прекрасный. Таким образом , вы , по сути нужно , чтобы превратить ваш CHROOT в накопительной ячейку и в том , что вы можете иметь ваш редактируемый контент.И БАМ, вы можете войти и написать
/writable
.источник
root
. В этом примере/home
также должен принадлежать root.Subsystem sftp /usr/lib/openssh/sftp-server
линию, чтобыSubsystem sftp internal-sftp -f AUTH -l VERBOSE
это сработало.Чтобы изменить каталог SFTP, вы должны
Создайте пользователя и заставьте root быть его владельцем
Измените расположение подсистемы в / etc / ssh / sshd_config:
и создайте пользовательский раздел в конце файла (ssh может умереть, если появится после строки Subsystem):
источник
john
заблокирован для/home/john
каталога. вы предоставили755
разрешения для каталога. поэтому владелец прочитал (4), записал (2) и выполнил (1), а группа прочитала (4) и выполнила (1). Вы также устанавливаете владельца и группу какroot
, так чтоjohn
принадлежит другим. он также прочитал и выполнил (4 + 1 = 5) тогда. так что вы заперли Джона в каталог, где у него нет прав на запись. как это исправить? изменение привилегий757
или даже777
прерывание входа в систему. изменение группы или владельца на джона также нарушает вход в систему./home/userx/sftproot/uploads
и sftpuser в / home / sftpuse. Я установил, что chroot/home/usex/sftproot
должен принадлежать root: root и chmod 755. Он/home/usex/sftproot/uploads
создан sftpuser: sftpuser. Я получаю ту же ошибку, что и первоначальный вопрос выше. Нужно ли, чтобы chroot и все родительские папки принадлежали root: root, чтобы sftp работал?Я провел весь день, пытаясь получить сетевую папку на моей малине. Я хотел заблокировать пользователя, чтобы он не мог перемещаться по всей файловой системе, не иметь доступа по ssh, и хотел иметь доступ на запись к общей сетевой папке.
И вот как я получил это работает:
Сначала я создал пользователя:
Затем отредактировал
/etc/passwd
и убедился, что это имеет/bin/false
для пользователя, чтобы строка была:Я отредактировал,
/etc/ssh/sshd_config
чтобы включить:Изменен владелец домашнего каталога и разрешения:
Итак, после всего этого я смог подключиться,
sshfs
но в режиме только для чтения. Что я должен был сделать, чтобы получить доступную для записи папку:Вот и все, это работало без каких-либо дальнейших изменений. Обратите внимание, что у меня есть только права на запись для пользователя , а не для группы, как многие другие решения онлайн. Я был в состоянии создавать / удалять / редактировать / переименовывать файлы / папки без проблем.
При доступе к использованию
sshfs
с пользователем netdrive из-за конфигурации chroot я вижу только вещи, хранящиеся в/home/netdrive/
каталоге сервера , идеально. Повторяющаяся/home/netdrive/home/netdrive/
структура каталогов - это то, что заставило меня работать с чистым доступным для записи решением ssh для chroot .Теперь я собираюсь объяснить ниже проблемы, которые у меня были:
Вы, вероятно, не должны выполнять следующие пункты :
Посмотрев на вышеупомянутые решения (и многие другие в сети, которые даже использовали acl (списки контроля доступа)), я все еще не смог заставить его работать, потому что я сделал следующее:
Следующее НЕ работает для меня:
Поскольку пользователь netdrive все еще не мог писать в этот
/home/netdrive/writable/
каталог, несмотря на то, что он владел папкой и имел разрешения. Затем я сделал: sudo chmod 775 / home / netdrive / writable / И теперь я мог создать каталог и удалить его, но я не смог отредактировать его, потому что он создавался без прав на запись в группу. Вот из того, что я видел в сети, люди используют,acl
чтобы это исправить. Но меня это не устраивало, так как пришлось его устанавливатьacl
, затем настраивать точки монтирования и т. Д. Также я понятия не имею, зачем мне нужно разрешение группы для записи в папку, принадлежащую тому же пользователю.Кажется, что по какой-то причине создав
/home/netdrive/home/netdrive
и передав право собственности на последнююnetdrive
папку, я смог заставить все работать, не вмешиваясь в групповые разрешения.источник
Я следовал этой статье, но она не работала. Он начал работать после того, как я сделал это изменение (предложено в ответах выше):
Плюс сделал корневой собственный домашний каталог, в котором я имел доступный для записи подкаталог (как описано выше).
Новая и полезная вещь, которую я хочу добавить в этом ответе, заключается в том, что вы можете упростить настройку, просто указав% h в качестве домашнего каталога пользователя:
Я обнаружил это благодаря этой ссылке.
источник