学习Linux课程第十三天
Posted doopli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Linux课程第十三天相关的知识,希望对你有一定的参考价值。
复习学习内容
一、文件传输协议
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。
FTP有两种工作模式:
主动模式:FTP服务器主动向客户端发起连接请求
被动模式:FTP服务器等待客户端发起连接请求(默认工作方式)
二、vsftpd服务程序
三种认证方式:匿名开放模式:是一种最不安全的认证模式,任何人都能过无需密码登录到FTP服务器中
本地用户模式:通过Linux系统本地账户密码信息进行认证模式
虚拟用户模式:三种模式中最安全的一种认证,需要为FTP服务单独建立用户数据库,虚拟用来登录的用户口令进行登录
1、匿名开放模式
(1)编辑主配置服务
[[email protected] ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak [[email protected] ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf [[email protected] ~]# cat /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YE
(2)重启服务并加入启动项
systemctl restart vsftpd
systemctl enable vsftpd
(3)登录
ftp IP地址
注:编辑 /var/ftp目录权限
开启SELinux域策略中FTP权限
setsebool -P ftpd_full_access=on
2、本地用户模式
(1)配置主配置文件
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_enable=YES 3 write_enable=YES 4 local_umask=022 5 dirmessage_enable=YES 6 xferlog_enable=YES 7 connect_from_port_20=YES 8 xferlog_std_format=YES 9 listen=NO 10 listen_ipv6=YES 11 pam_service_name=vsftpd 12 userlist_enable=YES 13 tcp_wrappers=YES
(2)重启服务并加入启动项
systemctl restart vsftpd
systemctl enable vsftpd
(3)登录
ftp IP地址
注:删除 etc/vsftpd/user_list和/etc/vsftpd/ftpusers中的root
开启SELinux域中ftp服务 setsebool -P ftpd_full_access=on
3、虚拟用户模式
(1)、创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如,我们分别创建出zhangsan和lisi两个用户,密码均为redhat:
[[email protected] ~]# cd /etc/vsftpd/ [[email protected] vsftpd]# vim vuser.list zhangsan redhat lisi redhat
转换用户数据库文件
[[email protected] vsftpd]# db_load -T -t hash -f vuser.list vuser.db [[email protected] vsftpd]# file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order) [[email protected] vsftpd]# chmod 600 vuser.db [[email protected] vsftpd]# rm -f vuser.list
(2)创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。
[[email protected] ~]# useradd -d /var/ftproot -s /sbin/nologin virtual [[email protected] ~]# ls -ld /var/ftproot/ drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/ [[email protected] ~]# chmod -Rf 755 /var/ftproot/
(3)建立用于支持虚拟用户的PAM文件
新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:
[[email protected] ~]# vim /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
(4)配置主配置文件
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_enable=YES 3 guest_enable=YES 4 guest_username=virtual 5 allow_writeable_chroot=YES 6 write_enable=YES 7 local_umask=022 8 dirmessage_enable=YES 9 xferlog_enable=YES 10 connect_from_port_20=YES 11 xferlog_std_format=YES 12 listen=NO 13 listen_ipv6=YES 14 pam_service_name=vsftpd.vu 15 userlist_enable=YES
16 tcp_wrappers=YES
(5)为虚拟用户设置不同的权限。虽然账户zhangsan和lisi都是用于vsftpd服务程序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许张三上传、创建、修改、查看、删除文件,只允许李四查看文件。这可以通过vsftpd服务程序来实现。只需新建一个目录,在里面分别创建两个以zhangsan和lisi命名的文件,其中在名为zhangsan的文件中写入允许的相关权限(使用匿名用户的参数):
[[email protected] ~]# mkdir /etc/vsftpd/vusers_dir/ [[email protected] ~]# cd /etc/vsftpd/vusers_dir/ [[email protected] vusers_dir]# touch lisi [[email protected] vusers_dir]# vim zhangsan anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
然后再次修改vsftpd主配置文件,通过添加user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。为了让修改后的参数立即生效,需要重启vsftpd服务程序并将该服务添加到开机启动项中:
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=virtual allow_writeable_chroot=YES write_enable=YES local_umask=022 dirmessage_enable=YES
xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd.vu userlist_enable=YES tcp_wrappers=YES user_config_dir=/etc/vsftpd/vusers_dir [[email protected] ~]# systemctl restart vsftpd [[email protected] ~]# systemctl enable vsftpd ln -s ‘/usr/lib/systemd/system/vsftpd.service‘ ‘/etc/systemd/system/multi-user.target.wants/vsftpd.service
(6)登录
ftp IP地址
注:开启SELinux域中ftp服务 setsebool -P ftpd_full_access=on
三、简单文件传输协议
简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。
1、安装TFTP服务 yum install tftp-server tftp
2、编辑主配置文件
[[email protected] ~]# vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
3、重启服务并加入启动项
systemctl restart tftp
systemctl enable tftp
4、登录
tftp IP地址
注:关闭防火墙或把UDP协议的69端口打开
四、Samba文件共享服务
1、创建用于访问共享资源的账户信息
pdbedit -a -u 用户
2、创建用于共享的文件目录
在创建时,不仅要考虑到文件读写权限的问题,而且由于/home目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SELinux安全上下文所带来的限制。在前面对Samba服务程序配置文件中的注释信息进行过滤时,这些过滤的信息中就有关于SELinux安全上下文策略的说明,我们只需按照过滤信息中有关SELinux安全上下文策略中的说明中给的值进行修改即可。修改完毕后执行restorecon命令,让应用于目录的新SELinux安全上下文立即生效。
[[email protected] ~]# mkdir /home/database [[email protected] ~]# chown -Rf doopli:doopli /home/database [[email protected] ~]# semanage fcontext -a -t samba_share_t /home/database [[email protected] ~]# restorecon -Rv /home/database restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0
3、开启SELinux域中Samba服务 setsebool -P Samba_enable_home_dirs on
4、在Samba服务程序的主配置文件中,在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打印机设备。
[[email protected] ~]# vim /etc/samba/smb.conf [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups options = raw [database]
comment = Do not arbitrarily modify the database file path = /home/database public = no writable = yes
5、Samba服务程序的配置工作基本完毕。接下来重启smb服务(Samba服务程序在Linux系统中的名字为smb)并清空iptables防火墙,然后就可以检验配置效果了。
[[email protected] ~]# systemctl restart smb [[email protected] ~]# systemctl enable smb ln -s ‘/usr/lib/systemd/system/smb.service‘ ‘/etc/systemd/system/multi-user.target.wants/smb.service‘ [[email protected] ~]# iptables -F [[email protected] ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
6、Windows系统登录共享文件夹 \\ip地址
7、Linux挂载使用
(1)安装支持共享服务
yum install cifs-utils
(2)挂载共享目录并写入 /etc/fstab
//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0
以上是关于学习Linux课程第十三天的主要内容,如果未能解决你的问题,请参考以下文章