配置文檔的訪問權限
1.1 問題
本例要求將文件 /etc/fstab 拷貝為 /var/tmp/fstab,並調整文件 /var/tmp/fstab的權限,滿足以下要求:
- 此文件的擁有者是 root
- 此文件屬於 root 組
- 此文件對任何人都不可執行
- 用戶 natasha 能夠對此文件執行讀和寫操作
- 用戶 harry 對此文件既不能讀,也不能寫
- 所有其他用戶(當前的和將來的)能夠對此文件進行讀操作
1.2 方案
針對個別用戶的權限策略,使用setfacl命令進行設置。
1.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:復制文件
1)使用cp命令進行復制
- [root@server0 ~]# cp /etc/fstab /var/tmp/fstab
2)確認復制后的權限
- [root@server0 ~]# ls -l /var/tmp/fstab
- -rw-r--r--. 1 root root 313 12月 23 23:01 /var/tmp/fstab
說明已經滿足案例要求的前三條和最后一條。
步驟二:調整權限
1)增加額外的訪問控制策略
- [root@server0 ~]# setfacl -m u:natasha:rw /var/tmp/fstab
- [root@server0 ~]# setfacl -m u:sarah:- /var/tmp/fstab
2)確認結果
- [root@server0 ~]# getfacl /var/tmp/fstab
- getfacl: Removing leading '/' from absolute path names
- # file: var/tmp/fstab
- # owner: root
- # group: root
- user::rw-
- user:natasha:rw-
- user:sarah:---
- group::r--
- mask::rw-
- other::r--
- [root@server0 ~]#
2 案例2:配置附加權限
2.1 問題
本例要求創建一個某個組的用戶共享使用的目錄 /home/admins,滿足以下要求:
- 此目錄的組所有權是 adminuser
- adminuser 組的成員對此目錄有讀寫和執行的權限,除此以外的其他所有用戶沒有任何權限(root用戶能夠訪問系統中的所有文件和目錄)
- 在此目錄中創建的文件,其組的所有權會自動設置為屬於 adminuser 組
2.2 方案
使目錄的屬組能夠向下自動繼承,只要對這個目錄設置Set GID附件權限即可。
2.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:創建目錄並調整權限
1)新建文件夾
- [root@server0 ~]# mkdir /home/admins
2)調整並確認權限
- [root@server0 ~]# chown :adminuser /home/admins
- [root@server0 ~]# chmod ug=rwx,o-rwx /home/admins
- [root@server0 ~]# chmod g+s /home/admins
- [root@server0 ~]# ls -ld /home/admins/
- drwxrws---. 2 root adminuser 6 12月 23 23:13 /home/admins/
步驟二:驗證目錄的特性
1)在此目錄下新建一個文件
- [root@server0 ~]# touch /home/admins/a.txt
2)查看新建文件的歸屬,其屬組應該與父目錄相同
- [root@server0 ~]# ls -lh /home/admins/a.txt
- -rw-r--r--. 1 root adminuser 0 12月 23 23:17 /home/admins/a.txt
-
圖-4
3 案例3:綁定到LDAP驗證服務
3.1 問題
本例要求配置虛擬機server0使用系統classroom.example.com提供的LDAP服務,相關信息及要求如下:
- 驗證服務的基本DN是:dc=example,dc=com
- 賬戶信息和驗證信息都是由 LDAP 提供的
- 連接要使用證書加密,證書可以在下面的鏈接下載:http://classroom.example.com/pub/example-ca.crt
- 當正確完成配置后,用戶 ldapuser0 應該能登錄到你的系統,不過暫時沒有主目錄(需完成 autofs 題目)
- 用戶 ldapuser0 的密碼是 password
3.2 方案
需要安裝軟件包sssd已提供支持。
配置工具可選擇默認安裝的authconfig-tui,或者使用圖形程序authconfig-gtk。
3.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:安裝支持軟件sssd、圖形配置authconfig-gtk
- [root@server0 ~]# yum -y install sssd authconfig-gtk
- .. ..
步驟二:配置LDAP客戶端參數
1)使用authconfig-gtk認證配置工具
打開配置程序(如圖-1所示)后,可以看到“Identity & Authentication”窗口。

圖1
單擊“User Account Database”右側的下拉框選中“LDAP”,單擊“Authentication Method”右側的下拉框選中“LDAP Password”。然后在“LDAP Search DN”后的文本框內填入指定的基本DN字串“dc=example,dc=com”,在“LDAP Server”后的文本框內填入指定的LDAP服務器地址“classroom.example.com”(如圖-2所示)。

圖-2
勾選“Use TLS to encrypt connections”前的選框,然后下方的“Download CA Certificate”按鈕會變成可用狀態,上方的警告消息也會自動消失(如圖-3所示)。

圖-3
單擊“Download CA Certificate”按鈕,根據提示填入TLS加密用CA證書的下載地址(http://classroom.example.com/pub /example-ca.crt),然后單擊OK回到配置界面,單擊右下方的“Apply”按鈕(如圖-4所示),耐心等待片刻即完成設置,配置程序自動 關閉。

圖-4
2)確保sssd服務已經運行
只要前一步配置正確,檢查sssd服務會發現已經自動運行。
- [root@server0 ~]# systemctl status sssd
- sssd.service - System Security Services Daemon
- Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled)
- Active: active (running) since Sat 2016-11-26 05:39:21 CST; 2min 58s ago
- Process: 2030 ExecStart=/usr/sbin/sssd -D -f (code=exited, status=0/SUCCESS)
- Main PID: 2031 (sssd)
- .. ..
確保sssd服務開機自啟。
- [root@server0 ~]# systemctl enable sssd
步驟三:LDAP客戶端驗證
1)在客戶機上能檢測到LDAP網絡用戶
檢查ldapuser0的ID值:
- [root@server0 ~]# id ldapuser0
- uid=1700(ldapuser0) gid=1700(ldapuser0) groups=1700(ldapuser0)
2)可以su切換到LDAP網絡用戶
切換到用戶ldapuser0並返回:
- [root@server0 ~]# su - ldapuser0
- su: warning: cannot change directory to /home/guests/ldapuser0: No such file or directory
- mkdir: cannot create directory '/home/guests': Permission denied
- -bash-4.2$ //成功登入,但沒有家目錄
- -bash-4.2$ exit //返回原用戶環境
- Logout
- [root@server0 ~]#
3)可以使用LDAP網絡用戶在客戶機上登錄
以用戶ldapuser0,密碼password嘗試ssh登錄到server0:
- [root@server0 ~]# ssh ldapuser0@server0.example.com
- The authenticity of host 'server0.example.com (172.25.0.11)' can't be established.
- ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
- Are you sure you want to continue connecting (yes/no)? yes //首次接受密鑰
- Warning: Permanently added 'server0.example.com,172.25.0.11' (ECDSA) to the list of known hosts.
- ldapuser0@server0.example.com's password: //輸入密碼password
- Last login: Sat Nov 26 05:45:51 2016
- Could not chdir to home directory /home/guests/ldapuser0: No such file or directory
- mkdir: cannot create directory ‘/home/guests’: Permission denied
- -bash-4.2$ //成功登入,但沒有家目錄
- -bash-4.2$ exit //返回原用戶環境
- logout
- Connection to server0.example.com closed.
- [root@server0 ~]#
4 案例4:配置LDAP家目錄漫游
4.1 問題
沿用練習3,本例要求手動掛載 LDAP 用戶的家目錄,實現漫游的效果。相關信息及要求如下:
- 主機 classroom.example.com 已經預先配置好通過NFS輸出了/home/guests 目錄到你的系統,這個文件系統下包含了用戶 ldapuser0 的主目錄
- ldapuser0 的主目錄是:classroom.example.com:/home/guests/ldapuser0
- ldapuser0 的主目錄應該掛載到本地的 /home/guests/ldapuser0 目錄下
- 用戶對其主目錄必須是可寫的
- ldapuser0 用戶的密碼是 password
4.2 步驟
實現此案例需要按照如下步驟進行。
步驟一:掛載LDAP用戶的家目錄
1)創建掛載點目錄
- [root@server0 ~]# mkdir /home/guest/ldapuser0
- [root@server0 ~]# ls /home/guest/ldapuser0
- [root@server0 ~]# //未掛載資源前內容為空
2)掛載NFS資源
- [root@server0 ~]# mount classroom.example.com:/home/guests/ldapuser0 /home/guests/ldapuser0/
3)確認掛載結果
- [root@server0 ~]# ls -ld /home/guests/ldapuser0/ //確認資源歸屬及權限
- drwx------. 4 1700 1700 88 7月 11 2014 /home/guests/ldapuser0/
- [root@server0 ~]# ls -A /home/guests/ldapuser0/ //root無法查看
- ls: 無法打開目錄/home/guests/ldapuser0/: 權限不夠
步驟二:驗證LDAP用戶的家目錄漫游
通過su或ssh方式切換到ldapuser0登錄,可以發現家目錄已經可用了。
- [root@server0 ~]# su - ldapuser0
- Last login: Sat Nov 26 06:34:02 CST 2016 from server0.example.com on pts/2
- [ldapuser0@server0 ~]$ pwd //成功登入,且位於家目錄下
- /home/guests/ldapuser0
- [ldapuser0@server0 ~]$ exit //返回原用戶環境
- logout
- [root@server0 ~]#