Возникла потребность создать выделенного пользователя FTP, ограниченного в правах папкой, где сайты лежат.
Манулов находил много, разных, но подходящего под ситуацию — нет. При действиях по чужим манулам, раз за разом натыкался на одни те же грабли — все работает, но файл загрузить нельзя: 550 permission denied.
Что сделал:
Создал шелл nologin-ftp.
# echo '/sbin/nologin-ftp' >> /etc/shells
# ln -s /usr/sbin/nologin /sbin/nologin-ftp
Добавим пользователя для FTP командой adduser. Ключевые параметры это login group и shell, выглядеть должно так:
#adduser Username: ftpuser Full name: Uid (Leave empty for default): Login group [ftpuser]: www Login group is test. Invite test into other groups? []: Login class [default]: Shell (sh csh tcsh zsh nologin-ftp nologin) [sh]: nologin-ftp Home directory [/home/ftpuser]: Use password-based authentication? [yes]: Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password: Enter password again: Lock out the account after creation? [no]: Username : test Password : **** Full Name : Test User Uid : 1001 Class : Groups : www Home : /home/ftpuser Shell : /usr/local/bin/nologin-ftp Locked : no OK? (yes/no): yes adduser: INFO: Successfully added (ftpuser) to the user database. Add another user? (yes/no): no Goodbye! #
Создаем файл /etc/ftpchroot и добавляем в него строку типа: name path.
Где name — имя пользователя, path — путь до директории, доступ к которой разрешен, например:
ftpuser /STORAGE/WWW
Далее сносим homedirectory созданного пользователя:
rm -rf /home/ftpuser
И финал — изменение прав доступа на папку с сайтом:
chmod -R 775 /STORAGE/WWW
How can I create users with only remote ftp access on Linux server? — Unix Linux Stack Exchange
If i understand correct — you can not create user by ftp access. With SSH — yes.