單純提供一個相對的解答,並不是標準答案!
單純就是個解答的參考,寫完之後再來這邊查查看答案跟你想的一樣不一樣!?
# A. 建立教材說到的,最大的 UID 號碼的帳號 [root@station5-237 ~]# useradd -u 4294967294 maxuser1 [root@station5-237 ~]# id maxuser1 uid=4294967294(maxuser1) gid=1010(maxuser1) groups=1010(maxuser1) # B. 測試更大的 ID 號碼 [root@station5-237 ~]# useradd -u 4294967295 maxuser2 useradd: invalid user ID '4294967295' # C. 趕緊刪除這個帳號 [root@station5-237 ~]# userdel -r maxuser1所以,最大的帳號其實是 4294967294 才對!教材寫的可能是指引~
# a. 建立一個新的帳號 [root@station5-237 ~]# useradd check [root@station5-237 ~]# echo check123 | passwd --stdin check 更改使用者 check 的密碼。 passwd:所有核對代符都已成功更新。 [root@station5-237 ~]# grep check /etc/shadow check:$6$66lawtZNtnFeAc....J71QNG612y78o.DnSlcCnxI5l/:19478:0:99999:7::: [root@station5-237 ~]# date +%s 1682909975 [root@station5-237 ~]# echo $(( $(date +%s) /(60*60*24) )) 19478 <==果然就是今天的日期啊! # b. 修改一下目前 check 這個帳號的密碼修訂時間,變成 1970-01-01 之前的日子! [root@station5-237 ~]# chage -d 0 check [root@station5-237 ~]# grep check /etc/shadow check:$6$66lawtZNtnFeAc....J71QNG612y78o.DnSlcCnxI5l/:0:0:99999:7::: # c. 嘗試從 student 變成 check,看看需要輸入密碼的情況變怎樣? [student@station5-237 13:59 1 ~]$ su - check 密碼: <==這裡輸入 check123 喔! You are required to change your password immediately (administrator enforced) <==提示 root 要求的! Current password: <==舊的密碼 新 密碼: <==新的密碼 再次輸入新的 密碼:<==新的密碼 [check@station5-237 ~]$ exit透過這個練習,你就知道怎麼強迫用戶變更他自己的密碼的方式了!
# a. 用比較『保守』,不會刪除用戶家目錄的方法刪除 check 這個用戶: [root@station5-237 ~]# userdel check [root@station5-237 ~]# ll -d /home/check /var/spool/mail/check drwx------. 4 1008 1010 113 May 1 11:01 /home/check/ -rw-rw----. 1 1008 mail 0 May 1 10:58 /var/spool/mail/check # 果然有無歸屬的檔案檔名存在! # b. 用 find 找出來無歸屬的檔名與屬性 [root@station5-237 ~]# man find ...... -nouser No user corresponds to file's numeric user ID. [root@station5-237 ~]# find /var /home -nouser [root@station5-237 ~]# ll -d $(find /var /home -nouser) drwx------. 4 1008 1010 113 May 1 11:01 /home/check -rw-------. 1 1008 1010 5 May 1 11:01 /home/check/.bash_history -rw-r--r--. 1 1008 1010 18 Jan 24 06:42 /home/check/.bash_logout -rw-r--r--. 1 1008 1010 141 Jan 24 06:42 /home/check/.bash_profile -rw-r--r--. 1 1008 1010 492 Jan 24 06:42 /home/check/.bashrc drwx------. 2 1008 1010 6 May 1 11:01 /home/check/.cache drwxr-xr-x. 4 1008 1010 39 Feb 16 11:43 /home/check/.mozilla drwxr-xr-x. 2 1008 1010 6 Oct 30 2022 /home/check/.mozilla/extensions drwxr-xr-x. 2 1008 1010 6 Oct 30 2022 /home/check/.mozilla/plugins -rw-rw----. 1 1008 mail 0 May 1 10:58 /var/spool/mail/check # c. 請刪除這幾個無歸屬檔案: [root@station5-237 ~]# rm -rfv $(find /var /home -nouser)
student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7:::
# student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7::: [root@station5-237 ~]# echo $((16849*60*60*24)) 1455753600 [root@station5-237 ~]# date --date="@$(echo $((16849*60*60*24)))" 四 2月 18 08:00:00 CST 2016所以,差不多是 2016 年 2 月 18 日前後!
# student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7:::
所以是 2/18 之後的 5 日內不能修改,應該是 2016/02/22 (含)之前無法修改喔!# student:$6$3iq4VYrt$Hg62ID...RVbE/:16849:5:180:7::: [root@station5-237 ~]# date --date="2016/02/18 + 180days" 二 8月 16 00:00:00 CST 2016所以,『大概』是在 2016/08/16 前後需要修改比較好!不要等到最後一天啊!
# A. 使用 passwd 檢查 testuser1 的密碼狀態 [root@station5-237 ~]# passwd --help 用法: passwd [OPTION...]鎖定密碼還挺有趣的!因為密碼欄位的『長度』是固定的,所以,只要密碼欄位長度改變,該密碼就完全無用!因此, 暫時在密碼前面加上兩個 !! 就可以讓該帳號失效了!-k, --keep-tokens 保留未過期的驗證代符 -d, --delete 刪除已有命名帳號的密碼(僅限 root 執行);若有的話也移除密碼鎖定 -l, --lock 鎖住已命名帳號的密碼 (僅限 root 執行) -u, --unlock 解開已命名帳號的密碼鎖定 (僅限 root 執行) -e, --expire 讓已命名帳號的密碼過期 (僅限 root 執行) -f, --force 強制作業 -x, --maximum=DAYS 最大密碼有效期限 (僅限 root 執行) -n, --minimum=DAYS 最小密碼有效期限 (僅限 root 執行) -w, --warning=DAYS 使用者在密碼過期前收到警告的天數 (僅限 root 執行) -i, --inactive=DAYS 帳號在密碼過期後即將被停用前的天數 (僅限 root 執行) -S, --status 回報已命名帳號上的密碼狀態 (僅限 root 執行) --stdin 由 stdin 讀取新的代符(僅限 root 執行) Help options: -?, --help 顯示本說明訊息 --usage 顯示簡短的使用說明 [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2023-05-01 0 99999 7 -1 (Password set, SHA512 crypt.) # B. 調整最大密碼存活時間從 99999 變成 180 天 [root@station5-237 ~]# passwd -x 180 testuser1 調整使用者 testuser1 的期限資料。 passwd: 成功 [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2023-05-01 0 180 7 -1 (Password set, SHA512 crypt.) # C. 警告期限從 7 天變成 14 天 [root@station5-237 ~]# passwd -w 14 testuser1 調整使用者 testuser1 的期限資料。 passwd: 成功 [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2023-05-01 0 180 14 -1 (Password set, SHA512 crypt.) # D. 鎖定這個帳號的密碼使用權限 [root@station5-237 ~]# passwd -l testuser1 鎖定使用者 testuser1 的密碼。 passwd: 成功 [root@station5-237 ~]# passwd -S testuser1 testuser1 LK 2023-05-01 0 180 14 -1 (Password locked.) [root@station5-237 ~]# grep testuser1 /etc/shadow testuser1:!!$6$t4R4uBMlGGSsvPpH$K/oBUVYh7....aNfTUTuwhMqz.s.elrZ0/:19478:0:180:14:::
# A. 使用 chage 觀察用戶密碼 [root@station5-237 ~]# chage --help Usage: chage [options] LOGIN Options: -d, --lastday LAST_DAY set date of last password change to LAST_DAY -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -h, --help display this help message and exit -I, --inactive INACTIVE set password inactive after expiration to INACTIVE -l, --list show account aging information -m, --mindays MIN_DAYS set minimum number of days before password change to MIN_DAYS -M, --maxdays MAX_DAYS set maximum number of days before password change to MAX_DAYS -R, --root CHROOT_DIR directory to chroot into -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS [root@station5-237 ~]# LANG=C chage -l testuser1 Last password change : May 01, 2023 Password expires : Oct 28, 2023 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 180 Number of days of warning before password expires : 14 # B. 嘗試修改密碼最大存活時間 [root@station5-237 ~]# chage -M 365 testuser1 [root@station5-237 ~]# LANG=C chage -l testuser1 Last password change : May 01, 2023 Password expires : Apr 30, 2024 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 365 Number of days of warning before password expires : 14 # C. 警告時限則改為 30 天 [root@station5-237 ~]# chage -W 30 testuser1 [root@station5-237 ~]# LANG=C chage -l testuser1 Last password change : May 01, 2023 Password expires : Apr 30, 2024 Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 365 Number of days of warning before password expires : 30 # D. 使用 usermod 解開密碼鎖定的問題 [root@station5-237 ~]# usermod --help Usage: usermod [options] LOGIN Options: -L, --lock lock the user account -U, --unlock unlock the user account ...... [root@station5-237 ~]# usermod -U testuser1 [root@station5-237 ~]# grep testuser1 /etc/shadow testuser1:$6$t4R4uBMlGGSsvPpH$K/oBUVYh7....aNfTUTuwhMqz.s.elrZ0/:19478:0:180:14::: [root@station5-237 ~]# passwd -S testuser1 testuser1 PS 2023-05-01 0 365 30 -1 (Password set, SHA512 crypt.)
[root@station5-237 ~]# cd ~/bin [root@station5-237 bin]# cat > users.txt << eof > linuxuser1 > linuxuser2 > linuxuser3 > eof [root@station5-237 bin]# cat users.txt linuxuser1 linuxuser2 linuxuser3 [root@station5-237 bin]# vim account.sh #!/bin/bash if [ ! -e users.txt ]; then echo "file: users.txt not exist" exit 1 fi users=$( cat users.txt ) for username in ${users} do useradd ${username} echo ${username} | passwd --stdin ${username} chage -d 0 ${username} done [root@station5-237 bin]# chmod a+x account.sh [root@station5-237 bin]# account.sh 更改使用者 linuxuser1 的密碼。 passwd:所有核對代符都已成功更新。 更改使用者 linuxuser2 的密碼。 passwd:所有核對代符都已成功更新。 更改使用者 linuxuser3 的密碼。 passwd:所有核對代符都已成功更新。
[root@station5-237 ~]# mkdir /dev/shm/mydir [root@station5-237 ~]# touch /dev/shm/myfile [root@station5-237 ~]# ll -d /dev/shm/my* drwxr-xr-x. 2 root root 40 5月 11 15:54 /dev/shm/mydir -rw-r--r--. 1 root root 0 5月 11 15:54 /dev/shm/myfile # 原因是這樣的! umask 代表移除的權限,所以 022 代表減去 ----w--w- 由於目錄的 x 很重要,因此目錄的預設權限應該是 rwxrwxrwx ,檔案則應該是 rw-rw-rw-,因此: 目錄: (rwxrwxrwx) - (----w--w-) ==> rwxr-xr-x 檔案: (rw-rw-rw-) - (----w--w-) ==> rw-r--r--
[root@station5-237 bin]# visudo ## Allow root to run any commands anywhere root ALL=(ALL) ALL student ALL=(ALL) ALL # 增加上面這行就可以了!
# a. 初次使用 sudo 時,才會有提示功能。 # 而且在第一次輸入密碼後的 5 分鐘內,都可以不用再次輸入密碼 [student@station5-237 16:55 2 ~]$ sudo grep student /etc/shadow We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for student: <==這裡輸入 student 自己的密碼!不是 root 的! student:$6$unA/8Xw1.tQQaGh6$QfDjurdasF.......bVynh5IOEzVSeo/hEqs/:18343:0:99999:7::: [student@station5-237 16:55 3 ~]$ # b. 輸入自己的密碼,而且一直用 root 身份操作系統喔! [student@station5-237 16:55 3 ~]$ sudo su - [root@station5-237 ~]#只要在最近執行 sudo 的 5 分鐘內再次使用 sudo 時,就無須重新輸入密碼!系統會假設你還是你!如果超過 5 分鐘以上才又操作 sudo, 那就得要重新輸入一次『使用者自己的密碼』了!
[linuxuser1@station5-237 ~]$ id linuxuser1 uid=1008(linuxuser1) gid=1010(linuxuser1) groups=1010(linuxuser1) # 確定沒有加入 wheel 群組喔! [linuxuser1@station5-237 ~]$ sudo tail /etc/shadow [sudo] password for linuxuser1: <==輸入 linuxuser1 自己的密碼 linuxuser1 is not in the sudoers file. This incident will be reported. # 肯定的說, linuxuser1 並不在 sudoers 的支援檔案內!
[root@station5-237 ~]# usermod -a -G wheel linuxuser1 [root@station5-237 ~]# id linuxuser1 uid=1008(linuxuser1) gid=1010(linuxuser1) groups=1010(linuxuser1),10(wheel) # 有喔!是有支援的喔!
[linuxuser1@station5-237 ~]$ id uid=1008(linuxuser1) gid=1010(linuxuser1) groups=1010(linuxuser1),10(wheel) # 務必確定自己能看到!否則請登出後再次登入才會生效! [linuxuser1@station5-237 ~]$ sudo tail /etc/shadow [sudo] password for linuxuser1: linuxuser3:$6$3pTauo0YPDkSKXl6$o79.xaYl......gQBdQRkAxFzAgxhgsYrODwtgV31:0:0:99999:7::: mailuser1:$6$AwPP4xUtWrY/ADC3$Fes4vW/SV......Isp6m/W3Hyz70QqoEu5OjIBaJ1:18393:0:99999:7::: # 是的!確定有支援了!
# A. 找出系統支援 EXT4 檔案系統的磁碟 [root@station5-237 ~]# df -T | grep -v tmpfs Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/rocky-root xfs 10475520 4348776 6126744 42% / /dev/vda2 ext4 1992552 356272 1515040 20% /boot /dev/mapper/rocky-home xfs 3135488 155404 2980084 5% /home [root@station5-237 ~]# mount | grep /boot /dev/vda2 on /boot type ext4 (rw,relatime,seclabel) # B. 查詢一下掛載參數為何 [root@station5-237 ~]# dumpe2fs /dev/vda2 | less Filesystem volume name: <none> Last mounted on: /boot Filesystem UUID: b93d23a0-3fdb-44c5-9304-4fbbbf415542 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl ..... # 果然掛載預設就支援 ACL 了!基本上,無須觀察 mount 的結果!
# a. 設計群組,題目要求要使用系統群組而非一般群組 [root@station5-237 ~]# groupadd -r myteacher [root@station5-237 ~]# groupadd -r mystudent [root@station5-237 ~]# egrep 'myteacher|mystudent' /etc/group myteacher:x:976: mystudent:x:975: <==會發現, GID 都小於 1000 以下! # b. 開始建立帳號與密碼 [root@station5-237 ~]# useradd -G myteacher myteacher1 [root@station5-237 ~]# useradd -G myteacher myteacher2 [root@station5-237 ~]# useradd -G myteacher myteacher3 [root@station5-237 ~]# useradd -G mystudent mystudent1 [root@station5-237 ~]# useradd -G mystudent mystudent2 [root@station5-237 ~]# useradd -G mystudent mystudent3 # c. 建立密碼 [root@station5-237 ~]# echo password | passwd --stdin myteacher1 Changing password for user myteacher1. passwd: all authentication tokens updated successfully. ....
# a. 先建立 mystudent 群組的共享目錄在 /srv/myshare 目錄下 [root@station5-237 ~]# cd /srv/ [root@station5-237 srv]# mkdir myshare [root@station5-237 srv]# chgrp mystudent myshare [root@station5-237 srv]# chmod 2770 myshare/ [root@station5-237 srv]# ll -d myshare/ drwxrws---. 2 root mystudent 6 May 11 21:22 myshare/ # b.c. 讓老師擁有查詢權,但是不能修改 (不用給 w 喔!) [root@station5-237 srv]# setfacl -m g:myteacher:rx myshare/ [root@station5-237 srv]# setfacl -m d:g:myteacher:rx myshare/ [root@station5-237 srv]# setfacl -m u:myteacher3:- myshare/ [root@station5-237 srv]# getfacl myshare/ # file: myshare/ # owner: root # group: mystudent # flags: -s- user::rwx user:myteacher3:--- group::rwx group:myteacher:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:myteacher:r-x default:mask::rwx default:other::---
# a. 建立系統群組 [root@station5-237 ~]# groupadd -r sysgroup [root@station5-237 ~]# grep sysgroup /etc/group sysgroup:x:974: # b. 建立系統帳號 [root@station5-237 ~]# useradd -r -M -G sysgroup mysysuser1 [root@station5-237 ~]# useradd -r -M -G sysgroup mysysuser2 [root@station5-237 ~]# useradd -r -M -G sysgroup mysysuser3 [root@station5-237 ~]# echo mysystem | passwd --stdin mysysuser1 [root@station5-237 ~]# echo mysystem | passwd --stdin mysysuser2 [root@station5-237 ~]# echo mysystem | passwd --stdin mysysuser3 [root@station5-237 ~]# id mysysuser1 uid=398(mysysuser1) gid=398(mysysuser1) groups=398(mysysuser1),974(sysgroup) # UID/GID 都小於 1000,且支援 sysgroup 這樣! # c. 建立特定用戶 [root@station5-237 ~]# mkdir /remote [root@station5-237 ~]# useradd -d /remote/mysysuser4 mysysuser4 [root@station5-237 ~]# ll -d /remote/mysysuser4 drwx------. 4 mysysuser4 mysysuser4 89 May 11 21:45 /remote/mysysuser4 [root@station5-237 ~]# echo mysysuser4 | passwd --stdin mysysuser4 # d. 刪除一般用戶,但保留家目錄: [root@station5-237 ~]# userdel linuxuser3 [root@station5-237 ~]# ll -d /home/linuxuser3 drwx------. 3 1010 1012 78 May 11 15:50 /home/linuxuser3 # e. 依據上述資料,完成用戶的重建。其中,密碼給予之前預設值 [root@station5-237 ~]# groupadd -g 1012 linuxuser3 [root@station5-237 ~]# ll -d /home/linuxuser3 drwx------. 3 1010 linuxuser3 78 May 11 15:50 /home/linuxuser3 # 因為 UID/GID 並沒有相同,所以系統無法自動給予正確的 gid,所以要先設定原本的 GID [root@station5-237 ~]# useradd -u 1010 -g linuxuser3 linuxuser3 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists [root@station5-237 ~]# ll -d /home/linuxuser3 drwx------. 3 linuxuser3 linuxuser3 78 May 11 15:50 /home/linuxuser3 [root@station5-237 ~]# id linuxuser3 uid=1010(linuxuser3) gid=1012(linuxuser3) groups=1012(linuxuser3) # 接下來,指定正確的 UID 號碼與 gid 群組名稱,就可以順利建置這個帳號了! [root@station5-237 ~]# echo linuxuser3 | passwd --stdin linuxuser3
# a. 建立共享目錄 [root@station5-237 ~]# cd /opt [root@station5-237 opt]# mkdir sysdir [root@station5-237 opt]# chgrp sysgroup sysdir [root@station5-237 opt]# chmod 2770 sysdir/ [root@station5-237 opt]# ll drwxrws---. 2 root sysgroup 6 May 11 21:52 sysdir # b. 設定 mysysuser4 的可查閱權限 [root@station5-237 opt]# setfacl -m u:mysysuser4:rx sysdir/ [root@station5-237 opt]# setfacl -m d:u:mysysuser4:rx sysdir/ [root@station5-237 opt]# getfacl sysdir/ # file: sysdir/ # owner: root # group: sysgroup # flags: -s- user::rwx user:mysysuser4:r-x group::rwx mask::rwx other::--- default:user::rwx default:user:mysysuser4:r-x default:group::rwx default:mask::rwx default:other::--- # c. 拒絕 mysysuser3 的使用 [root@station5-237 opt]# setfacl -m u:mysysuser3:- sysdir [root@station5-237 opt]# getfacl sysdir/ # file: sysdir/ # owner: root # group: sysgroup # flags: -s- user::rwx user:mysysuser3:--- user:mysysuser4:r-x group::rwx mask::rwx other::--- default:user::rwx default:user:mysysuser4:r-x default:group::rwx default:mask::rwx default:other::---