淺談使用者、組之管理指令
今天呢,我們來聊一聊關於使用者和組的管理指令。
一、使用者和組的概念
對於我們的計算機而言,它是不記錄名字的,只記錄數字,所以,就給每一個使用者排了編號,這個編號我們就稱之為使用者ID。大家都知道,linux系統下,擁有最高許可權的使用者就是root(超級管理員)了,所以root(超級管理員)的ID就是0,排在了最前面,以彰顯它的地位。在我們的linux centos7系統中,系統使用者(程序)的ID號是1-999,普通使用者的ID號是從1000開始的,在我們建立使用者時,系統會自動分配一個ID號,當然我們也可以自己指定,至於如何指定,在下文中小編會給大家介紹的。
關於組,組就是把若干個使用者放在其中,這樣一來,就更加方便我們對成員的管理,比如:把公司裡一個部門的成員放在一個組裡,直接把許可權設定到組,這樣,這個部門的人都可以訪問到他們需要訪問的檔案,會比一個一個設定快捷方便很多。
二、使用者和組的主要配置檔案
使用者和組的配置檔案有很多,主要的檔案就是下面的這四個:
1、/etc/passwd:該檔案中儲存的是使用者及其屬性資訊,包括名稱、UID、主組ID等等。
2、/etc/group:顧名思義,這個檔案中儲存的就是組及其屬性資訊啦。
3、/etc/shadow:該檔案儲存的是使用者密碼及其相關屬性。
4、/etc/gshadow:該檔案儲存的是組密碼及其相關屬性。
每個檔案的具體內容和用法稍後我們也會提到。
三、四大主要檔案的格式
1、/etc/passwd
在linux系統中,想要了解一個檔案最簡單的方法就是用man啦。
上圖就是man出來的結果,紅色方塊圈出來的就是格式資訊啦~我們用
圖中可以看出,每一部分內容是由":"分隔開來的,每一部分的意思就是上一張圖中用紅色方塊框起來的部分,分別如下:
登入使用者名稱:密碼:UID:GID:使用者全名或註解:使用者家目錄:預設的登陸shell。
2、/etc/group
同理,我們用man檢視一下:
同樣的,我們來看一下具體的顯示:
分別如下:組名:密碼:GID號:組成員列表
在這裡,需要說明的是:組成員列表顯示的是將該組作為輔助組的成員列表。(很重要很重要很重要!!!)那麼問題來了,如果我們將組成員列表中的某使用者主組更改為這個組,還會顯示嗎?我們就用
從圖中,我們可以看出,當成員先把改組當做輔助組,再轉成主要組時,顯示內容是不變的~
3、/etc/shadow
我們來man一下該指令:
接下來我們看一下root使用者的具體資訊:
每一塊的具體說明,在上一張圖中已經標示過了。
在這裡,我們要介紹一個命令——chage
Chage -l username顯示帳戶的密碼資訊
-d 指定密碼的上次修改時間(yyyy-mm-dd)
-d 0 則強制使用者下次登入時必須修改密碼
-E 指定賬戶的過期時間
-I 密碼過期之後多少天帳戶過期
-m 設定最小存活時間
-M 設定最大存活時間
-W 設定密碼過期前的提醒時間
chage username互動式修改使用者的密碼策略
可能有人會問,什麼是互動式修改使用者的密碼呢?下面我們就來演示一下:
當我們輸入chage weichen指令後,就會依次彈出圖中資訊,我們挨個填一下就好。這樣是不是很方便呢~修改過後我們來查詢一下weichen的資訊:
圖中我們可以看出,已經按照我們設定的修改過啦~
4、/etc/gshadow
Gshadow一共顯示四部分資訊,同樣以root為例:
分別為:組名:組密碼位:管理員:組成員
一樣的,該處顯示的組成員也是將該組作為輔助組的成員列表。
上圖中我們可以看出,組密碼位和管理員都是空的,那麼如何設定呢?
設定組密碼: gpasswd groupname
關於管理員,我們要說的命令會詳細一些:
任命管理員 gpasswd -A xiaoqiao,luren admin
撤消所有管理員 gpasswd -A "" admin
gpasswd -a libai admin往組中增加使用者
gpasswd -d libai admin將使用者從組中刪除
gpasswd -r admin刪除組密碼
gpasswd -R admin限制非輔助組使用者可以通過newgrp admin獲取主組許可權。當前密碼被刪除替換為!
gpasswd -M redhat,libai admin設定輔助組的成員列表。
重點來了!管理員只能由root來任命或者撤銷,可以同時有多名一起,中間用","隔開。身為管理員,當然有不一樣的權力啦:管理員可以修改組密碼,同時也可以將使用者從該組(輔助組)當中新增或者刪除!
四、使用者和組的管理命令
千呼萬喚使出來,我們終於說到了最重要的部分。
1、使用者管理命令:
(1)使用者建立之useradd
useradd
-u uid username 建立使用者時指定uid(如不指定則Centos:500-60000, Centos7: 1000-60000)
-o -u uid username 建立使用者時指定uid(可以與已存在使用者的uid相同)
-g groupname username 建立使用者時指定主組為某個已存在的組。(將不會再建立與使用者同名的組)
-c ... username 建立使用者時指定描述資訊。相當於chfn ... username
-d path username 指定使用者的家目錄(確保指定的家目錄所在的上級目錄要存在,且家目錄本身不能存在)
-s /sbin/nologin username指定使用者的預設shell
-G group1[,group2] username指定使用者的輔助組
-N username 設定使用者的主要組為預設組(users,uid=100)
-r username 建立系統使用者
(2)使用者屬性修改之usermod
usermod
-u newuid username 修改使用者的UID
-o -u newuid username 修改使用者的uid(可以與已存在使用者的uid相同)
-aG 加組名,可以追加輔助組而不用覆蓋之前的組
-G "" username 或 usermod -G primarygroup username 清空使用者所有的輔助組
-g groupname username 修改使用者的主組
-s /sbin/nologin username修改使用者的預設shell
-c ... username 修改使用者時指定描述資訊。相當於chfn ... username
-d /.../path username 修改使用者的家目錄(不會建立,只修改/etc/passwd當中的家目錄資訊)
-m -d /.../path username修改使用者的家目錄資訊,並將家目錄移動到目的目錄並改名。
-l newname oldname 修改使用者名稱
-L 給使用者/etc/shadow中的密碼位加!使使用者被鎖定
-U 把!拿掉。
-e yyyy-mm-dd 設定一個帳戶過期時間
-f days 指定密碼過期之後多少天帳戶過期
(3)刪除使用者之userdel
Userdel的用法很簡單,後面加上使用者名稱即可。需要說明的一點是,如果你想在刪除使用者的時候,連同他的家目錄和郵件等資訊一同刪除,則需要加上-r,如圖所示:
這樣過就可以把使用者李白的所有資訊都刪除了。
(4)檢視使用者資訊之ID
id username 檢視每一使用者的資訊
id –u 檢視當前登入使用者的UID
id –un 檢視當前登入使用者的使用者名稱
id –g 檢視當前登入使用者的GID
id –gn 檢視當前登入使用者的主組名字
(5)切換使用者之su
su (switch user)
su username 非登入式切換,即不會讀取目標使用者的配置檔案,不改變當前工作目錄
su - username 登入式切換,會讀取目標使用者的配置檔案,切換至家目錄,完全切換
-c 'command' 以使用者的身份執行命令而不登入
2、組管理命令
(1)建立組之groupadd
groupadd -g gid groupname 建立指定gid的組
-r groupname 建立系統組
(2)修改組屬性之groupmod
groupmod
-n newgrpname oldgrpname 修改組名
-g newgid groupname 修改gid
(3)刪除組之groupdel
groupdel groupname 刪除組
(4)更改及檢視組成員之groupmems
groupmems -g admin -a libai (僅能一次加一個使用者到組中)
groupmems -g admin -d libai 將指定成員從組中刪除
groupmems -g admin -l 列出指定組的成員列表(輔助組)
groupmems -g admin -p 清空指定組的所有成員(輔助組)。
以上,就是我對使用者和組管理的小結,如有不足之處,還請大家多多指教諾~