本文記錄linux系統用戶、組和相關設置。
用戶和用戶組
- 在 /etc/group 存儲當前系統中的用戶組信息
注意:
- 當該組內只有一個用戶,并且用戶名和組名相同時,在組列表中,包含用戶一列可以為空
2. 系統中root分組的組編號一定為0
3. 組號1~499為系統預留的組編號,一般是預留給系統安裝的軟件或者服務的編號,越早安裝的軟件或者服務的組編號越早。用戶手動創建的用戶組編號從500開始
4. 組密碼占位符,無一例外,全部用x表示
- 在 /etc/gshadow 存儲當前系統中用戶組的密碼信息
注意:
1. 如果組密碼處為“*” “!”或者為空時候,則該組沒有密碼
2. 如果組管理者為空,則表示該組內所有成員都可以管理該組
- 在 /ect/passwd 存儲當前系統中所有的用戶信息
在linux中,超級管理員root的用戶編號一定為0
- 在 /ect/shadow存儲當前系統中所有用戶的密碼信息
密碼是一個單向加密過的字符串
擁有者(user),擁有組(group),其他人(other)
- 由于Linux是一個多人多任務的系統,因此經常會出現同一臺機器同時有多個人進行操作,為了考慮每個人的隱私權以及每個人喜好的工作環境,所以文件的權限歸屬就至關重要。
- 為了保障系統的安全性和文件的隱私性,一個文件針對不同權限的賬戶有著不同的權限
- 文件權限是由一個字符串所表示,其所代表的含義為
- 文檔類型有如下表示方法: d 目錄,例如上表檔名為『.gconf』的那一行- 文檔,例如上表檔名為『install.log』那一行l 連結檔(link file)b 裝置文件里面的可供儲存的接口設備(可隨機存取裝置)c 裝置文件里面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)。
- 權限由rwx三個字幕表示,分別表示為可讀、可寫、可執行,如果沒有該權限,則用“ - ”表示,對于目錄來說,必須有x權限,否則無法讀取目錄內容
- 如果文件名前面有“ . ”,則表示這個文檔或目錄是隱藏的
相關命令
查看用戶信息
id username
我當前的命令輸出,可以查看用戶 id 、組信息:
$ id vvd
用戶id=1000(vvd) 組id=1000(vvd) 組=1000(vvd),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare),135(libvirt)
創建用戶
useradd xxx //創建一個名為xxx的用戶
該命令執行后
- 會在/etc/passwd文件中添加xxx用戶的信息
- 會在/etc/group文件中添加一個名為xxx的用戶組信息
passwd xxx //為xxx用戶設置密碼
- useradd可以使用的參數包含:
參數 |
描述 |
示例 |
-d |
設置該用戶的home目錄 |
useradd -d /home/helloworld hello //新建hello用戶,并且將其home目錄設置為/home/helloworld |
-u |
設置其userid |
useradd -u 668 hello //新建一個hello用戶,將他的id設置為668 |
-g |
設置其主組 |
useradd -g root hello //新建一個hello用戶,并將其加入root組 |
-m |
生成home目錄的文件夾 |
useradd -m hello //新建一個hello用戶,并且在默認位置申城一個hello文件夾(/home/hello),并且將/etc/skel下的文件復制到該目錄下 |
- 正常使用時建議加入 -m 參數
useradd username -m
隨后需要指定shell,不然不便于終端操作
usermod -s /bin/bash username
- 如需要額外指定 home 以外的目錄作為家目錄
useradd username -m -d /path/to/home
修改用戶信息
- usermod 命令
usermod 參數 用戶名
參數 |
描述 |
示例 |
-l |
修改新用戶名 |
usermod -l helloworld hello 將hello用戶名改為helloworld,但其home目錄不改變 |
-u |
修改用戶的userid |
usermod -u 888 hello 將hello的userid改為888 |
-d |
修改用戶的home目錄 |
usermod -d /home/new_home hello 將hello用戶的家目錄改為/home/new_home |
-g |
修改用戶的主用戶組 |
usermod -g anotherg hello 將hello用戶的組改為anotherg |
-G |
將現有用戶添加到輔助組(可以是多個) |
usermod [-G] [[GroupName1,GroupName2]] [UserName] / usermod -a -G mygroup user1 |
-L |
鎖定用戶,使其不能登錄 |
usermod -L hello 鎖定hello |
-U |
解除鎖定 |
usermod -U hello 解除鎖定hello |
-a |
添加 不修改之前的組 |
usermod -aG ssh hello 將hello用戶加入到ssh組內,不改變其他組 |
- gpasswd 命令
gpasswd 參數 用戶名 組名
gpasswd 命令用于管理 /etc/group 和 /etc/gshadow。每個組都可以有管理員、成員和密碼。
參數 |
描述 |
示例 |
-M |
將現有用戶添加到次要組或者附加組 |
gpasswd -M user1 mygroup 把 user1 添加到 mygroup 中 |
-M |
添加多個用戶到次要組或附加組中 |
gpasswd -M user2,user3 mygroup1 把 user2 和 user3 添加到 mygroup1 中 |
-d |
從組中刪除一個用戶 |
gpasswd -d user1 mygroup 從 mygroup 中刪除 user1 |
刪除用戶
userdel 參數 用戶名
參數 |
描述 |
示例 |
-r |
刪除用戶的同時將其home目錄也刪掉 |
userdel -r hello 將hello用戶連根刪掉 |
創建用戶組
groupadd 組名
修改用戶組
groupmod -n 新組名 舊組名 //修改組名
groupmod -g 新組id 舊組id 修改組ID
查看組內成員
getent group groupname
$ getent group sudo
sudo:x:27:vvd
刪除用戶組
groupdel 組名
改變文檔(目錄)的所有者(所有組)
- 改變文檔所有者 - chown命令(change owner),可使用參數 -R使得其子目錄也同時修改
- 改編文檔所有組 - chgrp命令 (change group),可使用參數 -R使得其子目錄也同時修改
- 也可以使用
chown username:group 文件名
來同時修改文檔或目錄的擁有者和所在組
修改文檔的執行權限
chmod 參數 文件名
- 可以使用如下方法直接設置文件的權限
- 可以使用如下方法直接設置文件的權限
- 直接設置代表權限的數字
chmod 777(對應權限的數字) 文件名
- 給文件添加或減去某些權限
命令 |
描述 |
chmod u+w 文件名 |
給user用戶加上w權限 |
chmod g-r 文件名 |
將group中的r權限去掉 |
chmod a+x 文件名 |
給user、group、other全部加上x權限 |
錯誤記錄
用戶登錄報錯
- 登錄時報錯:
/usr/bin/xauth: file /home/user/.Xauthority does not exist
- 錯誤原因: 添加用戶時沒有授權對應的目錄,僅僅執行了useradd user而沒有授權對應的家目錄
- 直接解決辦法如下(執行如下命令,以后就登錄到終端上就不會出現上面的錯誤信息):
chown username:username -R /home/user_dir