Lab 1. 設定 NIS Client 配合 autofs 設定
本實作為設定 NIS Client 並且配合 autofs 設定使 NIS Client 使用者登入時能自動 Mount 到 NIS Server 分享的資源並順利登入使用者家目錄, NIS Client 所需用到的套件為 portmap、ypbind、yp-tools、authconfig、authconfig-gtk 因此在安裝前請先確定系統是否已安裝相關套件。# rpm -qa portmap ypbind yp-tools authconfig authconfig-gtk
ypbind-1.19-11.el5
authconfig-gtk-5.3.21-5.el5
portmap-4.0-65.2.2.1
yp-tools-2.9-0.1
authconfig-5.3.21-5.el5
相關套件安裝完畢後可執行 authconfig-tui 指令來設定 NIS Server 資訊,下述 NIS Server 資訊設定完成後按下 OK 後系統會自動啟動相關服務,利用 getent 指令來查看是否能順利與 NIS Server 溝通。
# authconfig-tui //準備設定 NIS Server 資訊
[*] Use NIS //選擇此項
Domain: notexample //指定 NIS Domain 資訊
Server: 192.168.0.254 //指定 NIS Server IP
# getent passwd //設定正確會顯示一些非本機帳號 (例如 nisusers*)
順利與 NIS Server 溝通後若此時登入後會發生找不到使用者家目錄的問題? 因為使用者登入後會找使用者家目錄 (但家目錄在 NIS Server 上不在 NIS Client 上),因此在 NIS Client 上設定 autofs 當 NIS 使用者登入時會自動 Mount NIS Server 資源順利登入家目錄,所以 下述的 autofs 設定為將 NIS Client 本機上的 /home/nisusers/* 目錄對應到遠端 NIS Server 上的 /home/nisusers/nisusers* 使用者帳號資料夾。
# showmount –e 192.168.1.1 //查詢 NIS Server 是否把 nisusers* 家目錄分享出來
# vi /etc/auto.master //設定 autofs 主設定檔
/home/nisusers /etc/auto.nisusers //增加此行設定
# vi /etc/auto.guests //設定 autofs 副設定檔
* -rw,soft 192.168.0.254:/home/nisusers/& //自動對應 nisusers 下所有家目錄
# chkconfig autofs on ; chkconfig --list autofs //設定開機自動啟動 autofs 服務
autofs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service autofs restart //重新啟動 autofs 服務
# su – nisusers2001 //試試能不能使用 NIS User 帳號登入 NIS Client 並順利找到家目錄 (第一次會失敗,第二次之後就會成功)
Lab 2. 設定 LDAP Client 配合 autofs 設定
本實作為設定 LDAP Client 並且配合 autofs 設定使 LDAP Client 使用者登入時能自動 Mount 到 LDAP Server 分享的資源並順利登入使用者家目錄, LDAP Client 所需用到的套件為 authconfig、authconfig-gtk、openldap、openldap-clients、nss_ldap 因此在安裝前請先確定系統是否已安裝相關套件。# rpm -qa authconfig authconfig-gtk openldap openldap-clients nss_ldap
openldap-2.3.43-3.el5
openldap-clients-2.3.43-3.el5
authconfig-5.3.21-5.el5
authconfig-gtk-5.3.21-5.el5
nss_ldap-253-17.el5
相關套件安裝完畢後可執行 authconfig-tui 指令來設定 LDAP Server 資訊,下述 LDAP Server 資訊設定完成後按下 OK 後系統會自動啟動相關服務,利用 getent 指令來查看是否能順利與 LDAP Server 溝通。
# authconfig-tui //準備設定 LDAP Server 資訊
[*] Use LDAP //選擇此項
[*] Use LDAP Authentication //選擇此項
[*] Use TLS //選擇此項
Server: ldap://server1.example.com/ //指定 LDAP Server 資訊
Base DN: dc=example,dc=com //指定 LDAP Domain 資訊
# cd /etc/openldap/cacerts //切換到憑證路徑
# wget ftp://server1/pub/EXAMPLE-CA-CERT //從 LDAP Server 下載用於 TLS 加密憑證到本機
# getent passwd //設定正確會顯示一些非本機帳號 (例如 ldapusers*)
順利與 LDAP Server 溝通後若此時登入後會發生找不到使用者家目錄的問題? 因為使用者登入後會找使用者家目錄 (但家目錄在 LDAP Server 上不在 LDAP Client 上),因此在 LDAP Client 上設定 autofs 當 LDAP 使用者登入時會自動 Mount LDAP Server 資源順利登入家目錄,所以 下述的 autofs 設定為將 LDAP Client 本機上的 /home/ldapusers/* 目錄對應到遠端 LDAP Server 上的 /home/ldapusers/ldapusers* 使用者帳號資料夾。
# showmount –e 192.168.1.1 //查詢 NIS Server 是否把 ldapusers* 家目錄分享出來
# vi /etc/auto.master //設定 autofs 主設定檔
/home/ldapusers /etc/auto.ldapusers //增加此行設定
# vi /etc/auto.guests //設定 autofs 副設定檔
* -rw,soft 192.168.0.254:/home/ldapusers/& //自動對應 nisusers 下所有家目錄
# chkconfig autofs on ; chkconfig --list autofs //設定開機自動啟動 autofs 服務
autofs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service autofs restart //重新啟動 autofs 服務
# su – ldapusers2001 //試試能不能使用 LDAP User 帳號登入 LDAP Client 並順利找到家目錄 (第一次會失敗,第二次之後就會成功)
Lab 3. ACLs 權限設定
為何需要設定 ACL? 因為雖然有 Owner、Group、Other 來設定權限但在企業環境中常常會有某個部門的某個人需要存取資源,但您又希望只是暫時的開放存取權限,即可使用 ACL 來達成此一目的。# chmod 1777 /opt
# getfacl /opt //查看 opt 資料夾目前 ACLs 設定
# file: opt
# owner: root
# group: root
user::rwx
group::rwx
other::rwx
下列設定使用者帳號 weithenn 可對於 /opt 資料夾有讀取、寫入、執行的權限,至於加上 default 參數為, /opt 資料夾下所有的檔案及資料夾都會繼承上層的ACLs 設定。
# setfacl -m u:weithenn:rwx /opt //設定 ACLs
# setfacl -m d:u:weithenn:rwx /opt //加上 default (也就是其下所有檔案及資料夾都繼承上層的 ACLs 設定)
# getfacl /opt //查看 opt 資料夾目前 ACLs 設定
# file: opt
# owner: root
# group: root
user::rwx
user:weithenn:rwx //可發現使用者帳號 weithenn 被加入
group::rwx
mask::rwx
other::rwx
# vi /etc/fstab //修改 File System Table 設定檔
LABEL=/opt /opt ext3 default,acl 1 2 //加上 acl 參數
# mount –o remount /opt //重新掛載該掛載點
# mount
/dev/hda5 on /opt type ext3 (rw,acl) //查看掛載資訊 (opt 出現 acl 代表 ACL 機制生效)
Lab 4. Disk Quota 設定
簡單來說設定硬碟磁碟配額 (Disk Quota) 的用意就是避免因為使用者無止盡的存放檔案而系統的規劃又不良好時將造成系統硬碟空間被吃光,此時我們便可利用 Quota 來強制管理硬碟空間。Quota 管理使用對象
- UserQuota:針對 使用者 硬碟空間做限制。
- GroupQuota:針對 群組 硬碟空間做限制。
Quota 管理資料類別
- 磁碟空間 (kbytes):針對 硬碟空間 作管理 (單位為 kbytes,所以 10 MB = 10240 kbytes)。
- 檔案數量 (inode):針對 檔案數量 作管理。
Quota 管理配額方式
- 非強制性限制 (Soft limit):超過指定大小但未超過 Hard limit 時系統會警告,直到 超過警示的時間 (grace time,預設七天)未降低使用量便會禁止寫入資料。
- 強制限制 (Hard limit):超過這個大小,系統會馬上 禁止 寫入資料。
Quota 資訊我們大概可以分成三個部份來看,如下所示
# useradd weithenn //新增使用者帳號 weithenn
# vi /etc/fstab //修改 File System Table 設定檔
LABEL=/home /home ext3 defaults,usrquota 1 2 //再要設定 Quota 的掛載區加上 usrquota 參數
# mount –o remount /home //重新掛載該掛載點
# mount //查看掛載資訊 (home 出現 usrquota 代表 Quota 機制生效)
/dev/hda5 on /home type ext3 (rw,usrquota)
# quotacheck –a //產生 Quota 資料檔
# quotaon –a //啟用 Quota 機制
# edquota weithenn //設定 Quota 資訊 (當您離開編輯器後所定義的磁碟配額設定就會馬上生效)
# quota -u weithenn //查看指定後的 Quota 資訊如下 (指定非強制 0.9 MB,強制 1MB )
Disk quotas for user weithenn (uid 501):
Filesystem usage quota limit grace files quota limit grace
/home 60 921 1024 30 0 0
# repquota -a //列出所有使用者的 Quota 資訊
設定完成後切換成使用者帳號 weithenn 來進行 Quota 測試
# su – weithenn //切換為使用者 weithenn
# dd if=/dev/zero of=/home/weithenn/f1 bs=1M count=4 //新增一個 4MB 的檔案 (應該會被拒絕,代表 Quota 機制生效)
# quota //使用者 weithenn 查看自已的 quota 狀態
Lab 5. 設定檔案的 SELinux
本次實作為了解 SELinux 的設計理念及概念,可以發現 cron 檔案在 /var/log 及被搬移到 /root 下時 SELinux 的權限設定不同所造成的影響。# setenforce 1 //設定 SELinux 為 Enforce (強制)
# sestatus //查看系統目前 SELinux 狀態
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
# mv /var/log/cron /root //將 cron 檔案搬到 root 家目錄
# restorecon ~/cron //將 root 家目錄的 SELinux 權限套用至 cron 檔案上
# mv ~/cron /var/log/ //再把 cron 檔案搬回 /var/log 下
# ls -Z /var/log/cron* //查看 cron* 的 SELinux 設定
-rw------- root root root:object_r:var_log_t cron //SELinux 為 root
-rw------- root root system_u:object_r:var_log_t cron.1
-rw------- root root system_u:object_r:var_log_t cron.2
此時若您重新啟動 cron 服務可以發現會有錯誤訊息,因為 cron 的 SELinux 權限不對!! 還原 cron 的 SELinux 權限方法如下,請依個人喜好擇一即可。
# restorecon /var/log/cron //方法一 還原 cron 的 SELinux 權限
# chcon --reference /var/log/cron.1 cron //方法二 還原 cron 的 SELinux 權限
# ls -Z cron*
-rw------- root root system_u:object_r:var_log_t cron //SELinux 為 system
-rw------- root root system_u:object_r:var_log_t cron.1
-rw------- root root system_u:object_r:var_log_t cron.2