Заблокируйте пользователя в домашнем каталоге, оставив при этом разрешение на создание и удаление файлов / папок.
Я пытаюсь предоставить клиенту доступ SFTP к корневому каталогу своего сайта на моем сервере (Ubuntu 10.10), чтобы они могли сами управлять своим сайтом.
В то время как я был успешен в заключении пользователя в каталог и предоставлении ему доступа SFTP; им разрешено создавать и удалять новые файлы только в подкаталогах (каталогах, которыми они владеют). Это означает, что я должен предоставить им доступ к родительскому каталогу в корне их сайта.
До сих пор я следовал инструкциям в этом руководстве следующим образом:
addgroup filetransfer
usermod -G filetransfer username
chown root:root /home/username
chmod 755 /home/username
cd /home/username
mkdir docs public_html
chown username:username *
Как я могу ограничить их корневым каталогом своего сайта (например, public_html), при этом предоставляя им возможность создавать и удалять файлы. Во всех прочитанных мною руководствах предполагается, что корень должен быть владельцем домашнего каталога пользователя, что не позволяет ему иметь доступ для записи в этом каталоге.
Я относительно новичок в управлении своим собственным сервером, поэтому любые советы будут очень благодарны.
Большое спасибо.
2 ответа
Вы должны рассказать, что вы сделали именно для этого. Если вы еще этого не сделали, вам, вероятно, следует попробовать использовать chroot (советы здесь: http://www.unixwiz.net/techtips/chroot-practices.html).
Для решения вашей конкретной проблемы вам необходимо предоставить пользователям разрешение на запись в их корневую папку. Либо установите их в качестве владельцев и убедитесь, что разрешение на запись установлено. Я не уверен, почему это была бы такая плохая идея:
# chown someuser /user/root/folder
# chmod u+w /user/root/folder
Или, если вы хотите сохранить root как владелец, вы можете сделать это с группой:
# addgroup somegroup
# adduser someuser somegroup
# chgrp somegroup /user/root/folder
# chmod g+w /user/root/folder
РЕДАКТИРОВАТЬ
Как отмечается в приведенной ссылке в комментариях, похоже, что root должен быть владельцем соответствующего каталога, чтобы chroot работал правильно. Но, похоже, ничто не мешает изменить группу. Таким образом, следуя названиям этого урока, это может помочь:
# chown root:filetransfer /home/username
# chmod 775 /home/username
Обратите внимание, что разрешения теперь равны 775, а не 755, это дает разрешение на запись всем пользователям, принадлежащим к группе передачи файлов.
РЕДАКТИРОВАТЬ 2
Нет, этого недостаточно. Может быть, это просто неосуществимо.
Для системы Ubuntu -
Я использовал эту команду с этими аргументами:
sudo useradd -d /home/node -m node
А затем проверил его с этим именем пользователя и sftp в ssh - я успешно заключил это имя в тюрьму, и этому имени пользователя был присвоен скелет bin/shell, но с ограниченной функцией.
Это самое простое и лучшее решение, с которым я столкнулся всего несколько ночей назад.