Как создать пользователя FTP с определенным / dir / доступом только на установке Centos / linux

Поэтому я нахожусь на установке 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

 chroot_local_user=YES 

Документация внутри файла конфигурации не требует пояснений:

 # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). 

Это означает, что пользователь просто получит доступ к папке, настроенной как HOME пользователя. Ниже приведен пример записи пароля пользователя:

 upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash 

Задайте домашний каталог пользователя следующей командой

 usermod -d /var/www/my.domain.example/ exampleuser 

Примечание. В моем примере этот пользователь также является допустимым пользователем для некоторых запланированных задач внутри Linux. Если у вас нет этой необходимости, пожалуйста, измените оболочку пользователя на /sbin/nologin вместо bash .

После того, как вы изменили свой chroot_local_user=YES

Вы можете изменить оболочку пользователя в /usr/sbin/nologin чтобы в случае утечки пароля вы /usr/sbin/nologin некоторый риск (также установите домашний каталог)

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d, –home HOME_DIR Новый каталог входа пользователя. Если задана опция -m, содержимое текущего домашнего каталога будет перемещено в новый домашний каталог, который создается, если он еще не существует.

-s, –shell SHELL Имя новой оболочки входа пользователя. При установке этого поля в пустое состояние система выбирает стандартную оболочку входа.

https://security.appspot.com/vsftpd/FAQ.txt

Ниже приведены шаги по настройке пользователя и разрешению доступа пользователя только через FTP (т. Е. Без SSH), а также ограничение доступа к определенному каталогу (home home) на proftpd :

  1. Добавить пользователя: adduser newusername

  2. Установить пароль: passwd newusername

  3. Измените домашний каталог пользователя по умолчанию на новую папку:

    usermod -d /target/directory username

  4. Редактировать файл shells : vi /etc/shells и добавить /dev/null в конце

  5. Измените запись newusername в файле passwd : vi /etc/passwd чтобы добавить /./ перед newusername чтобы запись выглядела следующим образом:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    Подробности для шагов 4 и 5 здесь:

  6. Измените файл /etc/proftpd/proftptd.conf и раскомментируйте строку DefaultRoot ~

Установите права доступа к корневой папке на 711 с учетной записью root.

Запустите эту команду:

 useradd -d ftp_user:chown 711 /etc/init.d/