1. 程式人生 > >學習Linux課程第十三天

學習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