客户需求:请在数据仓库接口机134.224.40.67上增加ftp账号:sjjs,权限仅为:/infdata3/TDSS_SAVE目录下文件的查询权限
这个看似简单,但还是让我磨了好久才出来,特此记录下来,供大家分享;
一、检查Linux中vsftpd的安装情况
ps -ef |grep vsftpd
二、将系统中的SELinux关闭,然后重新启动电脑
关闭SELinux的方法:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux
setsebool ftpd_disable_trans 1 ----重启之后失效
所以可以加上-P参数永久生效
setsebool -P ftpd_disable_trans 1 ------此命令是为了避免出现 500 OOPS: cannot change directory的错误
三、建立用户和指定目录
#useradd -d /home/sjjs sjjs
#passwd sjjs
建立用户sjjs,并指定其ftp目录为sjjs
这样sjjs用户就被指定到相应的文件夹下,在后期的设置中也可以改变用户的指定目录,在后面可以看到
四、修改vsftpd.conf配置文件
将anonymous_enable改为NO,阻止匿名上传
将chroot_list_enable和chroot_list_file的注释去掉,阻止用户访问上级目录
userlist_enable=yes #禁止文件/etc/vsftpd/user_list文件中的用户登陆FTP
user_config_dir=/etc/vsftpd/userconf #添加读取用户配置目录(注:本行配置默认没有,需要手动输入)
五、在/etc/vsftpd下建立chroot_list文件
建立完成后,在其中添加用户sjjs,使其只允许访问指定目录。(注意:是完整路径)
六、建立用户配置目录
mkdir -p /etc/vsftpd/userconf
七、建立用户登陆后的目录
mkdir /test
因用户已要求目录指定为/infdata3/TDSS_SAVE,所以不需要创建新的目录
八、添加用户配置文件(用户配置里面,可以根据要求加入相应的参数)
已知有用户sjjs
注:有很多用户时,需要建每个用户相对应的文件
vi /etc/vsftpd/userconf/sjjs
local_root=/infdata3/TDSS_SAVE #用户需求的目录,FTP用户登陆后指定的目录
因为只要求有查询权限,即只读权限,所以该用户配置文件里还需要增加
download_enable=NO #如果设为NO,下载请求将返回“permission denied”
write_enable=NO #这决定是否容许一些FTP命令去更改文件系统
九、启动或是重启ftp服务
#service vsftpd restart
启动成功后,就可以按用户的要求访问FTP服务了
注:配置文件中的解释
anonymous_enable=YES开启匿名用户登录
local_enable=YES开启本地用户登录
write_enable=YES开启写权限以便上传
local_umask=022设置上传后文件为user=rwx, group=, other=
这样,用户上传文件后,是不能删除和修改了。因为用户属于group组。
解决方法是,设置local_umask=002。
最终文件权限是777-文件夹掩码-local_umask掩码
anon_upload_enable=YES开启匿名用户上传权限
统一匿名上传用户上传的文件的属性
chown_uploads=YES
chown_username=ftp
设定chroot配置,禁止特定用户访问上一级目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
userlist_enable=YES这个选项如果是YES,那/etc/vsftpd/user_list中的用户将被禁止访问ftp。如果是NO,则只有user_list里面的用户才能访问ftp
原文地址:http://blog.csdn.net/jiejie5945/article/details/8125449