iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
IT管理

Rocky Linux 8:系統管理與維運實戰系列 第 10

第8-1章:管理本地端主機之使用者與群組(三)

前言

在上一章節中,筆者講解了如和切換使用者以及取得最高的root使用者權限,接下來要講解的是本地端主機的使用者管理。

管理本地使用者

新增使用者可以使用useradd指令做到,而修改使用者相關的資訊可以使用usermod來做到,相關的使用者設定的資訊、預設密碼設定、以及使用者預設的規則設定等,都存放在/etc/login.defs的設定檔案裡,相關的指令執行方式如下:

[rockylinux@workstation ~]$ sudo useradd user1
[sudo] password for rockylinux:
[rockylinux@workstation ~]$ ls /home/
rockylinux  user1
[rockylinux@workstation ~]$ cat /etc/passwd | grep user1
user1:x:1001:1001::/home/user1:/bin/bash

從上面的輸出訊息可以知道,useradd是只有root使用者權限才可以使用的,因此需要切換成root使用者或是使用sudo指令來暫時取得root使用者權限才可以,當新增好user1使用者之後,則對應的user1家目錄以及進入的shell都已經設定好了,可以在/etc/passwd裡面的檔案看到,那預設會亂數一個密碼給user1,因此我們並不知道預設給user1密碼是什麼,因此還需要使用passwd指令來設定user1之密碼,當然因為不知道預設密碼是什麼,因此需要使用root使用者來做設定,假設設定給user1之新的密碼為rocky,則相關的執行指令如下:

[rockylinux@workstation ~]$ sudo passwd user1
[sudo] password for rockylinux:
Changing password for user user1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[rockylinux@workstation ~]$

若新增好的使用者要做修改,則可以使用usermod指令來做到,相關可以修改使用者資訊的參數如下:

  • -c或是--comment:修改對於這個使用者的註解,參數後面接一個字串。
  • -g或是--gid:修改使用者對應的自己主要群組名稱,參數後面接使用者名稱與群組名稱。
  • -G或是--groups:新增使用者到指定的群組,參數後面接群組名稱。
  • -a或是--append:將使用者以附加的方式加入倒指定的群組中,參數後面接群組名稱。
  • -d或是--home:指定一個新的使用者家目錄,參數後面接家目錄之路徑。
  • -m或是--move-home:將原本使用者的家目錄搬移到新的指定的家目錄中,參數後面接家目錄路徑。
  • -s或是--shell:指定使用者登入所使用的shell名稱,參數後面接shell之執行路徑。
  • -L或是--lock:將指定的使用者鎖定,被鎖定的使用者將無法登入與使用。
  • -U或是--unlock:將指定的使用者解除鎖定。

下面有幾個範例來演示使用usermod來設定與修改指定的使用者相關資訊:

[rockylinux@workstation ~]$ sudo usermod -c "user1 comment" user1
[sudo] password for rockylinux:
[rockylinux@workstation ~]$ sudo usermod --lock user1
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ su - user1
Password:
su: Authentication failure
[rockylinux@workstation ~]$ sudo usermod --unlock user1
[rockylinux@workstation ~]$ su - user1
Password:
[user1@workstation ~]$ logout
[rockylinux@workstation ~]$

最後,總結一下當一個使用者被root使用者新增之後,會做到那些事情:

  • 將相關的使用者資訊存放一筆到/etc/passwd檔案中。
  • 將與使用者名稱相同的群組名稱新增一筆資料到/etc/group檔案中。
  • 使用者預設的密碼會存放到/etc/shadow檔案中。
  • 與使用者名稱相同的群組名稱之預設的密碼會存放到/etc/gshadow檔案中。
  • 建立一個與使用者名稱相同的目錄到/home目錄底下。
  • 建立一個與使用者名稱相同的目錄到/var/spool/mail之目錄底下。

當使用useradd指令來新增使用者的時候,若沒有指定user id,則會在新增使用者的時候,隨意的新增一個,而也可以自己指定,要注意的是,在指定user id的時候,有範圍性的,相關的id範圍列表如下:

id range

刪除使用者

當使用者不需要使用,可以考慮將使用者刪除,這時候就會使用userdel來刪除,要完整地將使用者刪除,則需要加上-r參數做搭配,相關的指令執行後的資訊如下:

[rockylinux@workstation ~]$ sudo userdel -r user1
[rockylinux@workstation ~]$

刪除使用者之後,唯一需要注意的是,當新增使用者時候,不要指定之前給定過user id的使用者,因為有可能之後的新增使用者會繼承之前user id對應的使用者,導致之前的檔案與相關目錄都可以存取,為了不必要麻煩,要確保先前的使用者所有相關的目錄與檔案都已經刪除,相關的範例說明如下:

[rockylinux@workstation ~]$ sudo useradd user1
[rockylinux@workstation ~]$ touch user1.txt
[rockylinux@workstation ~]$ sudo chown user1:user1 user1.txt
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ ls -al user1.txt
-rw-rw-r--. 1 user1 user1 0 Sep 25 15:03 user1.txt
[rockylinux@workstation ~]$ id -u user1
1001
[rockylinux@workstation ~]$ sudo userdel -r user1
[rockylinux@workstation ~]$ ls -al user1.txt
-rw-rw-r--. 1 1001 1001 0 Sep 25 15:03 user1.txt
[rockylinux@workstation ~]$ sudo useradd user2
[rockylinux@workstation ~]$ id -u user2
1001
[rockylinux@workstation ~]$ ls -al user1.txt
-rw-rw-r--. 1 user2 user2 0 Sep 25 15:03 user1.txt
[rockylinux@workstation ~]$

從上面的執行指令的輸出範例,就可以說明user id這件事情了,也證明系統是看user id,而不是給定的使用者名稱。

管理使用者密碼

在前面的章節中,談論到/etc/passwd裡面的格式與說明每個使用者相關的設定,這邊在做更進一步有關於/etc/shadow檔案的介紹:

rockylinux:$6$PPjj5FZ1HiJa1Wsl$9SIRj2kUaBoHrwKUILn7id1EdlKGI0BR3NV4gMlfmCY5qTuR2Fp5wx2lS1J1JCeboIV1HC8MadwHmDpHEGYaA1:18893:0:99999:7:::

從上面的設定來看,這是有關於rockylinux使用者的密碼設定,並存放在/etc/shadow檔案裡面,詳細的說明如下:

  • rockylinux是使用者名稱。
  • 將密碼雜湊過的結果。
  • 距離1970-01-01到現在的最後一次改變的時間戳記,這時間是UTC的時間。
  • 最小幾天過後才可以再改變密碼。
  • 密碼多久改變一次。
  • 警告之訊息,當使用者多久沒有變更密碼則會再使用者登入的時候,收到警告。
  • 到了幾天之後密碼沒有變更,則使用者會被自動鎖住。
  • 密碼多久了會到期,時間是距1970-01-01到現今之間的時間,日期以UTC時區表示,若空白的欄位,則密碼永遠不會過期。
  • 最後一個欄位通常都是空白的,留做日後的其他新增的功能與設定用。

雜湊過密碼的格式

$6$PPjj5FZ1HiJa1Wsl$9SIRj2kUaBoHr-wKUILn7id1EdlKGI0BR3NV4gMlfmCY5qTuR2Fp5wx2lS1J1JCeboIV1HC8MadwHmDpHEGYaA1

上述的雜湊密碼格式如下:

  • 每一段資訊以$隔開。
  • 指的是使用哪一種雜湊演算法進行密碼的雜湊,數字為1則為MD5;數字為5為SHA-256,而數字為6則為SHA-512。
  • 雜湊的時候,會加鹽,這一段是加鹽的字串。
  • 將明文的密碼與前一個的加鹽字串何在一起進行雜湊後的結果會顯示在這裡。

由於本書不是與資訊安全有關的主題,因此筆者認為密碼的格式知道就好。

設定密碼時效性

可以使用下列的指令做到將某一個指定的使用者進行密碼有效期的設定,相關的指令執行如下:

[rockylinux@workstation ~]$ sudo chage -E "2021-09-25" user02
[rockylinux@workstation ~]$ su - user2
Password:
Your account has expired; please contact your system administrator
su: User account has expired
[rockylinux@workstation ~]$

上述指令是利用-E來指定什麼時候這個使用者過期,若要設定幾天之後過期,可以使用date指令取得指定的天數之後過期,相關指令如下:

[rockylinux@workstation ~]$ date -d "+30 days" +%F
2021-10-25

從上述的指令可以知道,假設今天是2021-09-25,而設定要30天到期的日期是:2021-10-25,這樣就可以取得指定的時間之到期的日期了。

若要強制使用者在一開始登入之後便要改密碼,則可以使用下列的指令方式做到:

[rockylinux@workstation ~]$ sudo chage -d 0 user2
[rockylinux@workstation ~]$ su - user2
Password:
You are required to change your password immediately (administrator enforced)
Current password:
New password:
Retype new password:
[user2@workstation ~]$

無登入shell設定-

有些使用者不能讓其登入,並可以使用shell,可以使用下列指令做到:

[rockylinux@workstation ~]$ sudo usermod -s /usr/sbin/nologin user2
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ su - user2
Password:
This account is currently not available.
[rockylinux@workstation ~]$

除了使用/usr/sbin/nologin設定之外,另外也可以使用/usr/bin/false來做到,當這樣設定之後,則使用者便不可以登入方式啟動shell才進行存取了。

課後練習

  • 請啟動workstation虛擬機器並以rockylinux的使用者進入到桌面環境以及終端機。
  • 請在workstation虛擬機新增一個使用者叫做peter,並家目錄在/home/peter、啟動shell為/bin/bash。
  • 請在workstation虛擬機新增一個使用者叫做bob,並家目錄在/home/bob、這個使用者不被允許登入。
  • 請在workstation虛擬機新增一個使用者叫做alice,並家目錄在/home/alice並指定user id為1100、啟動shell為/bin/bash。
  • 請分別設定密碼為:rocky給peter與alice使用者。
  • 請將peter這個使用者以附加的方式加入到wheel群組中。
  • 請將alice這個使用者以附加的方式加入到peter群組中。
  • 請將peter使用者設定成當一開始登入之後,便要立即更改密碼。
  • 請將alice使用者設定成從今天開始算起,過了30天之後,帳號會到期。
  • 請刪除peter使用者。
  • 請刪除bob使用者。
  • 請刪除alice使用者。

上一篇
第8章:管理本地端主機之使用者與群組(二)
下一篇
第9章:操作目錄與檔案權限介紹
系列文
Rocky Linux 8:系統管理與維運實戰23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言