Creating user with access only through FTP is vital in daily routine system administration job. The reason why it is good to disable SSH access to users which don't need it is of course better security. Disabling access to ssh shell for users which don't need it prevents you for user to run malicious code usually exploits or some DDoS Fork bombs – like the infamous Linux shell Denial of Service string;
:(){ :|:&};:
Better not try above string on productive server 😉
So back to the topic here how to add Linux FTP only user;
1. Create a regular user with adduser or useradd (depending) on GNU / Linux distribution
adduser is available across most Linux distributions nowadays, however I remember in past there was some distros which had useradd instead. Anyways for most adduser should be ok. As of time of writting both 3 main stream Linux distributions Slackware, Debian and Fedora has adduser.
linux:~# adduser new-user-for-ftp-only
Adding user `new-user-for-ftp-only' …
Adding new group `new-user-for-ftp-only' (1006) …
Adding new user `new-user-for-ftp-only' (1005) with group `new-user-for-ftp-only' …
Creating home directory `/home/new-user-for-ftp-only' …
Copying files from `/etc/skel' …
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for new-user-for-ftp-only
Enter the new value, or press ENTER for the default
Full Name []: New Linux User Only for FTP access
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
linux:~#
2. Change user shell /bin/bash to /bin/false
Again depending on Linux distribution by default /bin/bash /bin/sh or /bin/whatever shell will get added. To make just created user access to SSH disabled. Change shell to /bin/false – a tiny program which just returns a FALSE value and quits immediately.
There are two ways to do so;
a) Edit directly /etc/passwd with vim / joe
linux:~# vim /etc/passwd
Go to end of file and find the record for user, should be smth like:
new-user-for-ftp-only:x:1005:1006:New Linux User Only for FTP access,,,:/home/new-user-for-ftp-only:/bin/bash
Change to;
new-user-for-ftp-only:x:1005:1006:New Linux User Only for FTP access,,,:/home/new-user-for-ftp-only:/bin/false
b) Use chsh cmd
linux:~# chsh new-user-for-ftp-only
Changing the login shell for new-user-for-ftp-only
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]: /bin/false
linux:~# grep -i new-user-for-ftp-only /etc/passwd
new-user-for-ftp-only:x:1005:1006:New Linux User Only for FTP access,,,:/home/new-user-for-ftp-only:/bin/false
3. Testing if ssh access to new user is disabled
linux:~# ssh new-user-for-ftp-only@localhost
new-user-for-ftp-only@localhost's password:
Linux noah 2.6.32-5-amd64 #1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Connection to localhost closed.
More helpful Articles

Tags: adduser, change user, distros, fedora, ftp access, home directory, linux distribution, linux shell, linux user, main stream, most linux distributions, routine system administration, unix password, user information, useradd
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:20.0) Gecko/20100101 Firefox/20.0
You can also set shell for a user while creating it:
View CommentView Commentadduser –shell /bin/false username
or
useradd –shell /bin/false username
Needfull to add – althought /bin/false improves security but is not a solution.
See this article http://www.semicomplete.com/articles/ssh-security/
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Yes you’re right this is even quicker. Thx for tip.
Regards,
View CommentView CommentGeorgi