Linux中的用戶通常分為root用戶(超級管理員)和普通用戶,因為不同場景的可能會想要新建一些特殊用途的普通用戶,此時新建的用戶可以根據不同的使用場景將他們劃分在不同的用戶組中,然後給用戶組設置相關的許可權,使得該用戶組下的用戶都可以執行某些操作或都不能執行某些操作,以此來管理眾多的用戶。建立用戶組 ...
Linux中的用戶通常分為root用戶(超級管理員)和普通用戶,因為不同場景的可能會想要新建一些特殊用途的普通用戶,此時新建的用戶可以根據不同的使用場景將他們劃分在不同的用戶組中,然後給用戶組設置相關的許可權,使得該用戶組下的用戶都可以執行某些操作或都不能執行某些操作,以此來管理眾多的用戶。建立用戶組的目的是方便管理,以便應對複雜的使用場景,當然,也可以不用將用戶加到某個用戶組裡。本文講一些用戶和用戶組的常用操作,以及如何查看用戶和用戶組的相關信息。
一、常用用戶和用戶組操作命令
useradd命令
useradd [選項] 用戶名:添加一個用戶。
添加一個用戶之後,系統會自動生成或添加一些文件和配置:
- /etc/password:添加對應的用戶信息。
- /etc/shadow:添加對應用戶的密碼信息。
- /etc/group:添加用戶的組信息。
- /etc/gshadow:添加用戶對應組的密碼信息。
- /home/用戶名/:生成對應的用戶家目錄。
- /var/spool/mail/用戶名/:生成對應的用戶郵箱目錄。
選項:
- -u UID:手工指定用戶的UID(不建議自己手工指定)。
- -d 家目錄:手工指定用戶的家目錄(不建議自己手工指定)。
- -c 用戶說明:手工指定用戶的說明。
- -g 組名:手工指定用戶的初始組(不建議自己手工指定)。
- -G 組名:手工指定用戶的附加組,如果是指定多個組,多個組名之間使用逗號連接。
- -s shell:手工指定用戶的登錄shell,預設是/bin/bash。
註:在/etc/default/useradd中指定了useradd命令執行時的某些預設設置,比家目錄在/home下等信息,其他的一些預設信息可以在/etc/login.defs中查看。
passwd命令
passwd [選項] [用戶]:給某個用戶設置密碼,root用戶可以給任何人設置密碼。
如果沒有輸入用戶名,則表示修改當前用戶自己的密碼,但只有root用戶可以修改別人的密碼,如果不是root用戶,也根本指定不了用戶名,因為根本不允許普通用戶修改別人的密碼。
普通用戶設置自己的密碼時必須符合密碼規則,只有root用戶才能強行地隨意設置密碼。
選項:
- -S:查詢用戶密碼的密碼狀態信息(僅root用戶可用)。
- -l:暫時鎖定用戶(僅root用戶可用),該用戶就暫時不能登錄了,系統此時實際進行的操作就是在/etc/shadow文件(存放用戶密碼相關的信息)中對應用戶的密碼前加了一個感嘆號!。
- -u:解鎖用戶(僅root用戶可用),也可以手動修改/etc/shadow文件中對應用戶的密碼,刪除密碼最前面的感嘆號!即可。
- --stdin:可以通過管道符輸出的數據作為用戶的密碼,如echo "123"|passwd --stdin user1,即將123設置為user1的密碼,這個選項在使用shell腳本編程的時候最常用。
who/w命令
who:直接查看當前登錄的用戶信息。包括用戶名、登錄終端、登錄時間、登錄的主機ip(沒有值就表示本機登錄)。
登錄終端:
- tty:表示本地終端,即直接在Linux系統上登錄。
- pts:遠程登錄,即使用連接工具進行登錄。
w:查看當前登錄用戶的詳細信息。相較於who,額外的信息包括:
- 當前系統時間。
- up:系統連續運行的時間。
- 當前登錄用戶數。
- 當前系統的負載。
- IDLE:登錄用戶空閑的時間(沒有任何操作的時間)。
- JCPU:登錄用戶總計占用CPU時間。
- PCPU:登錄用戶執行操作占用的CPU時間。
- WHAT:登錄用戶當前執行的命令。
usermod/chage命令
usermod [選項] 用戶:修改一個已經存在的用戶的用戶信息。
useradd命令中支持的命令,usermod都支持,額外支持的選項有:
- -L:暫時鎖定用戶。
- -U:解鎖用戶。
chage [選項] 用戶名:修改用戶密碼狀態。
選項:
- -l:列出用戶的詳細密碼狀態。
- -d 日期:修改密碼的最後一次更改時間。通常在shell腳本中會經常使用這個選項,腳本中將這個值設置為0,這樣就會導致這個用戶第一次登陸就會被要求必須修改密碼才能使用。
- -m 天數:修改兩次密碼的間隔時間。
- -M 天數:修改密碼有效期。
- -W 天數:密碼過期前警告天數。
- -I 天數:密碼過期後寬限天數。
- -E 日期:賬號失效時間。
userdel/id/su命令
userdel [-r] 用戶名:刪除某個用戶。-r選項表示刪除用戶的同時刪除它的家目錄。
id 用戶名:查看用戶的UID和GID信息。
su [選項] 用戶名:切換用戶身份。
選項:
- -:表示連帶用戶的環境也一起切換,如su - root。
- -c:僅使用該用戶的身份執行一次命令,但不切換身份。如su - root -c "useradd user3"表示調用root用戶添加一個user3用戶。
groupadd/groupmod/groupdel/gpasswd命令
groupadd [選項] 組名:添加一個用戶組。
選項:
- -g GID:設置用戶組的GID。
groupmod [選項] 組名:修改組信息。
選項:
- -g GID:修改用戶組的GID。
- -n 新組名:修改組名。
groupdel 組名:刪除對應的用戶組。
gpasswd [選項] 組名:把用戶添加入組或從組中刪除。
選項:
- -a 用戶名:把用戶加入組。
- -d 用戶名:把用戶從組中刪除。
二、查看用戶和用戶組信息
用戶信息文件/etc/passwd
這個文件中存放著用戶的基本信息,每一行存放一個用戶的信息,有多少行就有多少個用戶。
每一行中的用戶信息使用冒號分隔,共有7個部分:
- 第1個欄位:用戶名稱。
- 第2個欄位:密碼標識,一般為x,表示這個用戶是有密碼的(真正的密碼存放在了文件/etc/shadow中),如果這個項沒有值,則表示這個用戶是沒有密碼的,即可以直接登錄而不用輸入密碼(這種不設密碼的情況只能在本機登錄,通過遠程連接的方式是無法登錄的)。
- 第3個欄位:UID,即用戶ID,用戶名和UID的關係,相當於功能變數名稱和IP的關係,IP不好記,那就記功能變數名稱,所以用戶就只需要記用戶名稱即可,不用記UID,UID是系統來識別和記憶的。
- 0:超級用戶,叫root的不一定是管理員,但UID為0的一定是管理員。
- 1-499:系統用戶(偽用戶),註意不能去修改這些用戶的東西。
- 500-65535:普通用戶。
- 第4個欄位:GUD,即用戶初始組ID。
- 初始組:指用戶一登錄就立刻擁有這個用戶組的相關許可權,每個用戶的初始組只能有一個,一般就是使用這個用戶的用戶名作為這個組的名稱(這個初始名雖然可以改,但是不建議修改)。
- 附加組:一個用戶可以屬於多個組,並擁有這些組的許可權,用戶的所屬組中,不是初始組的組就是它的附加組。
- 第5個欄位:用戶說明信息,可以不用加這個信息。
- 第6個欄位:用戶的家目錄。
- 超級用戶:/root/
- 普通用戶:/home/用戶名/
- 第7個欄位:登錄之後的Shell,預設是系統的標準Shell:/bin/bash。同時普通用戶的Shell必須為/bin/bash,否則無法登錄。如果把某個用戶的Shell指定為/sbin/nologin,表示將這個用戶禁用,不允許這個用戶登錄。
用戶密碼文件/etc/shadow
這個文件保存用戶密碼的相關信息,並且此文件的許可權為----------,即如果是普通用戶,連讀的許可權也是沒有的,當然root用戶是可以進行讀寫的。
這個文件中每一行保存一個用戶的信息,並且也是使用冒號來分隔不同的用戶信息的,共有9個欄位:
- 第1個欄位:用戶名。
- 第2個欄位:加密後的密碼。這個項如果是!!或者*表示這個用戶是沒有密碼,且不能登錄。如果想要禁用某個用戶的登錄,只需要在他的密碼前加一個!即可。
- 第3個欄位:密碼的最後一次修改日期(天),使用的是1970年1月1日到當前的天數。
- 第4個欄位:允許修改密碼的最小時間間隔。
- 第5個欄位:密碼有效期(天),指修改密碼後多少天之內有效。
- 第6個欄位:密碼到期之前的n天開始提醒用戶更改密碼,在這n天內每次登錄都會提示你更改密碼。
- 第7個欄位:密碼過期後的寬限天數。如果沒有寫,表示此密碼立即失效。密碼失效後,該用戶將不能登錄。
- 0:與不寫效果相同,即密碼過期後立即失效。
- -1:表示密碼永遠不會失效。此時會覆蓋第5個欄位有效期的設置效果。
- 第8個欄位:賬號失效時間,使用的是時間戳格式(天數)。設置了這個時間後會覆蓋前面的所有相關設置,時間到了之後此賬號會立即失效。
- 時間戳轉換為時間:執行命令如“date -d "1970-01-01 [16076] days"”即可,其中方括弧中的76076天數可自行設置。
- 時間轉換為時間戳格式:執行命令“echo $(($date --date="2014/01/06" +%s)/86400+1)”即可查看對應的時間戳(1970-01-01到今天的天數)。
- 第9個欄位:保留欄位(暫時沒有用)。
組信息文件/etc/group
這個文件存放的就是用戶的組信息,一行即代表一個組的信息,並使用冒號分隔不同組信息,共有4個欄位:
- 第1個欄位:組名。
- 第2個欄位:組密碼標識,一般為x,表示這個組是有密碼的,但是組密碼並不常用,也不推薦設置組密碼。組密碼也存放在一個影子文件中/etc/gshadow。
- 第3個欄位:GID,即組的ID。
- 第4個欄位:組中附加用戶。
組密碼文件/etc/gshadow
用於存放組密碼的相關信息,一行即代表一個組密碼的信息,並使用冒號分隔不同組密碼信息,共有4個欄位:
- 第1個欄位:組名。
- 第2個欄位:組密碼。
- 第3個欄位:組管理員用戶名。
- 第4個欄位:組中附加用戶。
用戶模板目錄
/etc/skel/:這個目錄下預設是一些隱藏文件,創建用戶時會自動將這個目錄下的所有文件拷貝至對應的用戶家目錄下,當你想在創建用戶時自動生成一些文件在對應的家目錄下,就可以將這些文件放在這個目錄下。