LINUX下的使用者和組的概念和管理

zhang41082發表於2019-03-27

用到了使用者和組的管理的地方,有些搞不清楚,網上搜了些資料,也懶的整理了,直接東拼西湊的貼在這裡吧。

其實最主要的就是/etc/group和/etc/passwd兩個檔案,搞清除了裡面的內容、含義、許可權,然後再搞幾個命令,一般的使用者管理也就都搞定了。

[@more@]

使用者組(Group)配置檔案主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密資訊檔案。

1、/etc/group 解說;
使用者組的特性在系統管理中為系統管理員提供了極大的方便,但安全性也是值得關注的,如某個使用者下有對系統管理有最重要的內容,最好讓使用者擁有獨立的使用者組,或者是把用

戶下的檔案的許可權設定為完全私有;另外root使用者組一般不要輕易把普通使用者加入進去,

2、/etc/group 內容具體分析
/etc/group 的內容包括使用者組(Group)、使用者組口令、GID及該使用者組所包含的使用者(User),每個使用者組一條記錄;格式如下:
group_name:passwd:GID:user_list
在/etc/group 中的每條記錄分四個欄位:
第一欄位:使用者組名稱;
第二欄位:使用者組密碼;
第三欄位:GID
第四欄位:使用者列表,每個使用者之間用,號分割;本欄位可以為空;如果欄位為空表示使用者組為GID的使用者名稱;
我們舉個例子:
root:x:0:root,linuxsir 注:使用者組root,x是密碼段,表示沒有設定密碼,GID是0,root使用者組下包括root、linuxsir以及GID為0的其它使用者(可以透過 /etc/passwd檢視);

beinan:x:500:linuxsir 注:使用者組beinan,x是密碼段,表示沒有設定密碼,GID是500,beinan使用者組下包括linuxsir使用者及GID為500的使用者(可以通 過/etc/passwd檢視);

linuxsir:x:502:linuxsir 注:使用者組linuxsir,x是密碼段,表示沒有設定密碼,GID是502,linuxsir使用者組下包使用者linuxsir及GID為502的使用者 (可以透過/etc/passwd檢視)

;helloer:x:503: 注:使用者組helloer,x是密碼段,表示沒有設定密碼,GID是503,helloer使用者組下包括GID為503的使用者,可以透過 /etc/passwd檢視;
而/etc/passwd 對應的相關的記錄為:
root:x:0:0:root:/root:/bin/bashbeinan:x:500:500:beinan sun:/home/beinan:/bin/bashlinuxsir:x:505:502:linuxsir
open,linuxsir office,13898667715:/home/linuxsir:/bin/bashhelloer:x:502:503::/home/helloer:/bin/bash

/etc/passwd檔案是一個純文字檔案,每行採用了相同的格式: name:password:uid:gid:comment:home:shell 它們的含義如下:域說明name使用者登入名password使用者口令。

此域中的口令是加密的。當使用者登入系統時,系統對輸入的口令採取相同的演算法,與此域中的內容進行比較。如果此域為空,表明該使用者登入時不需要口令。uid指定使用者的UID。

使用者登入進系統後,系統透過該值,而不是使用者名稱來識別使用者。gidGID。如果系統要對相同的一群人賦予相同的權利,則使用該值。comment就是註釋資訊。


1:/etc/passwd 是系統識別使用者的一個檔案
當我們以root這個賬號登入時,系統首先會查閱 /etc/passwd 檔案,看是否有root這個賬號,然後確定root的UID,透過UID 來確認使用者和身份,如果存在則讀取/etc/shadow 影

子檔案中所對應的beinan的密碼;如果密碼核實無誤則登入系統,讀取使用者的配置檔案;
2:/etc/passwd 的內容理解:
root:x:0:0:root:/root:/bin/bash
使用者名稱:口令:UID:GID:使用者名稱全稱:使用者的家目錄:所用的SHELL的型別
3:關於UID的理解
UID 是確認使用者許可權的標識,使用者登入系統所處的角色是透過UID 來實現的,而非使用者名稱

由此可以看出helloer使用者組包括 helloer使用者;所以我們檢視一個使用者組所擁有的使用者,可以透過對比/etc/passwd和/etc/group來得到;
Gpasswd –a username groupname 把某使用者加入到某個組中
Gpasswd –d username groupname 把組中的某個使用者刪除
Smbpasswd –a username 在SMB中加入使用者
Smbpasswd –x username 在 SMB中刪除使用者

一個檔案 rwxrwxrwx ,前三個欄位是表明檔案所有者r可讀w可寫x可執行.中間的表明檔案的所有組,後三個表明其他人. 組是使用者的集合,能否操作檔案要看檔案的許可權怎麼定義.跟

使用者無關, 也就是說一個檔案定義了使用者A可以操作,不表明包含使用者A的組C可以操作.這是兩個無關的概念


使用者管理,主要的工作就是建立一個合法的使用者帳戶、設定和管理使用者的密碼、修改使用者帳戶的屬性以及在必要時刪除已經廢棄的使用者帳號。

1. 增加一個新使用者
在Linux系統中,只有root使用者才能夠建立一個新使用者,如下的命令將新建一個登入名user1的使用者。
# useradd user1
但是,這個使用者還不能夠登入,因為還沒給它設定初始密碼,而沒有密碼的使用者是不能夠登入系統的。在預設情況下,將會在/home目錄下新建一個與使用者名稱相同的使用者主目錄。如

果需要另外指定使用者主目錄的話,那麼可以使用如下命令:
# useradd -d /home/xf user1
同時,該使用者登入時將獲得一個Shell程式:/bin/bash,而假如你不想讓這個使用者登入,也就可以指定該使用者的Shell程式為:/bin/false,這樣該使用者即使登入,也不能夠執行

Linux下的命令:
# useradd -s /bin/false user1
在Linux中,新增一個使用者的同時會建立一個新組,這個組與該使用者同名,而這個使用者就是該組的成員。如果你想讓新的使用者歸屬於一個已經存在的組,則可以使用如下命令:
# useradd -g user user1
這樣該使用者就屬於user組的一員了。而如果只是想讓其再屬於一個組,那麼應該使用:
# useradd -G user user1
完成了這一操作後,你還應該使用passwd命令為其設定一個初始密碼。

2. 刪除一個使用者
刪除使用者,只需使用一個簡單的命令“userdel 使用者名稱”即可。不過最好將它留在系統上的檔案也刪除掉,你可以使用“userdel -r 使用者名稱”來實現這一目的。

3. 修改使用者屬性
在前面我們看到了在新建一個使用者的時候如何指定它的使用者主目錄,如何指定它的Shell,如何設定它所屬的組…等等。在Linux中提供了一個命令來實現:
usermod -g組名 -G 組名 -d 使用者主目錄 -s 使用者Shell
還有一種直接的方法,那就是修改/etc/passwd檔案,在這個檔案中每個使用者佔用一行,它的內容為:
使用者名稱:密碼:使用者ID:組ID:使用者全名:使用者主目錄:使用者Shell
不過值得注意的是,密碼這一項通常是用一個*號代替的,你是看不到的。

4. 增加一個組
還記得Linux的檔案可以為同組的人、非同組的人設定不同的訪問許可權嗎?我們可以根據自己的需要建立使用者組:
groupadd 組名

5. 刪除一個組
同樣的,我們有時會需要刪除一個組,它的命令就是groupdel 組名。

6. 修改組成員
如果我們需要將一個使用者加入一個組,只需編輯/etc/group檔案,將使用者名稱寫到組名的後面。例如將newuser使用者加入到softdevelop組,只需找到softdevelop這一行:
softdevelop:x:506:user1,user2
然後在後面加上newuser,形成:
softdevelop:x:506:user1,user2,newuser
另外,在Red Hat Linux中還提供一個圖形化的使用者管理工具:userconf,透過它可以更直接地進行使用者管理

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-1018877/,如需轉載,請註明出處,否則將追究法律責任。

相關文章