Заблокируйте пользователя в домашнем каталоге, оставив при этом разрешение на создание и удаление файлов / папок.

Я пытаюсь предоставить клиенту доступ 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, но с ограниченной функцией.

Это самое простое и лучшее решение, с которым я столкнулся всего несколько ночей назад.

Другие вопросы по тегам