来自: https://www.cnblogs.com/xuzhengzong/p/8645908.html
一、目的,新建一个用户 test2,登录ftp,它只有自己的主目录权限,其他同级和上级目录没有权限
二、ftp安装、配置
yum -y install vsftpd //通过yum来安装vsftpd chkconfig vsftpd on //设置为开机启动 vi /etc/vsftpd/vsftpd.conf #设置配置文件
配置:
anonymous_enable=YES #设置是否允许匿名用户登录
local_enable=YES #设置是否允许本地用户登录
local_root=/home #设置本地用户的根目录
write_enable=YES #是否允许用户有写权限
local_umask=022 #设置本地用户创建文件时的umask值
anon_upload_enable=YES #设置是否允许匿名用户上传文件
anon_other_write_enable=YES #设置匿名用户是否有修改的权限
anon_world_readable_only=YES #当为YES时,文件的其他人必须有读的权限才允许匿名用户下载,单单所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载
download_enbale=YES #是否允许下载
chown_upload=YES #设置匿名用户上传文件后修改文件的所有者
chown_username=ftpuser #与上面选项连用,表示修改后的所有者为ftpuser
ascii_upload_enable=YES #设置是否允许使用ASCII模式上传文件
ascii_download_enable=YES #设置是否允许用ASCII模式下载文件
chroot_local_user=YES #设置是否锁定本地用户在自己的主目录中(将前面#去掉!其他选项可不动)
当我们限定了用户不能跳出其主目录之后,使用该用户登录FTP时往往会遇到这个错误: 500 OOPS: vsftpd: refusing to run with writable root inside chroot () 从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。 要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下面一项: allow_writeable_chroot=YES
chroot_list_enable=YES #设置是否将用户锁定在自己的主目录中
chroot_list_file=/etc/vsftpd/chroot_list #定义哪些用户将会锁定在自己的主目录中 (去/etc/vsftpd/chroot_list文件增加用户名,一行一个)
userlist_enable=YES #当为YES时表示由userlist_file文件中指定的用户才能登录ftp服务器
userlist_file=/etc/vsftpd/user_list #当userlist_enable为YES时才生效
开始添加目标用户,并为其设置主目录
useradd -d 目录 -m 目录 用户 //-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 passwd 用户名 //设置密码 chmod 755 目录 //以root的视角去修改当前目录的权限 chown -R ftp用户名:组名 目录 //组名可不写,修改目录所属者 >>service vsftpd restart //重启ftp
配置完成,设置防火墙 :
vi /etc/sysconfig/iptables-config 修改 IPTABLES_MODULES="ip_conntrack_ftp"
开放21端口:
vi /etc/sysconfig/iptables 添加 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
重启 service vsftpd restart
如果此时还不能上传文件权限,关闭SELinux:
> vi /etc/sysconfig/selinux ,修改为:SELINUX=disabled
最终效果:(用户根本都看不到其他目录,只能看到自己的 -d 目录)