vsftp 常用操作
安装
yum install vsftpd
启动服务
service vsftpd start
开启自动启动
chkconfig --level 35 vsftpd on
关闭匿名登陆
vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO
查看用户和对应管理目录
vi /etc/vsftpd/ftpusers // ftp用户黑名单 -- 指定了那些账户不可以访问ftp服务器 vi /etc/vsftpd/vsftpd.user_list // 黑白名单 // 1) userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。 // 2) 当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP // 3) 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入; // 4) 当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous cat passwd passwd ftp 用户名 service/restart
添加普通用户
useradd -d /home/testA test111( 添加test111 并指定该用户主目录 ) passwd test111 ( 为test111设置密码)
更改用户权限设置
usermod -s /sbin/nologin test111 ( 限定用户test111不能telnet ) usermod -s /sbin/bash test111 ( 用户test111 恢复正常?? ) usermod -d /testB test111 ( 将用户test111的主目录设置为testB )
限制用户只能访问自己的目录
vi /etc/vsftpd/vsftpd.conf --- 查看 --- #(default follows) chroot_list_file=/etc/vsftpd/vsftpd.chroot_list // 找到 vsftpd.chroot_list 并编辑 // 将受限制的用户添加进去,每个用户名一行 --- 修改 --- chroot_list_enable=YES // 限制访问自身目录 choroot_list_file=/etc/vsftpd/vsftpd.chroot_list
需要允许用户修改密码
usermod -s /user/bin/passwd test111 // 用户连接telnet后将直接进入改密码界面
改完配置需要重启服务器
/etc/init.d/vsftpd restart
默认vsftpd.conf配置
# 默认的配置文件路径 : /etc/vsftpd/vsftpd.conf # # 默认编译生成设置是相当繁琐. # 这个样板文件简化一点点。这样可以使ftp进程更具有可用性,如果你想要查看所有编译默认配置信息请查看vsftpd.conf.5 # # 提示:这个样板文件并没有列出所有vsftpd的配置选项,你可以阅读vsftpd.conf.5获取所有编译配置选项。 # # 允许匿名访问FTP?(注意--如果你注释这一行代表是允许匿名访问ftp) anonymous_enable=YES # # 取消注释这一行代表允许本地登录,SELinux会为SE bool ftp_home_dir强制检查(类似防火墙,注意连不上要考虑这个原因) local_enable=YES # # 取消注释代表可以任何形式写的命令可用 write_enable=YES # # 对于本地用户默认的umask是077. # 大多数人的umask会设置为022. #umask值为022: #1) 文件的最大权限 rwx rwx rwx (777) #2) umask值为022 --- -w- -w- #3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限 #4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限 local_umask=022 # # 取消注释这行代表允许匿名用户上传文件。 # 如果上面全局写命令被激活,这里唯一的影响就是你需要为ftp用户创建一个目录具有写的权限。 # 当然你需要设置Selinux的allow_anon_write allow_ftpd_full_access 属性 #anon_upload_enable=YES # # 取消注释这行表示匿名用户可以创建新的目录 #anon_mkdir_write_enable=YES # # 激活目录信息:远程用户访问到相对应的目录返回目录信息 dirmessage_enable=YES # # 激活上传/下载的日志 xferlog_enable=YES # # 确保连接20端口可用(ftp-data) connect_from_port_20=YES # # 如果你想,你可以将匿名上传的文件所有者分配给不同的用户,注意! 不要使用root来上传文件 #chown_uploads=YES #chown_username=whoever # # 你可以重写日志文件路径,默认的路径如下 #xferlog_file=/var/log/xferlog # # 如果你想,你可以使用标准的ftp xferlog日志格式, # 注意默认的日志文件的位置为/var/log/xferlog xferlog_std_format=YES # # 你可以改变默认空闲会话连接超时时间(也就是过了个时间,服务器会自动断开 单位 秒) #idle_session_timeout=600 # # 你可以改变默认数据连接超时时间 #data_connection_timeout=120 # # 推荐在你系统上定义一个唯一用户,ftp服务将会把完全隔离没有特权的用户(剥夺政治权利终身) #nopriv_user=ftpsecure # # 开启,服务器将会识别异步ABOR请求。不推荐安全下使用(这个代码意义重大)。不要开启,可能迷惑老的FTP用户。 #async_abor_enable=YES # # 在默认情况下服务器将会假装允许ACSII模式,但事实上会忽略这个请求 # 开启这个选项,服务器将会将会文件进行ASCII编码, # 注意在有些ftp服务器,在ASCII模式通过命令 "SIZE/big/file可能出现DOS攻击。 # vsftpd predicted this attack and has always been safe, reporting the size of the raw file. # 在协议中ASCII编码是可怕的特性。 #ascii_upload_enable=YES #ascii_download_enable=YES # # 自定义登录的之后欢迎语 #ftpd_banner=Welcome to blah FTP service. # # 你可以自定义一个文件,这个文件包含禁用的匿名e-mail 地址,据说,这种方式对于避免特定DOS攻击 #deny_email_enable=YES # (默认的email禁止文件路径) #banned_email_file=/etc/vsftpd/banned_emails # # 你可能定义显式一个本地用户列表去改变的他们登录时的根目录,如果chroot_local_user为YES,那么这个列表用户变成NOT chroot() (取反) # (警告 chroot可能非常危险。如果使用chroot,确保用户不会有获取最高目录的权限。) You may specify an explicit list of local users to chroot() to their home #chroot_local_user=YES chroot_list_enable=YES # (默认文件的位置) #chroot_list_file=/etc/vsftpd/chroot_list # # 可以激活"-R"选项通过 "ls -R". # 在默认情况不可用,这样避免大型站点产生过大I/O流。然而对于一些ftp客户端例如"ncftp"和"mirror"默认具有-R属性。这里需要特殊情况才开启 #ls_recurse_enable=YES # # 当“listen”可用的时候,vsftpd运行独立模式,然后监听IPv4 套接字。这个并不会监听ipv6。 listen=NO # # 这个选项为YES表示监听IPv6套接字。在默认情况下监听在IPv6任意地址将会接受来自IPv6和IPv4客户端。没有必要监听IPv6和IPv4套接字。 # 如果你真有这种需求,(你想要监听特定的地址),你必须要复制两份vsftpd,并且两份配置文件。 # 确保其中一个选项被注释!! listen_ipv6=YES allow_writeable_chroot=YES //具有写权限 pam_service_name=vsftpd //验证文件 userlist_enable=YES //用户列表开启 tcp_wrappers=YES //tcp封装