48小时系统班试听入口

Linux运维-红帽认证解析之L3-linux ftp服务器搭建

发布作者:新盟教育 发布日期:2021-12-10 浏览人数:12665人

linux ftp服务器搭建

Linux头.png




ftp服务器安装设置





安装vsftpd








配置文件





 



 






访问服务器进行测试








 用户登录控制






用户无法登陆。




vim /etc/vsftpd/ftpusers


该文件中保存的用户无法进行登录操作。




登录成功之后,默认进入到用户的家目录下:




如果要访问 pub 文件夹,在路径后面加上 pub 就能访问到该文件:



当如下代码的时候:

userlist_enable=YES
userlist_deny=YES


 

/etc/vsftpd/usr_list 文件中保存的用户无法登录ftp。


vim /etc/vsftpd/vsfptd.conf:



 vim /etc/vsftpd/ftpusers:



 vim /etc/vsftd/user_list:




使用root用户登录的时候无法进行登录:



说明当如下代码的时候:

userlist_enable=YESuserlist_deny=YES



在ftpuser 不存在的用户root(可以进行登录) 和 user_list 存在的用户root(不可以登录),最终root不可以登录。


将ftpusers中root用户取消注释,则root 用户无法登录到ftp。


vim /etc/vsftpd/ftpusers:

 



当如下代码的时候:

userlist_enable=YESuserlist_deny=NO



 /etc/vsftpd/usr_list 文件中保存的用户可以登录ftp:




 root 用户还是无法进行登录:



说明当如下代码的时候:

userlist_enable=YESuserlist_deny=NO



 user_list(可以登录) 和 ftpuser(不可以登录) 文件中同时存在的用户是也是无法进行登录操作的。


结论:vsftpd 执行的文件顺序是先执行 user_list 再执行 ftpuser。


下面的在ftpuser中注释掉了root,在vsftpd.conf文件中注释掉userlist_deny、userlist_enable:







说明,用户通过 doc 界面然后登录,就可以获得服务器上任何(该用户所拥有权限的)文件。显然这是不安全的。





禁止用户切换到其他目录




vim /etc/vsftpd/vsftpd.conf:



chroot_local_user=YES 本地用户都不可以切换到主目录以外的目录。


/etc/vsftpd/chroot_list 

若该文件中用户 “能” 切换到主目录以外的目录,默认是没有这个文件的。


vim /etc/vsftpd/chroot_list 

手动创建一个文件,一个用户占一行。


root 用户不能进行目录的切换:



vim /etc/vsftpd/chroot_list:




重启服务:






设置欢迎信息




vim /etc/vsftpd/vsftpd.conf:



重启服务:



或者,指定一个文件,将欢迎信息写到文件里面:



vim /etc/vsftpd/vsftpd_banner_file :



重启服务:






限制文件的传输速度




vim /etc/vsftpd/vsftpd.conf:


#匿名用户最大传输速度,单位 B/s(字节每秒),默认是0,表示不限速 anon_max_rate=0 #本机使用者最大的传输速度 local_max_rate=0




一般来讲是不进行限制的,ftp 服务器目前一般都是在内网进行使用,都是自己人用,没有必要限速。 





实现实体用户访问




前面使用的root用户都是本地用户进行登录的,本地用户是可以使用账号密码登录到linux 操作系统上面的。





1.文本方式进行设置



需要的环境:


  • db4


  • db4-devle


  • db4-java


  • db4-tcl


  • db4-utils


yum install db4:




yum install db4-java:



yum install db4-tcl:




生成数据库。


db_load -T -t hash -f loguser.txt vsftpd_login.db:



设置数据库文件的权限:



vim /etc/pam.d/vsftpd :




#%PAM-1.0#session    optional     pam_keyinit.so    force revoke#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth       required    pam_shells.so#auth       include     password-auth#account    include     password-auth#session    required     pam_loginuid.so#session    include     password-auth#添加的内容,我的系统是 64位的,在lib 里面没有 pam_userdb.so 这个文件auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login



创建用户:




 echo "etony's vsftpd server" > /home/vsftpd/msg:




vim /etc/vsftpd/vsftpd.conf:

#虚拟用户登录系统设置guest_enable=YESguest_username=virtual




重启服务:




登录成功。





2.数据库方式进行设置



安装 mysql 数据库。


由于我的centos6 在之前安装 centreon 的时候,导致数据库无法在这台服务器上运行:



所以现在使用另外的一台linux 服务器上面的mysql 数据库,配置原理是一样的:



新建一个vsftpd 数据库:



 连接到vsftpd数据库执行语句:



-- 创建表create table user(name varchar(10),passwd VARCHAR(20)); -- 添加数据insert into user values('ftp','123456'); -- 查询数据SELECT * from user; -- 给虚拟用户所映射的本地用户相应的数据库操作权限grant select,insert on user to 'virtual'@'%' IDENTIFIED by '123456'



grant select,insert on user to 'virtual'@'%' IDENTIFIED by '123456'


表达的是将user表的select,insert赋给virtual用户,任何地址都可以进行连接,连接密码 123456。



新建pam 文件。


vim /etc/pam.d/vsftpd.u:

#我的是64 位操作系统,所以使用的 lib64auth      required      /lib64/security/pam_mysql.so    user=virtual    passwd=123456   host=192.168.44.161     db=vsftpd       table=useraccount   required      /lib64/security/pam_mysql.so      user=virtual    passwd=123456   host=192.168.44.161     db=vsftpd     table=user      usercolumn=name passwdcolumn=passwd     crypt=2



crypt: 密码验证机制,0:明文,1:DES加密,2:MYSQL的password()函数加密,3:MD5算法,4:sha加密


yum install pam_mysql :


 

查找pam_mysql.so 文件。


find / -name pam_mysql.so:


 

如果 pam_mysql.so 文件,在 /lib64/security/ 文件夹内不存在,则需要将找到的文件,复制到这个文件夹下一份:



ftp用户正常的登录系统。 


ftp可以上传文件,下载部分文件,该用户上传的文件,权限是600,可以下载权限是666的文件。





用户分开管理不同用户有不同的权限




vim /etc/vsftpd/vsftpd.conf:



 创建 /etc/vsftpd/vsftpd_user_conf 文件夹:



添加 zhuji 用户的配置文件(如果对login 用户进行配置,只要添加 login 文件然后添加配置即可)



对 zhuji 虚拟用户进行设置:



#允许写操作write_enable=YES#允许上传anon_upload_enable=YES#允许创建文件夹anon_mkdir_write_enable=YES#默认情况下,虚拟用户只能读取任何用户都可读取的文件和目录(公共资源),取消用户的只读限制anon_world_readable_only=NO#允许删除和重命名文件夹anon_other_write_enable=YES#本地用户创建的文件夹777-027=750,文件666-027=640,权限r:4  w:2   x:1local_umask=027




  • 本地用户 local_umask

  • 虚拟用户 anon_umask


 创建虚拟用户家目录的上传文件的文件夹 ftp:




创建 protect 文件夹: 



chown virtual:  protect/ :



chmod 770 protect/:



本地用户无法上传文件到该ftp文件夹(本地用户无法登录了)


将ftp文件夹的所有者去掉,写权限:



到目前为止,zhuji 用户登录到ftp 服务器之后的权限有:


上传,下载,重命名,创建文件夹。


在ftp文件夹不能上传文件,上传到 protect 文件夹中的文件该用户可以看到。


login 用户的权限:


上传,下载(部分文件,通用的文件可以下载,自己上传的和别人上传的无法下载,例如:可以下载在服务器上创建的文件)


在ftp文件夹不能上传文件,上传到 protect 文件夹中的文件该用户  “不” 可以看到。


最后,如果有朋友需要自学,或者没有很好的学习途径,那么可以看一下这个视频:

http://www.thinkmo.cn/Home/Course/nradio/course_id/299.html

这是一个零基础入门的教程,对于刚开始接触Linux运维的同学还是很友好的,希望对你有帮助。





Linux尾.png