yum install vsftpd service vsftpd start chkconfig --add vsftpd #添加到开机启动 useradd -d /home/test test passwd test usermod -s /sbin/nologin test
限制用户只能访问/home/test,不能访问其他路径:
修改 # /etc/vsftpd/vsftpd.conf 如下:
chroot_list_enable=YES //限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行
然后在外面用软件连接FTP,有两错误:
1.ftp根目录是空白的。
2.上传不了文件。
于是上传乱搜索了一通,有文章说是 selinux 的问题。
使用网上说的指令: setenforce 0 ,居然关闭不了 selinux ,又不可能重启服务器的。
在公司的其它服务器执行 sestatus -b ,是关闭的。难道 selinux 是鸡肋功能,导致公司网管将它停了?
查看ftp的Selinux状态:sestatus -b | grep ftp
都是关闭的,会不会是这样影响的。使用命令将它们都开启了
setsebool -P allow_ftpd_use_nfs=on ftpd_connect_db=on ftpd_use_fusefs=on ftpd_use_passive_mode=on httpd_enable_ftp_server=on tftp_anon_write=on tftp_use_cifs=on tftp_use_nfs=on
然后再连接 ftp ,好了。
被动模式时vsftpd配置
pasv_enable=YES pasv_min_port=5010 #随机最小端口 pasv_max_port=5015 #随机最大端口
被动模式时防火墙设置
#-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #如果防火墙原先没有这个,需自己加上 -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A INPUT -p tcp --dport 5010:5015 -j ACCEPT
重启服务命令
systemctl restart vsftpd.service
当使用FTP时,可以通过挂载的方式,将不同目录的网站挂到同一个账户名下(如下图,将 /home/wwwroot/www.xxx.com.cn 挂载到 /home/使用人/www.xxx.com.cn 下,这样使用人在自己的目录就可以看到 /home/wwwroot/www.xxx.com.cn 目录的源码了。)
mount --bind -o rw,uid=www,gid=www,umask=755 /home/wwwroot/www.xxx.com.cn /home/使用人/www.xxx.com.cn (注意:不要挂载错方向,要不原目录文件好像消失了一样)
这样就可以保护,上传的文件属性没有改变。
远程挂载:
mount -t nfs 59.XXX.XXX.212:/data/public_html/www.XXX.cn /home/XXXX/XXXX
有时候远程挂载失败,需使用 umount -l /home/liangyong/XXX 来取消挂载
相关问题:Linux df 命令长时间没有返回
问题1:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
在配置文件增加:allow_writeable_chroot=YES
怎样配置限制用户只在自己的目录下访问:
#vim /etc/vsftpd/vsftpd.conf local_root=/home/ user_config_dir=/etc/vsftpd/userconfig
userconfig 是一个目录,每个用户一个文件。文件里面的内容如下:
local_root=/home/XXX
完整的配置如下:
pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES allow_writeable_chroot=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/vsftpd.chroot_list local_root=/home/ user_config_dir=/etc/vsftpd/userconfig
由于 ftp 我一般都是用到挂载的方式添加目录的,所以权限设置就很重要了。
首先创建账号
useradd -u 1002 -o -g www -d /home/xxxxx xxxxx #因为 linux 下,可以创建相同 uid 的用户,所以 -u 1002 ,再加下 -o ,表示允许重复。这样创建的客户是据有 www:www 的权限的。 #注意创建完的目录,要 chown www:www xxxxx ,设置好权限组,要不 ftp 登录不了。
useradd -u 1002 -o -g www -d /home/kesiming kesiming
------------------------------------------------------------------------------------------------------------
禁止匿名VSFTP用户登录
编辑/etc/vsftpd.conf(或/etc/vsftpd/vsftpd.conf)文件
设置:anonymous_enable=NO
------------------------------------------------------------------------------------------------------------
centos下vsftpd登录正常,但不能显示文件,不能创建文件及文件夹 这是由于selinux的机制
通过命令 [root@localhost www]# getsebool -a|grep ftp 可以看到如下信息
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off//创建文件及文件夹
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off //显示文件夹及文件
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off
用如下命令把以上信息设为ON
[root@localhost www]# setsebool allow_ftpd_full_access=1
之后再用命令 getsebool -a|grep ftp 查看
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on//创建文件及文件夹
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off
这个时候刷新下ftp,就发现目录都显示出来了,再试试添加目录,添加文件操作都可以进行了,问题解决。
------------------------------------------------------------------------------------------------------
配置 FTP 为只读:将 write_enable=YES 注释