用VSFTP来架设FTP服务器,VSFTP服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高。
在安装Linux时会有ftp SERVER这个选项 安装的时候选中的话就把ftp功能给安装上了。
安装系统时没有安装也可以以后再进行安装,步骤如下:
主菜单-->系统设置-->添加删除应用-->选中ftp SERVER,点击update;
展开弹出的界面看到需要安装vsftpd-0:1.2.1-3E.1.i386;
单击继续 需要插入安装盘-->OK
[root@mopx001 root]# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 3 (Taroon Update 5)
检查vsftpd rmp包是否已安装
[root@mopx001 root]# rpm -qa|grep vsftpd
vsftpd-1.2.1-3E.1
启动ftp服务
[root@mopx001 root]# /sbin/service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
几个重要的相关文件
[root@mopx001 etc]# ls vsf*
vsftpd.ftpusers vsftpd.user_list
vsftpd:
vsftpd.conf
文件的用处
vsftpd.ftpusers # Users that are not allowed to login via ftp
vsftpd.user_list # vsftpd userlist
vsftpd.conf # vsftp parameters config file
一、添加专门的ftp用户
[root@mopx001 etc]# groupadd ftpadmin
[root@mopx001 etc]# useradd ftpadmin -g ftpadmin
[root@mopx001 etc]# passwd ftpadmin
Changing password for user ftpadmin.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
二、//修改FTP配置文件
[root@mopx001 etc]# vi vsftpd.user_list
// i插入
添加ftpadmin用户
//esc 键 :x 保存退出。
设定使用者不得更改目录。这样做的目的也是基于安全性的考虑。
一般情况下,使用者的预设目录为/home/username。
[root@mopx001 etc]# cd vsftpd
[root@mopx001 vsftpd]# vi vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
取消anonymous登录的功能。在vsftpd.conf文件中找到如下一行,并将其值改为“NO”
anonymous_enable=YES
[root@mopx001 etc]# touch /etc/vsftpd.chroot_list
[root@mopx001 etc]# vi vsftpd.chroot_list
添加ftpadmin
三、重新vsFTPD服务器。
[root@mopx001 vsftpd]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
四、测试
$ ftp 211.157.224.143
Connected to 211.157.224.143.
220 (vsFTPd 1.2.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (211.157.224.143:test): ftpadmin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put result3.txt
local: result3.txt remote: result3.txt
227 Entering Passive Mode (211,157,224,143,225,135)
150 Ok to send data.
226 File receive OK.
172427 bytes sent in 0.023 seconds (7.4e+03 Kbytes/s)
ftp> get temp.ls
local: temp.ls remote: temp.ls
227 Entering Passive Mode (211,157,224,143,31,50)
150 Opening BINARY mode data connection for temp.ls (0 bytes).
226 File send OK.
ftp>
至此配置成功~
至于 ftp 登录时提示“-bash: ftp: command not found”的话,是缺少 ftp 客户端的包,安装上就好了。
五、解决vsftp错误500 OOPS: cannot change directory:/home/****
打开/etc/selinux/config
将selinux=enforcing或permissive改成disabled。
记得要重新启动服务器!
当然还要确定以下问题:
1, 用户是否被 vsftpd 限制登录, 比如用户名在 /etc/ftpusers 中,并被阻止登录了
2, /etc/vsftpd/vsftpd.conf 中是否打开了pam认证的选项 (自己编译安装的时候常因为这个出错) (看vsftpd.conf中是否有pam_service_name=ftp或vsftpd.
到底是哪个要看PAM模块的服务文件/etc/pam.d/vsftpd.conf下是谁.我的是ftp且它的配置如下:
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required /lib/security/pam_unix.so shadow nullok
auth required /lib/security/pam_shells.so
account required /lib/security/pam_unix.so
session required /lib/security/pam_unix.so
如果/etc/ftpusers有的用户将被deny
3, 相关文件夹的权限是否正确.
关于“vsftpd 部分本地用户不能登录,部分可以”的问题,
系统中原来就有的本地帐号都不能登录,我的/etc/vsftpd/vsftpd.conf文件的配置如下:
local_enable=YES
write_enable=YES
chroot_local_user=YES
pam_service_name=vsftpd
/etc/pam.d/vsftpd存在且正常。
六、如果删掉某FTP用户的默认根目录:
[root@localhost home]#mkdir ftpuser
[root@localhost ~]# cat /etc/group //查看共有哪些组
[ftpuser@localhost ~]$ groups ftpuser //查看用户所属组

最后我们可以将文件夹赋给相应用户以及所在组
给ftpadmin组中的ftpuser相应的拥有者权限
[root@localhost home]# chown -R ftpuser.ftpadmin /home/ftpuser/ //ll 命令检测/home/ftpuser/目录的拥有者及组权限
然后指定相应的用户或组的相应权限
[root@localhost home]# chmod -R 700 /home/ftpuser/
因为ftpuser目录是空文件夹,所以需要将shell脚本复制进去否则会出现问题(linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法)
[root@localhost home]# cp -pr /etc/skel/.bash* /home/ftpuser/ //说明此命令没有完全复制完/etc/skel/此目录的文件。
七、在linux中添加ftp用,并设置相应的权限,操作步骤如下:
1、环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/test。
2、建用户:在root用户下:
useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
passwd test //为test设置密码
3、更改用户相应的权限设置:
cat /etc/passwd | grep -v 'nologin' //查看SSH权限的用户
usermod -s /sbin/nologin test //限定test用户不能telnet,只能ftp //关掉SSH
或者#vi /etc/passwd 更改为: lynn:x:500:500::/home/lynn:/sbin/nologin
usermod -s /bin/bash test //用户test恢复正常 //开启SSH
usermod -d /test test //更改test用户的主目录为/test (或者#test:x:500:500:: :/sbin/nologin
passwd -l lynn 这就话的意思是锁定lynn用户,这样该用户就不能登录了。(禁止用户登录
psswd -u lynn 上面是对锁定的用户lynn进行解锁,用户可登录了。
禁止所有用户登录。
touch /etc/nologin 除root以外的用户不能登录了。(本人觉得慎用)
4、限制用户只能访问/home/test,不能访问其他路径
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES //限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行改完配置文件,不要忘记重启vsFTPd服务器
[root@ www.linuxidc.com root]# /etc/init.d/vsftpd restart
5、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面
6、修改FTP端口:
步骤:1.修改/etc/services文件(默认分配的端口号和协议类型)
# vi /etc/services
将21/tcp修改为2021/tcp
ftp 21/tcp 改为 ftp 2121/tcp
ftp 21/udp 改为 ftp 2121/udp
2.修改(新增)FTP配置文件vsftpd.conf
# vi /etc/vsftpd/vsftpd.conf
如果文件中有Listen_port=21,则将21修改为2021,
否则添加一行Listen_port=2021
3.启动TFP服务
# service vsftpd restart
执行/etc/init.d/vsftpd restart 重新启动vsftpd 服务。启动完成后可以使用netstat -tnulp | grep vsftpd
4.检查TFP服务
# service vsftpd status
[root]# service vsftpd stop //-->停ftp服务
[root]# service vsftpd start //-->启ftp服务
[root]# service vsftpd status //-->查看ftp服务状态