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

44

Так что я на 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, но просто не понял, как использовать их в описанных выше шагах.

user1231561
источник
digitalocean.com/community/tutorials/… Вы можете выполнить это, чтобы решить свою проблему
Джек,
для тех, кто работает на Ubuntu 18, есть версия digitalocean.com/community/tutorials/…
Dung

Ответы:

39

Это довольно просто.

Вы должны добавить следующую опцию в файл 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 пользователя. Ниже приведен пример записи passwd пользователя:

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

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

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

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

Джефф Шаллер
источник
Привет nwildner! Большое спасибо, что нашли время, чтобы ответить мне на это. Итак, в моем файле vsftpd.conf я добавил следующую строку "chroot_local_user = YES" - тогда, как я понимаю, мне нужно добавить строку, аналогичную той, которую вы показываете для моего пользователя? Должен признать, я не совсем уверен, что написать там с примером, который вы предоставляете. "1001" и т. д. что это? Предположим, мой пользователь называется: «im_a_linux_noob», а каталог для этого пользователя: «/var/www/mydomain.com» - как это будет выглядеть?
user1231561
И смогу ли я сделать это без каких-либо дополнительных шагов из того, что я сделал в своем посте? Делая 1-8, а затем добавляя то, что вы описываете, добьетесь цели?
user1231561
Здравствуй. Приведенный выше пример - это просто строка (измененная, конечно) /etc/passwdфайла, которая представляет пользователя с именем upload_ftp, 1001: 1001 - это его идентификатор пользователя и идентификатор группы, / var / www / sites - домашний каталог пользователя (и параметр, из которого vsftpd читает) и / bin / bash, оболочка. Возможно , что не хватает в вашем случае является домашний каталог для пользователя, и она может быть решена с помощью следующей команды: usermod -d /var/www/mydomain.com <username>. Ура :)
3
Да, большое спасибо. Одна проблема, хотя. Он отлично работает, войдите через обычный FTP, однако, когда я вхожу в систему как SFTP - тогда я могу просмотреть снова - есть идеи?
user1231561
1
Конечно, потому что sftp обрабатывается вашим ssh-сервером, а не вашим ftp-сервером. В «грубом» виде: SFTP = SSH + FTP; FTPS = FTP + SSL. Здесь есть ветка о sftp, и я процитирую ее, чтобы дублировать тему aviod, хорошо? ;) unix.stackexchange.com/a/64541/34720
6

После того, как вы изменили свою конфигурацию, чтобы включить chroot_local_user=YES

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

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

Имитатор
источник
4

Вот шаги, чтобы настроить пользователя и разрешить пользователю доступ только через FTP (т.е. без SSH), а также ограничить доступ к определенному (домашнему каталогу пользователя) на 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/proftpd.confфайл и раскомментируйте строкуDefaultRoot ~

pTeJa
источник
-4

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

Лепинг Зоу
источник
-4

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

useradd -d ftp_user:chown 711 /etc/init.d/
Луникс Про
источник
2
Вы должны рассмотреть возможность расширения своего поста, чтобы иметь, по крайней мере, некоторые полезные объяснения или документацию.
HalosGhost
Это ужасный ответ. По сути, вы предоставляете пользователю ftp полный доступ к каталогу /etc/init.d/ - полное безумие. 711 объяснил - permissions-calculator.org/decode/0711
Tisch