Linux 中用戶和組設置
在 Linux 操作系統下,如何添加一個新用戶到一個特定的組中?如何同時將用戶添加到多個組中?又如何將一個已存在的用戶移動到某個組或者給他增加一個組?對於不常用 Linux 的人來講,記憶 Linux 那繁多的命令行操作真是件不容易的事。
在 Linux 中,增加用戶或改變用戶的組屬性可以使用 useradd 或者 usermod 命令。useradd增加一個新用戶或者更新默認新用戶信息。usermod 則是更改用戶帳戶屬性,例如將其添加到一個已有的組中。
在 Linux 用戶系統中存在兩類組。第一類是主要用戶組,第二類是附加用戶組。所有的用戶帳戶及相關信息都存儲在 /etc/passwd 文件中,/etc/shadow 和 /etc/group 文件存儲了用戶信息。
目錄 Contents
1 useradd 示例 – 增加一個新用戶到附加用戶組
2 useradd 示例 – 增加一個新用戶到主要用戶組
3 usermod 示例 – 將一個已有用戶增加到一個已有用戶組中
4 附:管理用戶(user)和用戶組(group)的相關工具或命令
useradd 示例 – 增加一個新用戶到附加用戶組?
新增加一個用戶並將其列入一個已有的用戶組中需要用到 useradd 命令。如果還沒有這個用戶組,可以先創建該用戶組。
命令參數如下:
useradd -G {group-name} username
例如,我們要創建一個新用戶 cnzhx 並將其添加到用戶組 developers 中。首先需要以 root 用戶身份登錄到系統中。先確認一下是否存在 developers 這個用戶組,在命令行輸入:
# grep developers /etc/group
輸出類似於:
developers:x:1124:
如果看不到任何輸出,那麼就需要先創建這個用戶組了,使用 groupadd 命令:
# groupadd developers
然後創建用戶 cnzhx 並將其加入到 developers 用戶組:
# useradd -G developers cnzhx
為用戶 cnzhx 設置密碼:
# passwd cnzhx
為確保已經將該用戶正確的添加到 developers 用戶組中,可以查看該用戶的屬性,使用 id 命令:
# id cnzhx
輸出類似於:
uid=1122(cnzhx) gid=1125(cnzhx) groups=1125(cnzhx),1124(developers)
前面命令中用到的大寫的 G (-G) 參數就是為了將用戶添加到一個附加用戶組中,而同時還會為此用戶創建一個屬於他自己的新組 cnzhx。如果要將該用戶同時增加到多個附加用戶組中,可以使用英文半角的逗號來分隔多個附加組名(不要加空格)。例如,同時將 cnzhx 增加到 admins, ftp, www, 和 developers 用戶組中,可以輸入以下命令:
# useradd -G admins,ftp,www,developers cnzhx
useradd 示例 – 增加一個新用戶到主要用戶組?
要增加用戶 cnzhx 到組 developers,可以使用下面的指令:
# useradd -g developers cnzhx
# id cnzhx
輸出類似於:
uid=1123(cnzhx) gid=1124(developers) groups=1124(developers)
請注意如前面的示例的區別,這裡使用了小寫字母 g (-g)作為參數,此時用戶的主要用戶組不再是 cnzhx 而直接就是 developers。
小寫字母 g (-g)將新增加的用戶初始化為指定為登錄組(主要用戶組)。此組名必須已經存在。組號(gid)即是此已有組的組號。
usermod 示例 – 將一個已有用戶增加到一個已有用戶組中?
將一個已有用戶 cnzhx 增加到一個已有用戶組 apache 中,使此用戶組成為該用戶的附加用戶組,可以使用帶 -a 參數的 usermod 指令。-a 代表 append, 也就是將用戶添加到新用戶組中而不必離開原有的其他用戶組。不過需要與 -G 選項配合使用:
# usermod -a -G apache cnzhx
如果要同時將 cnzhx 的主要用戶組改為 apache,則直接使用 -g 選項:
# usermod -g apache cnzhx
如果要將一個用戶從某個組中刪除,則
gpasswd -d user group
但是這個時候需要保證 group 不是 user 的主組。
附:管理用戶(user)和用戶組(group)的相關工具或命令?
1)管理用戶(user)的工具或命令
useradd 注:添加用戶
adduser 注:添加用戶
passwd 注:為用戶設置密碼
usermod 注:修改用戶命令,可以通過usermod 來修改登錄名、用戶的家目錄等等;
pwcov 注:同步用戶從/etc/passwd 到/etc/shadow
pwck 注:pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除 /etc/shadow 文件;
finger 注:查看用戶信息工具
id 注:查看用戶的UID、GID及所歸屬的用戶組
chfn 注:更改用戶信息工具
su 注:用戶切換工具
sudo 注:sudo 是通過另一個用戶來執行命令(execute a command as another user),su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo 能後面直接執行命令,比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現;
visudo 注:visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;
sudoedit 注:和sudo 功能差不多;
2)管理用戶組(group)的工具或命令
groupadd 注:添加用戶組;
groupdel 注:刪除用戶組;
groupmod 注:修改用戶組信息
groups 注:顯示用戶所屬的用戶組
grpck
grpconv 注:通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow ,如果/etc/gshadow 不存在則創建;
grpunconv 注:通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group ,然後刪除gshadow文件;
將一個用戶添加到某個組,即可讓此用戶擁有該組的權限。比如在配置 VPS 上的 LAMP 服務器的時候,運行網站的 apache 用戶修改的文件,如果服務器管理用戶 cnzhx(可以通過 ssh 登錄到服務器)需要修改此文件的話,就可以將 cnzhx 加入到 apache 組中達到目的。
--------------------
一、用戶登錄的時候需要驗證的是這兩個文件
檢測用戶名 Login: root 到該目錄下檢查 /etc/passwd
檢測用密碼 Passwd: 123456 到該目錄下檢查 /etc/shadow
/etc/Passwd下的 字段(每一行為一個用戶)
語法:
root:x:0:0:root:/root:/bin/bash (/etc/passwd)
x是佔位符,代表密碼
root:$1$NV0hQ/3m$nKludCy6gZOJ8WX/zADeU1:15321:0:99999:7::: (/etc/shadow)
用戶名稱:MD5: 加密後的口令:從開始到創建該用戶的時間差:兩次修改口令最小的時間間隔:兩次修改口令最大時間間隔:警告時間:過期 : 空閒時間
超出最大天數不修改該用戶會失效
加密採用默認的MD5
將passwd裡面的密碼轉存到shadow中
pwconv :將passwd文件轉換成shadow
將shadow中加密密碼返回到x位置,執行該命令 pwunconv同時/etc/shadow這個文件將不會存在了。
二、用戶的添加步驟:
第一種方法、用useradd命令
useradd name(lisi)
如果執行以下的命令:
#useradd lisi
造成的影響是:
/etc/passwd 添加一行 保存用戶名
/etc/shadow 保存密碼
/home/lisi 產生同名的目錄
[root@localhost root]# ls -a /home/lisi
. .. .bash_history .bash_logout .bash_profile .bashrc .emacs file1 .gtkrc
/etc/group 增加一行,組。
當用useradd添加用戶時在etc/group下會默認添加一行這一行是該用戶所代表的組,
默認組中是沒有成員的如下所示:
lisi:x:500:
有成員的
lisi:x:503:zhy1,zhy
第二種方法; 手動添加用戶
1)#vi /etc/passwd
Zhy2::504:504:csdnphpstudent:/home/zhy2:/bin/bash
取消shadow pwunconv
恢復shadow pwconv
在home下添加
# mkdir /home/lisi
/etc/skel 該目錄保存新用戶的腳本文件的目錄(/home/u_name中的隱含文件)
將/etc/skel目錄下的文件複製到 /home/lisi(用useradd命令這個複製操作是自動的)
/etc/login.defs---用戶環境的設置
三、手動添加用戶與用useradd添加的區別
用useradd添加的用戶因為是系統自己添加的
通過已經定義好的腳本文件將skel裡的腳本分給每一個
在/home/下新添加的用戶,這裡當讀到/etc/login.defs這個文件時
這裡設定的umask是077,所以最後創建完的目錄的權限就是700
相反手動添加的用戶,在home下添加 與上面同名的用戶目錄
#mkdir /home/zhy2 ,這時創建的該目錄的權限就不會受/etc/login.defs
的影響,它是以它的父目錄的umask值為標準,所以手動添加的用戶的權限就是
777-home的umask所得到的。
四、添加一個組
#groupadd 組名(該組名必須是一個用戶)
打開:這個目錄 /etc/group你可以看到:
組名:口令: gid 改組中的用戶(用,分隔開)如下
zhy4:x:503:zhy1,zhy
向組中添加一個成員
#gpasswd -a user group
刪除成員從組中
#gpasswd -d user group
補充:
1、不加-的切換用戶
[。。。。。lisi] su zhy
當前更換的用戶為zhy 但是目錄不變
2、加-的用戶切換
[。。。。。lisi] su - zhy
當前更換的用戶為lisi 但是目錄變為~
[。。。。。~]
這裡的~表示宿主的工作目錄
如果是 Root /root
如果是 lisi /home/lisi
如果一個目錄沒有x權限,那麼cd就不能用
如果一個目錄沒有r權限,ls無法使用
如果一個目錄沒有w權限,touch mkdir....
--------------------------
Linux 中將用戶添加到組的指令
發表於 2013-03-07 作者 H Zeng
更新於 2016-08-22
在 Linux 操作系統下,如何添加一個新用戶到一個特定的組中?如何同時將用戶添加到多個組中?又如何將一個已存在的用戶移動到某個組或者給他增加一個組?對於不常用 Linux 的人來講,記憶 Linux 那繁多的命令行操作真是件不容易的事。
在 Linux 中,增加用戶或改變用戶的組屬性可以使用 useradd 或者 usermod 命令。useradd 增加一個新用戶或者更新默認新用戶信息。usermod 則是更改用戶帳戶屬性,例如將其添加到一個已有的組中。
在 Linux 用戶系統中存在兩類組。第一類是主要用戶組,第二類是附加用戶組。所有的用戶帳戶及相關信息都存儲在 /etc/passwd 文件中,/etc/shadow 和 /etc/group 文件存儲了用戶信息。
目錄 Contents
1 useradd 示例 – 增加一個新用戶到附加用戶組
2 useradd 示例 – 增加一個新用戶到主要用戶組
3 usermod 示例 – 將一個已有用戶增加到一個已有用戶組中
4 附:管理用戶(user)和用戶組(group)的相關工具或命令
useradd 示例 – 增加一個新用戶到附加用戶組?
新增加一個用戶並將其列入一個已有的用戶組中需要用到 useradd 命令。如果還沒有這個用戶組,可以先創建該用戶組。
命令參數如下:
useradd -G {group-name} username
例如,我們要創建一個新用戶 cnzhx 並將其添加到用戶組 developers 中。首先需要以 root 用戶身份登錄到系統中。先確認一下是否存在 developers 這個用戶組,在命令行輸入:
# grep developers /etc/group
輸出類似於:
developers:x:1124:
如果看不到任何輸出,那麼就需要先創建這個用戶組了,使用 groupadd 命令:
# groupadd developers
然後創建用戶 cnzhx 並將其加入到 developers 用戶組:
# useradd -G developers cnzhx
為用戶 cnzhx 設置密碼:
# passwd cnzhx
為確保已經將該用戶正確的添加到 developers 用戶組中,可以查看該用戶的屬性,使用 id 命令:
# id cnzhx
輸出類似於:
uid=1122(cnzhx) gid=1125(cnzhx) groups=1125(cnzhx),1124(developers)
前面命令中用到的大寫的 G (-G) 參數就是為了將用戶添加到一個附加用戶組中,而同時還會為此用戶創建一個屬於他自己的新組 cnzhx。如果要將該用戶同時增加到多個附加用戶組中,可以使用英文半角的逗號來分隔多個附加組名(不要加空格)。例如,同時將 cnzhx 增加到 admins, ftp, www, 和 developers 用戶組中,可以輸入以下命令:
# useradd -G admins,ftp,www,developers cnzhx
useradd 示例 – 增加一個新用戶到主要用戶組?
要增加用戶 cnzhx 到組 developers,可以使用下面的指令:
# useradd -g developers cnzhx
# id cnzhx
輸出類似於:
uid=1123(cnzhx) gid=1124(developers) groups=1124(developers)
請注意如前面的示例的區別,這裡使用了小寫字母 g (-g)作為參數,此時用戶的主要用戶組不再是 cnzhx 而直接就是 developers。
小寫字母 g (-g)將新增加的用戶初始化為指定為登錄組(主要用戶組)。此組名必須已經存在。組號(gid)即是此已有組的組號。
usermod 示例 – 將一個已有用戶增加到一個已有用戶組中?
將一個已有用戶 cnzhx 增加到一個已有用戶組 apache 中,使此用戶組成為該用戶的附加用戶組,可以使用帶 -a 參數的 usermod 指令。-a 代表 append, 也就是將用戶添加到新用戶組中而不必離開原有的其他用戶組。不過需要與 -G 選項配合使用:
# usermod -a -G apache cnzhx
如果要同時將 cnzhx 的主要用戶組改為 apache,則直接使用 -g 選項:
# usermod -g apache cnzhx
如果要將一個用戶從某個組中刪除,則
gpasswd -d user group
但是這個時候需要保證 group 不是 user 的主組。
附:管理用戶(user)和用戶組(group)的相關工具或命令?
1)管理用戶(user)的工具或命令
useradd 注:添加用戶
adduser 注:添加用戶
passwd 注:為用戶設置密碼
usermod 注:修改用戶命令,可以通過usermod 來修改登錄名、用戶的家目錄等等;
pwcov 注:同步用戶從/etc/passwd 到/etc/shadow
pwck 注:pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除 /etc/shadow 文件;
finger 注:查看用戶信息工具
id 注:查看用戶的UID、GID及所歸屬的用戶組
chfn 注:更改用戶信息工具
su 注:用戶切換工具
sudo 注:sudo 是通過另一個用戶來執行命令(execute a command as another user),su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo 能後面直接執行命令,比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現;
visudo 注:visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;
sudoedit 注:和sudo 功能差不多;
2)管理用戶組(group)的工具或命令
groupadd 注:添加用戶組;
groupdel 注:刪除用戶組;
groupmod 注:修改用戶組信息
groups 注:顯示用戶所屬的用戶組
grpck
grpconv 注:通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow ,如果/etc/gshadow 不存在則創建;
grpunconv 注:通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group ,然後刪除gshadow文件;
將一個用戶添加到某個組,即可讓此用戶擁有該組的權限。比如在配置 VPS 上的 LAMP 服務器的時候,運行網站的 apache 用戶修改的文件,如果服務器管理用戶 cnzhx(可以通過 ssh 登錄到服務器)需要修改此文件的話,就可以將 cnzhx 加入到 apache 組中達到目的。
閱讀更多 雨神168 的文章