Сегодня возникла надобность добавить нового ftp-пользователя используя шелл. На самом деле задача эта достаточно тривиальная, но все-таки поделюсь с теми, кто возможно не знает как это сделать.
Для начала стоит создать нового пользователя, испольуя стандартные средства useradd:
useradd -d /home/ftp/myuser/ -s /dev/null myuser > /dev/null 2>&1
Домашней принята директория /home/ftp/myuser (в общем-то это стандартно), можно естественно использовать любую другую директорию, хотя лучше все же делать не извращаясь.
В большинстве случаев, доступ к шеллу должен быть закрытым для пользователя, поэтому мы использовали флаг “-s /dev/null”, т.е. как shell у пользователя будет использована псевдо-оболочка /dev/null. Стоит заметить, что у меня (на CentOS) подключиться через фтп удалось только при использовании /bin/false, /dev/null же перекрывал доступ как к шеллу, так и к фтп. В чем дело разбираться не захотел, возможно именно так это и должно работать на этой дистре (хотя в RedHat изначально добавленна псевдо-оболочка /dev/null в /etc/shells вроде как именно для этих целей).
После создания пользователя, задаем пароль:
Далее, следует убедиться что /dev/null (в случае с CentOS /bin/false) присутсвуют в /etc/shells. Если наша псевдо-оболочка не найдена, добавляем ее.
И последнее, для удобства пользователя, заходящего через фтп, стоит по-определению открывать именно директорию его аккаунта. Как это сделать? ЛеХко! Для этого редактируем /etc/passwd:
вместо
myuser:x:10010:10010::/home/ftp/myuser/:/bin/false
вставляем
myuser:x:10010:10010::/home/ftp/./myuser/:/bin/false
таким образом при входе в систему, пользователь попадет в каталог myuser.
Вот, в общем-то, и все! Удачного начала рабочей недели.
linux shell