Так что я на VPS - установка CentOS Linux. У меня есть vsFTPd на сервере. В настоящее время у меня есть SFTP-доступ к серверу через моего пользователя root, но сейчас я пытаюсь создать нового пользователя с FTP-доступом к определенному каталогу только на сервере. Я сделал следующее:
1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com
То, что я изо всех сил пытаюсь сделать, - это создать пользователя, имеющего ТОЛЬКО доступ к /var/www/mydomain.com
- я заметил, что пользователь правильно входит в нужную папку, однако пользователь может затем перейти «назад» к другим каталогам. Я хочу, чтобы пользователь втыкал в определенную папку и не мог "просмотреть" назад .
Любые идеи?
Я нашел разные статьи о chrooting, но просто не понял, как использовать их в описанных выше шагах.
Ответы:
Это довольно просто.
Вы должны добавить следующую опцию в файл vsftpd.conf
Документация внутри файла конфигурации не требует пояснений:
Это означает, что у пользователя будет только доступ к папке, которую вы сконфигурировали как HOME пользователя. Ниже приведен пример записи passwd пользователя:
Установите домашний каталог пользователя с помощью следующей команды
Примечание. В моем примере этот пользователь также является действительным пользователем для некоторых запланированных задач в Linux. Если у вас нет такой необходимости, измените оболочку пользователя на
/sbin/nologin
вместоbash
.источник
/etc/passwd
файла, которая представляет пользователя с именем upload_ftp, 1001: 1001 - это его идентификатор пользователя и идентификатор группы, / var / www / sites - домашний каталог пользователя (и параметр, из которого vsftpd читает) и / bin / bash, оболочка. Возможно , что не хватает в вашем случае является домашний каталог для пользователя, и она может быть решена с помощью следующей команды:usermod -d /var/www/mydomain.com <username>
. Ура :)После того, как вы изменили свою конфигурацию, чтобы включить
chroot_local_user=YES
Вы можете изменить оболочку пользователя
/usr/sbin/nologin
таким образом, чтобы в случае утечки пароля вы снизили некоторый риск (также установите домашний каталог). Оболочка также должна быть указана в списке,/etc/shells
иначе аутентификация не удастся.https://security.appspot.com/vsftpd/FAQ.txt
источник
Вот шаги, чтобы настроить пользователя и разрешить пользователю доступ только через FTP (т.е. без SSH), а также ограничить доступ к определенному (домашнему каталогу пользователя) на proftpd :
Добавить нового пользователя:
adduser newusername
Установка пароля:
passwd newusername
Измените домашний каталог пользователя по умолчанию на новую папку:
usermod -d /target/directory username
Редактировать
shells
файл:vi /etc/shells
и добавить/dev/null
в концеИзменить
newusername
запись вpasswd
файле:vi /etc/passwd
добавить/./
доnewusername
так, чтобы запись выглядела так:newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null
Детали для шагов 4 и 5 здесь:
Отредактируйте
/etc/proftpd/proftpd.conf
файл и раскомментируйте строкуDefaultRoot ~
источник
Установите разрешения для корневой папки на 711 с вашей учетной записью root.
источник
Запустите эту команду:
источник