公司原来的FTP服务器不能使用了,重装系统时我使用了Centos 6.5 系统,在这个平台下选择FTPSERVER,那VSFTP无疑是不错的选择。
我的需求:
目录结构:
journal 此目录下所有登陆用户均可以访问,也可以建立目录, 上传文件、修改文件名等操作。但只能删除自已建立的文件和目录。别人的能看但不能删除。
pub 此目录下所有用户(包括匿名用户)均可以正常访问,但除FTPADMIN用户外其他用户均不可以修改此目录中的内容。
技术部 此目录为技术部人员使用,所有技术部用户均可以正常上传,下载文件、重命名、删除文件等操作。 其他组用户(包括匿名用户不能打开目录,更不能下载删除文件。)
财务部 此目录和技术部目录要求相同。只能同部门用户访问,其他用户均不能访问。
FTP主目录
FTP目录没有选择默认的/var/ftp 而是新增加了一块磁盘。在这个磁盘上单独做FTP服务器,挂载目录为/opt/FTPHOME
根据此需求,当时分析使用虚拟用户来做,但后来咨询了很多人说虚拟用户是基于一个宿主(系统用户)来实现的,我这样的需求只能用系统用户来实现。
实现过程
一、前项准备工作
1.1 关闭SELINUX
在/etc/selinux/config中将“SELINUX”项关闭,SELINUX=disabled。重启服务器
1.2 开启所需要的端口
为了方便,请直接关闭iptables
chkconfig --level 345 iptables off
重启服务器。
若服务器是在防火墙后面,请打开防火墙的20,21端口。 我的服务器前面有一台飞塔防火墙,通知网管开启了相应的端口。
1.3 安装vsftpd
yum install vsftpd
至此,准备工作就绪,开始配置相应的服务。
二、建立相应的用户和用户组。
使用以下命令建立用户,最后使用passwd 逐个建立密码。
#useradd tecadmin –r –m –d /opt/FTPHOME –s /sbin/nologin
#useradd tecuser –r –m –g tecadmin –d /opt/FTPHOME–s /sbin/nologin
#useradd caiwuadmin –r –m –d /opt/FTPHOME –s /sbin/nologin
#useradd caiwuuser –r –m –g caiwuadmin –d /opt/FTPHOME –s /sbin/nologin
#useradd ftpadmin –r –m –g root –d / /opt/FTPHOME
cd /opt/FTPHOME
mkdir journal pub 财务部 技术部
四、修改目录属性
chmod -R 1770 journal pub 财务部 技术部
chmod -R tecadmin:tecadmin 技术部 # 将技术部目录赋予技术部用户组,其他组不能访问。 chmod -R caiwuadmin:caiwuadmin 财务部 #将财务部目录赋予财务部用户组,其他组不能访问。 chmod -R ftpadmin:root pub #将pub目录赋予pub用户。 chmod -R 777 journal 赋予journal目录所有用户组可执行可访问权限。 chmod +t journal 赋予journal目录t权限,这样可以实现任何用户只能修改删除自已用户名创建的目录。不能删除、修改别人创建的目录,和文件。但可以下载。 五、修改vsftpd.conf 配置文件。
5.1 先备份配置文件。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 5.2 修改配置文件。
#vi vsftpd.conf
write_enable=YES #允许登入者有写权限
anonymous_enable=NO #禁止匿名用户访问
local_enable=YES #允许本地用户访问
local_umask=022 #本地用户新增档案时的umask值
file_open_mode=0755 #本地用户上传档案后的档案权限
ftpd_banner=Welcome to BOB's FTP server. #定义欢迎话语的字符串
xferlog_enable=YES #启用上传/下载日志记录
xferlog_file=/var/log/vsftpd.log #日志文件所在的路径及名称
xferlog_std_format=YES #将日志文件写成xferlog的标准格式
ascii_upload_enable=YES #启用ASCII 模式上传数据
ascii_download_enable=YES #启用ASCII 模式下载数据
chroot_list_enable=YES #在chroot_list中列出的用户不允许切换到家目录的上级目录
chroot_local_user=NO #
chroot_list_file=/etc/vsftpd/chroot_list #
userlist_enable=YES #在user_list中列出的用户不能访问FTP服务器,未列出的可以访问
userlist_deny=YES #
userlist_file=/etc/vsftpd/user_list #
tcp_wrappers=NO #不使用tcp wrapper来控制主机访问
setproctitle_enable=YES #每个与FTP服务器的连接,都以不同的进程表现出来
listen=YES #FTP服务器以standalone模式运行
port_enable=YES #FTP服务器启用PORT模式
pasv_enable=NO #禁用FTP服务器的PASV模式
listen_port=21 #FTP服务器监听21端口
connect_from_port_20=YES #指定FTP服务器使用20端口进行数据传输
ftp_data_port=20 #FTP服务器数据传输端口为20
pam_service_name=vsftpd #使用PAM模块控制,vsftpd文件在/etc/pam.d目录下
idle_session_timeout=600 #600秒钟不对FTP服务器进行任何操作,则断开该FTP连接
data_connection_timeout=120 #建立FTP数据连接的超时时间为120秒
max_clients=0 #不限制用户的连接数量
max_per_ip=3 #每个IP只能与FTP服务器同时建立3个连接
local_max_rate=512000 #本地用户使用的最大传输速度
六、编辑 chroot_list 文件 这个文件的作用是将用户锁定在本地目录,防止用户乱跑。 文件格式为一个用户名一行。
#vi /etc/vsftpd/user_list 七、重启ftp 服务,使用客户端测试。
碰到的问题:
1、使用用户名密码登陆后一片空白, 什么也没有。
解决方法:修改匿名用户的空目录为/opt/FTPHOME ,修改后重启FTP服务
usermod -D /opt/FTPHOME ftp 2、使用用户名密码登陆后一直提示“500 OOPS: cannot change directory 500 OOPS: 500 OOPS: child died”
解决方法: 查看opt/ftphome目录权限为下面
drw-r--r--. 6 root root 4096 12月 24 12:14 FTPHOME 由于此目录权限为644 其他用户无权限进入此目录执行,所以一直报错,修改用户目录权限后即可。chmod 655 /opt/FTPHOME
查看的技术资料
(责任编辑:IT) |