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

4863
Mindthetic

Я пытаюсь предоставить клиенту доступ 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), при этом предоставляя им возможность создавать и удалять файлы. Все учебники, которые я прочитал, предполагают, что корень должен быть владельцем домашнего каталога пользователя, что не позволяет ему иметь доступ для записи в этом каталоге.

Я относительно новичок в управлении своим собственным сервером, поэтому любые советы будут очень благодарны.

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

6

2 ответа на вопрос

1
Laurent Couvidou

Вы должны сказать, что вы сделали именно для этого. Если вы еще этого не сделали, вам, вероятно, следует попробовать использовать 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

Нет, этого недостаточно. Может быть, это просто неосуществимо.

Спасибо за совет. В строке 3 вашего второго примера вы меняете группу, связанную с папкой? И в строке 4, я полагаю, это дает группе право записи в папку? Я добавил ссылку на один из методов, которые пытался заключить в тюрьму пользователя, и дал им доступ по SFTP, чтобы дать вам базовую линию того, что я сделал до сих пор. Mindthetic 12 лет назад 0
Оба ваших предположения верны. Согласно комментарию в вашей ссылке (Ryan's), каталог должен принадлежать учетной записи root, но изменение группы может быть в порядке. Так что групповой трюк может сработать, я отредактировал свой ответ выше. Laurent Couvidou 12 лет назад 1
Привет спасибо. Потратив несколько часов на то, чтобы прочитать еще несколько статей, касающихся chroot, и попробовать свои предложения, кажется, что, когда вы предоставляете группе доступ к каталогу chroot, SFTP запрещает доступ пользователя к каталогу. Я получаю сообщение об ошибке в одном клиенте FTP: «Не удалось открыть канал (закрытие всех каналов)». В какой-то момент я подумал, что у меня это работает, но я не уверен, что с моим FTP-клиентом что-то пошло не так. Mindthetic 12 лет назад 0
Читая еще немного, кажется, что sshd довольно строго определяет, кому он разрешает доступ. Если он обнаруживает разрешения от любого другого пользователя, он запрещает доступ. https://wiki.archlinux.org/index.php/SFTP-chroot Mindthetic 12 лет назад 0
Итак, вам нужен кто-то, кто знает об этом больше, чем я. Может быть, это просто невозможно с chroot и sftp? У меня есть доступ SFTP к экземпляру простого хостинга Gandi => нет возможности создавать файлы или каталоги в корневом каталоге. Laurent Couvidou 12 лет назад 0
Действительно ценю ваше время, хотя. Я знаю намного больше о chown и chgrp :) Спасибо за вашу помощь. Mindthetic 12 лет назад 0
0
Faron

For Ubuntu system --

I used this command with these arguments:

sudo useradd -d /home/node -m node 

And then tested it with this username and sftp into ssh - I was successfully jailing this username, and a bin/shell skelton is given to that username but with limited function.

This is the most simple and best solution that I came across just few nights ago.

Похожие вопросы