一、创建匿名访问的FTP服务
1、使用场景
学校学生下载老师上传的文件,但是这个匿名账户只有下载权限没有删除写入修改权限。在本文章中我们要实现匿名访问,修改FTP默认目录,创建“download”目录要求只允许匿名下载,创建“upload”允许用户上传下载文件改名和文件删除。
2、实现目标
匿名用户使用ftp服务启动账户的身份访问FTP,如果需要上传需要ftp账户能够在文件夹中有写入权限。
更改FTP配置文件允许匿名用户登录ftp服务。
运行匿名用户上传。
更改匿名用户ftp根目录 /var/ftproot/。
在FTP根目录下创建两个文件夹upload 允许匿名上传
download只允许下载不允许上传
匿名用户上传后的文件权限是644 权限掩码为022。
3、创建匿名FTP根目录
注意:为匿名用户创建新的ftp根目录,注意根目录权限不能更改,否则匿名用户不能登录。切记切记!
创建ftproot文件夹
mkdir /var/ftproot
查看ftproot的权限
得出以下结果
创建允许用户上传的目录
更改upload文件夹的权限,才能允许匿名用户上传
创建只允许用户下载的目录
注意检查download文件夹权限匿名用户能不能上传(正常创建文件夹默认是不允许上传的)
得出以下结果
4、更改配置文件
重命名配置文件
去掉注释行产生一个新的配置文件
根据需求编辑配置文件
[vsftpd.conf]
保存后重启vsftp服务
5、测试
在XP上访问ftp服务器,发现不需要输入账户密码直接登录,看到两个文件夹,打开upload,可以上传文件和文件夹,可以修改上传的文件名,删除上传的文件。但是download文件,不能上传,只能下载。
附:常见的匿名用户相关设置
二、通过修改配置文件来禁用FTP被动模式(跟据需要去设置)
[vsftpd.conf]
注释:
pasv_enable=yes (Default: YES )设置是否允许pasv模式
pasv_promiscuous=no (Default: NO )是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=10240 (Default: 0 (use any port) ) pasv使用的最大端
pasv_min_port=1024 (Default: 0 (use any port) ) pasv使用的最小端
pasv_address (Default: (none - the address is taken from the incoming connected socket) ) pasv模式中服务器传回的ip地址
三、配置启用了SELinux的服务器允许匿名访问FTP(跟据需要去设置)
1、编辑SELinux配置文件改成启用状态
[config]
2、重启Linux
3、设置SELinux打开匿名访问开关
查看SELinux是否允许匿名上传
可以看到是关闭off状态
开启匿名上传功能
四、设置ftp目录文件类型
1、更改upload文件夹对所有人开放读写权限
2、设置FTP根目录文件类型,允许匿名能够打开
3、设置upload文件类型,允许匿名能够读写。
五、配置本地用户登录FTP
1、关闭SELinux(参见前边文章)
2、创建两个用户并设置密码
3、在每个人的主目录下创建一个文件。用来测试登录ftp后默认被定位到自己的主目录。
4、修改配置文件使FTP支持本地用户登录
[vsftpd.conf]
5、保存重启vsFTP服务
6、验证
在Windows客户端中,默认使用匿名登录,右击空白处,点击登录,可以切换访问FTP的用户身份。如果用zhang的账号密码登录,可以看到zhang.txt,能够说明,访问的是自己的主目录。如果用wang的账号密码登录,可以看到访问的是wang的主目录。
六、禁止Linux用户访问FTP
0、前言
vsFTP通过user_list控制哪些Linux用户能够访问ftp,哪些用户拒绝访问ftp。更改vsFTP配置文件,启用Linux用户列表user_list,并设置列表中的用户拒绝访问FTP。注意:如果userlist_deny=NO,则意味着只允许user_list列表中的用户能够访问FTP。
1、修改配置文件
[vsftpd.conf]
2、编辑user_list,在文件后边添加zhang
3、验证
在Windows客户端上登录zhang用户,看看能否登录,如果已经不能登录FTP了,说明配置正确
PS:还有一个文件,ftpusers,该文件中的用户拒绝登录ftp
七、将FTP用户定位到同一个目录
1、创建目录
2、修改文件夹权限
3、修改配置文件
在文件上加一行
4、重启服务
八、配置启用了SELinux的服务器允许本地用户访问FTP(跟据需要去设置)
1、开启SELinux
2、重启服务器
3、重启服务器后进行如下设置
九、配置虚拟用户登录FTP服务
1、检查SELinux和iptables是否关闭
2、查看是否已经安装了数据库
如果这两个有显示证明有
如果没有安装运行以下命令
3、创建用户列表(文件名可以随便给)
[vusers.list]
注释:
db_load应该是linux下创建虚拟账户:
选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。
指定了选项-T,那么一定要追加子选项-t;子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。
-f 参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码
hash就是使用hash码加密
5、建立FTP访问的根目录及虚拟用户对应的系统帐户
建立账户,该账户无需设置密码及登录shell 该账户的宿主目录作为所有虚拟用户登录后的共同FTP根目录。
更改FTP根目录权限。
建立测试文件。
6、建立PAM认证文件(PAM配置文件主要用户为程序提供用户认证控制)
[vsftpd.virtual]
注意:
64位系统要写
32位系统要写
7、修改vsftpd配置文件
[vsftpd.conf]
8、重启服务
补充:关于virtual_use_local_privs参数
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
9、验证
在Windows客户端中使用刚刚创建的账户登录进行增删改查操作
十、为虚拟用户设置不同的访问权限
1、实现目标
为FTP虚拟用户设置不同的FTP访问权限,具体要求如下:
zhangyuyjia /var/zhangyujia 上传下载
zhangyj /var/zhangyj 只能够下载
2、为每个虚拟用户创建独立的目录,改变所有的文件皆有其拥有者
3、为虚拟用户创建独立的配置文件
添加
添加
4、更改vsftp配置文件
[vsftpd.conf]
PS:切记,每次配置完vsftpd.conf后一定要重启服务!!!
领取专属 10元无门槛券
私享最新 技术干货