Linux用戶與組


轉載:https://www.kancloud.cn/chunyu/php_basic_knowledge/1882202

用戶與用戶組的關系

Linux 是多用戶多任務操作系統,也就是說,Linux 系統支持多個用戶在同一時間內登陸,不同用戶可以執行不同的任務,並且互不影響。
不同的用戶具有不同的權限,每個用戶可以在不同的權限范圍內執行不同的操作。

用戶與用戶組的關系:
1、一個用戶可以存在於一個組中(一對一關系)
2、一個用戶可以存在多個用戶組中,此用戶具有這多個組的共同權限(一對多關系)
3、多個用戶可以存在一個組中,這些用戶具有和組相同的權限(多對一關系)
4、多個用戶可以存在多個組中,也就是以上 3 種關系的擴展(多對多關系)

用戶相關的系統配置文件

/etc/group文件、/etc/gshadow文件、/etc/passwd文件、/etc/shadow文件都是有關於系統管理員對用戶和用戶組管理時相關的文件。
其中/etc/group文件存放着linux用戶組的所有信息,而/etc/gshadow是/etc/group的加密信息文件。


1、查看用戶組配置文件:cat /etc/group

用戶組的所有信息都存放在/etc/group文件中,用戶組的增加、刪除和修改實際上就是對/etc/group文件
的更新。

[root@izwz91quxhnlkan8kjak5hz ~]# cat /etc/group | grep www
www:x:1001:

其含義依次為:

  • 第一列:群組名稱
  • 第二列:群組密碼(通常不需要設定,密碼被記錄在/etc/gshadow)
  • 第三列:GID,即群組ID
  • 第四列:附加組(以,來分割,該賬戶沒有附加組所以為空)

2、查看用戶組加密信息:cat /etc/gshadow

etc/gshadow是/etc/group的加密資訊文件

[root@izwz91quxhnlkan8kjak5hz ~]# cat /etc/gshadow | grep www
www:!::

其具體含義為:groupname:password:admin,admin,...:member,member,...

  • 第一列:用戶組
  • 第二列:用戶組密碼,這個段可以是空的或!,如果是空的或有!,表示沒有密碼;
  • 第三列:用戶組管理者,這個字段也可為空,如果有多個用戶組管理者,用,號分割;
  • 第四列:組成員,如果有多個成員,用,號分割;

3、查看用戶密碼配置:cat /etc/passwd

Linux系統中的每個用戶都在“/etc/passwd”文件中有一個對應的記錄行,它記錄了這個用戶的基本屬性。當用戶登錄時,系統會查詢這個文件,確認用戶的UID並驗證用戶口令。

[root@izwz91quxhnlkan8kjak5hz ~]# cat /etc/passwd |grep root
root:x:0:0:root:/root:/bin/bash

其具體含義為:

  • 第一列:login name:登錄用名
  • 第二列:passwd:成占位符x(在早期版本這里存的是密碼),真正的密碼文件已經移動到/etc/shodow下
  • 第三列:UID:用戶身份編號
  • 第四列:GID:登錄默認所在組編號
  • 第五列:GECOS:用戶全名或注釋
  • 第六列:home directory:用戶主目錄
  • 第七列:shell:用戶默認使用shell

4、查看用戶密碼配置:cat /etc/shadow

文件“/etc/shadow”與“/etc/passwd”類似,由若干個字段組成,字段之間用“:”分隔開。由於文件“/etc/shadow”中的記錄行是由pwconv命令根據“/etc/passwd”中的數據自動產生,因此其記錄行與“/etc/passwd”中的記錄一 一對應。

[root@izwz91quxhnlkan8kjak5hz ~]# cat /etc/shadow | grep root
root:$6$6UV6w/7wtY$Z7Py5UbB/A6bG.4WmPp8cntsqlE4gtz5sOPctGyv8w2cVk8qQ0pHujBFiUfdxW1WI7ZcCCR0DGT8oqpDQzn2U.:18356:0:99999:7:::
www:!!:17881:0:99999:7:::
daemon:*:17110:0:99999:7:::

其具體含義為:

  • 第一列:用戶名
  • 第二列:口令,即加密之后的密碼,若為空則說明該用戶未設置口令;星號說明該用戶已被鎖定;雙感嘆號說明該用戶密碼已過期;$6$開頭的,說明采用SHA-512加密方式;$1$開頭的,說明采用MD5加密方式,$2$開頭的,說明采用Blowfish加密方法;$5$開頭的,說明采用SHA-256加密方式。
  • 第三列:最后一次修改時間,表示從某個時刻起,到用戶最后一次修改口令時的天數。時間起點對不同的系統可能不一樣。在 Linux系統中,這個時間起點是1970年1月1日。
  • 第四列:最小時間間隔,指的是兩次修改口令之間所需的最小天數
  • 第五列:最大時間間隔,指的是口令保持有效的最大天數。
  • 第六列:警告時間,表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
  • 第七列:不活動時間,表示的是用戶沒有登錄活動,但賬號仍然能保持有效的最大天數。
  • 第八列:失效時間,如果使用該字段,則相應賬號的生存期期滿后,該賬號將不再是一個合法的賬號,無法登錄。

用戶相關命令

1、新增用戶:useradd [option] [option] [用戶帳號]

  • -c 加上備注文字。備注文字會保存在passwd的備注欄位中。
  • -d 指定用戶登入時的起始目錄。
  • -D 變更預設值.
  • -e 指定帳號的有效期限。
  • -f 指定在密碼過期后多少天即關閉該帳號。
  • -g 指定用戶所屬的群組。
  • -G 指定用戶所屬的附加群組。
  • -m 自動建立用戶的登入目錄。
  • -M 不要自動建立用戶的登入目錄。
  • -n 取消建立以用戶名稱為名的群組.
  • -r 建立系統帳號。
  • -s 指定用戶登入后所使用的shell。
  • -u 指定用戶ID。
命令 注釋
useradd guset 添加用戶guest
useradd -d /home/myd guest 新增用戶指定home目錄

2、新增用戶:adduser [option] [賬號]

useradd與adduser的區別:
centos系統下,useradd與adduser沒有區別,都是用於新增用戶,在home目錄下創建同名目錄,創建用戶組,沒有設置密碼,需要使用passwd命令修改密碼。
Ubuntu系統:

  • useradd在使用該命令創建用戶是不會在/home下自動創建與用戶名同名的用戶目錄,而且不會自動選擇shell版本,也沒有設置密碼,那么這個用戶是不能登錄的,需要使用passwd命令修改密碼
  • adduser在使用該命令創建用戶是在/home下自動創建與用戶名同名的用戶目錄,系統shell版本,會在創建時會提示輸入密碼,更加友好
  • userdel只能刪除用戶,並不會刪除相關的目錄文件。userdel -r 可以刪除用戶及相關目錄

3、刪除用戶:userdel [-r] [賬號]

  • -r  刪除用戶登入目錄以及目錄中所有文件。

4、修改用戶賬號:usermod [option] [用戶賬號]

  • -c 修改用戶帳號的備注文字。
  • -d 修改用戶登入時的目錄。
  • -e 修改帳號的有效期限。
  • -f 修改在密碼過期后多少天即關閉該帳號。
  • -g 修改用戶所屬的群組。
  • -G 修改用戶所屬的附加群組。
  • -l 修改用戶帳號名稱。
  • -L 鎖定用戶密碼,使密碼無效。
  • -s 修改用戶登入后所使用的shell。
  • -u 修改用戶ID。
  • -U 解除密碼鎖定。
命令 注釋
usermod -d /home/hnlinux guset 更改用戶目錄
usermod -s /usr/sbin/nologin guest 更改用戶shell值,拒絕系統用戶登錄

5、更改密碼:passwd [option] [用戶賬號]

  • -d 刪除密碼
  • -f 強迫用戶下次登錄時必須修改口令
  • -w 口令要到期提前警告的天數
  • -k 更新只能發送在過期之后
  • -l 停止賬號使用
  • -S 顯示密碼信息
  • -u 啟用已被停止的賬戶
  • -x 指定口令最長存活期
  • -g 修改群組密碼
  • 指定口令最短存活期
  • -i 口令過期后多少天停用賬戶
命令 注釋
passwd -S guset 顯示用戶密碼
passwd guest 修改密碼

6、切換用戶:su [option] [用戶賬號 [argument] ]

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

  • -f 或 --fast 不必讀啟動檔(如 csh.cshrc 等),僅用於 csh 或 tcsh
  • -m -p 或 --preserve-environment 執行 su 時不改變環境變數
  • -c command 或 --command=command 變更為帳號為 USER 的使用者並執行指令(command)后再變回原來使用者
  • -s shell 或 --shell=shell 指定要執行的 shell (bash csh tcsh 等),預設值為 /etc/passwd 內的該使用者(USER) shell
  • --help 顯示說明文件
  • --version 顯示版本資訊
  • - -l 或 --login 這個參數加了之后,就好像是重新 login 為該使用者一樣,大部份環境變數(HOME SHELL USER等等)都是以該使用者(USER)為主,並且工作目錄也會改變,如果沒有指定 USER ,內定是 root
  • USER 欲變更的使用者帳號
  • ARG 傳入新的 shell 參數
命令 注釋
su -c whoami test 切換用戶到test,並顯示當前登錄的用戶名,再自動切換回原使用者

7、查看用戶信息:finger [option] [用戶賬號]

finger命令用於顯示用戶信息:login name、User name、Home directory、shell、login status、mail status、plan 等;使用前需要先進行命令安裝 yum -y install finger
option:

  • -l  多行顯示。
  • -s  單行顯示。這個選項只顯示登入名稱、真實姓名、終端機名稱、閑置時間、登入時間、辦公室號碼及電話號碼。如果所查詢的使用者是遠端服務器的使用者,這個選項無效。
命令 注釋
finger -l 顯示當前用戶信息
finger -l guest 顯示guest用戶信息

8、顯示目前登入系統的用戶信息:w [option][用戶名稱]

  • -f  開啟或關閉顯示用戶從何處登入系統。
  • -h  不顯示各欄位的標題信息列。
  • -l  使用詳細格式列表,此為預設值。
  • -s  使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。
  • -u  忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
  • -V  顯示版本信息。
// w命令 顯示目前所有登錄系統的用戶
[root@iZbp1bum6107bp8mgzkeunZ ~]# w
 16:43:16 up 109 days, 22:11,  2 users,  load average: 0.04, 0.18, 0.19
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    113.87.161.89    12:19    4.00s  0.39s  0.00s w
root     pts/1    113.87.161.89    12:19    4:24m 22.42s 22.42s top

// 使用 tty 命令 查看自己會話id
[root@iZbp1bum6107bp8mgzkeunZ ~]# tty
/dev/pts/0

// 終止用戶會話:使用pkill命令殺掉相應的會話id
[root@iZbp1bum6107bp8mgzkeunZ ~]# pkill -9 -t pts/1

9、查看登錄的用戶:who [option] [用戶名稱]

w和who命令的區別:w命令顯示目前登入系統的用戶有哪些人,以及他們正在執行的程序;who命令僅顯示當前登錄的用戶。
option:

  • -H 或 --heading:顯示各欄位的標題信息列;
  • -i 或 -u 或 --idle:顯示閑置時間,若該用戶在前一分鍾之內有進行任何動作,將標示成"."號,如果該用戶已超過24小時沒有任何動作,則標示出"old"字符串;
  • -m:此參數的效果和指定"am i"字符串相同;
  • -q 或--count:只顯示登入系統的帳號名稱和總人數;
  • -s:此參數將忽略不予處理,僅負責解決who指令其他版本的兼容性問題;
  • -w 或-T或--mesg或--message或--writable:顯示用戶的信息狀態欄;
  • --help:在線幫助;
  • --version:顯示版本信息。
[root@izwz91quxhnlkan8kjak5hz home]# who -T -H
名稱     線路       時間           備注
root     + pts/0        2020-08-23 12:19 (113.87.161.89)
root     + pts/1        2020-08-23 12:19 (113.87.161.89)

10、顯示當前用戶名:whoami

[root@izwz91quxhnlkan8kjak5hz /]# whoami
root

11、顯示當前登錄的用戶名稱:logname

[root@izwz91quxhnlkan8kjak5hz /]# logname
root

12、顯示最近登錄的用戶信息:last [option]

  • -R 省略 hostname 的欄位
  • -num 展示前 num 個
  • username 展示 username 的登入訊息
  • tty 限制登入訊息包含終端機代號
命令 注釋
last -5 展示前五個信息
last -5 root 展示root用戶前五條登錄信息

13、顯示登錄系統失敗的用戶信息:lastb [option]

  • -a  把從何處登入系統的主機名稱或IP地址顯示在最后一行。
  • -d  將IP地址轉換成主機名稱。
  • -f  指定記錄文件。
  • -n或-  設置列出名單的顯示列數。
  • -R  不顯示登入系統的主機名稱或IP地址。
  • -x  顯示系統關機,重新開機,以及執行等級的改變等信息。
命令 注釋
lastb -5 展示前五條登錄失敗的用戶信息

14、切換用戶:su [option] [-] [USER [參數]...]

option:

  • -m, -p, --preserve-environment 不重置環境變量
  • -g, --group <組> 指定主組
  • -G, --supp-group <組> 指定一個輔助組
  • -, -l, --login 使 shell 成為登錄 shell
  • -c, --command <命令> 使用 -c 向 shell 傳遞一條命令
  • --session-command <命令> 使用 -c 向 shell 傳遞一條命令,而不創建新會話
  • -f, --fast 向shell 傳遞 -f 選項(csh 或 tcsh)
  • -s, --shell 若 /etc/shells 允許,則運行 shell
  • -h, --help 顯示此幫助並退出
  • -V, --version 輸出版本信息並退出
命令 解析
su - postgres 變更帳號為 postgres 並改變工作目錄至 postgres 的家目錄(home dir)
su postgres -c 'cat /etc/centos-release' 變更帳號為 postgres 並在執行 特定的命令后退出變回原用戶

用戶組相關命令

1、修改某個目錄或文件的用戶名和用戶組:chown [-cfhvR] [--help] [--version] user[:group] filename

這個指令只有是由系統管理者(root)所使用

  • user : 新的文件擁有者的使用者 ID
  • group : 新的文件擁有者的使用者組(group)
  • -c : 顯示更改的部分的信息
  • -f : 忽略錯誤信息
  • -h :修復符號鏈接
  • -v : 顯示詳細的處理信息
  • -R : 處理指定目錄以及其子目錄下的所有文件
  • --help : 顯示輔助說明
  • -version : 顯示版本
命令 注釋
chown -R www:www * 將目前目錄下的所有文件與子目錄的擁有者皆設為 www,群體的使用者 www
chown www:www file1.txt 將文件 file1.txt 的擁有者設為 www,群體的使用者 www

2、新增用戶組:groupadd [-g gid [-o]] [-r] [-f] 用戶組名

  • -g:指定新建工作組的 id;
  • -r:創建系統工作組,系統工作組的組ID小於 500;
  • -K:覆蓋配置文件 "/ect/login.defs";
  • -o:允許添加組 ID 號不唯一的工作組。
  • -f,--force: 即使組群已經存在,還是強制創建組群。當與 -g 一起使用,並且指定的GID_MIN已經存在時,選擇另一個唯一的GID(即-g關閉)。
命令 注釋
groupadd -g 344 runoob 創建一個新的組,並添加組 ID
groupadd -f test 強制創建用戶組

3、刪除用戶組:groupdel [用戶組]

命令 注釋
groupadd test 刪除test用戶組

4、修改用戶組:groupmod [option] [用戶組名稱]

  • -g  設置欲使用的群組識別碼。
  • -o  重復使用群組識別碼。
  • -n  設置欲使用的群組名稱。
命令 注釋
groupmod -n test test1 修改用戶組名

5、查看用戶所屬用戶組:groups [用戶]

[root@izwz91quxhnlkan8kjak5hz /]# groups root guest
root : root
guest : guest


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM