一、linux用戶與組管理的基本介紹
1、任何一個用戶想要使用Linux系統都要向管理員申請一個賬號,對這些賬號的管理即是對用戶的管理,所謂組,就是多個賬號的集合。用戶和組管理可以提高用戶的管理效率、工作效率以及系統的安全性,比如將同一個部門的成員放在一個組里并設置權限,這樣可有效的對資源共享,同時可以避免其他部門的人惡意破壞。
2、用戶和組的管理內容一般有如下幾點:
用戶賬號的增加、刪除和權限的修改; 組賬號的增加、刪除和權限的修改,組成員的添加與刪除; 用戶賬號密碼和組賬號密碼的管理;
3、用戶可以分為管理員和普通用戶,普通用戶又可以細分為系統用戶和登錄用戶。Linux系統并不是通過用戶名來識別用戶的,而是通過用戶的ID號(UID)。系統管理員的ID號為0,普通用戶的可用ID號為1至65535,其中系統用戶的可用ID號在CentOS6中為1-499,在CentOS中為1-999;登錄用戶的可用ID號在CentOS6中為500及以上,在CentOS中為1000及以上。
4、組對應用戶可以分為管理員組和普通組,普通組又可以分為系統組和普通組,系統也是通過ID號來識別用戶組的其組號與上面的用戶ID號對應。對于一個用戶來說是可以有多個組的,因此,組還可以分為用戶的基本組(主組)和附加組?;窘M組名和用戶名相同,且只有一個用 戶,基本組以外的組屬于用戶的附加組,用戶只能有一個基本組,附加組可以有多個。
二、用戶和組的相關配置文件的介紹
1、/etc/passwd
此文件記錄的是Linux用戶的基本信息,以冒號“:”分為7個字段,每個字段代表不同的意義,了解其格式我們可以查看man手冊:
account:password:UID:GID:GECOS:directory:shell account:用戶名 password:用戶密碼,早期的用戶密碼是放在/etc/passwd文件(只有管理員可以讀?。┲械?,但是由于所有人都可以讀取此文件,很不安全,因此后來就將這個字段的密碼數據改放到/etc/shadow文件中,此字段用X字母表示 UID:用戶ID GID:組ID GECOS:用戶的注釋信息 directory:用戶的家目錄 shell:用戶默認登錄的shell
以root賬號為例:
root:x:0:0:root:/root:/bin/bash
2、/etc/shadow
此文件記錄的是用戶的密碼信息,以冒號“:”分為9個字段,如下:
login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field login name:登錄用戶名稱 encrypted password:加密的密碼,如果此字段的第一個字符是“*”或“!”,表示此賬號被鎖定,不能登錄系統 date of last password change:最近可以改動密碼的日期,以1970年1月1日開始以天為單位 minimum password age:密碼不可改動的天數,如果此字段為0則表示隨時可以修改密碼 maximum password age:密碼需要重新修改的日期,默認此字段為99999,表示99999天后必須重新更改密碼 password warning period:密碼需要重新修改期限前的警告期,比如99999天后必須修改密碼,但是系統會提前告知用戶,默認提前7天 password inactivity period:密碼過期的寬限時間,指定密碼過期后幾天將被禁用,但在此間賬號任然可以登錄 account expiration date:密碼被禁用的日期,從1970年1月1日算起,以天為單位,這個賬號在此字段規定的日期之后,將無法再使用。 reserved field:保留字段
以root為例:
root:$6$JPIUZBv/rrjJRRvU$8oTHpJ04gHA7iwWK7Ea6DMSQJmo01JJd4ClwJUEMFeyavOPdxFRpGpmjzYZd4PZNMQpK4qot4acCyyRlV6.hP.:17002:0:99999:7:::
3、/etc/group
此文件記錄的是用戶組的相關信息,以冒號“:”分為4個字段,如下:
group_name:passwd:GID:user_list group_name:用戶組名稱 passwd:用戶組密碼,通常不用設定,因為密碼是被記錄在/etc/gshadow文件中 GID:用戶組ID user_list:組成員
以root為例:
root:x:0:gentoo
4、/etc/gshadow
此文件記錄的是用戶組的密碼信息,以冒號“:”分為4個字段,如下:
group name:encrypted password:administrators:members group name:組賬號 encrypted password:加密的組密碼 administrators:組管理員 members:組成員
以root為例:
root:::gentoo
5、管理員可以通過修改以上4個文件來對用戶和組進行管理,同時也可以使用命令對用戶和組進行管理。
三、用戶管理命令的介紹
1、useradd
功能:
創建系統新用戶
語法:
useradd [options] LOGIN useradd -D useradd -D [options]
選項:
-u:指定用戶的UID -o:不檢查UID的唯一性。配合-u選項使用,強制指定UID,即使UID已存在 -g:指定用戶的基本組,可以用組名或GID,組必須事先存在 -c:添加用戶的注釋信息 -d:指定用戶登錄時進入的目錄,即主目錄,事先不存在會自動創建,但是家目錄的父目錄必須存在 -e:指定賬號的有效期限,格式為:YYYY-MM-DD -f:指定賬號過期幾天后永久鎖定,0表立刻鎖定,-1表示關閉此功能 -s:指定用戶登錄的默認shell -G:指定用戶的附加組,多個組則用逗號隔開,組必須事先存在 -N:不創建用戶的主組,使用users組做為其主組 -r:創建系統用戶,系統用戶默認不會創建家目錄,可以配合-m選項實現 -M:強制不創建家目錄 -D:不接選項為顯示當前系統預設值,接選項為修改給系統預設值,可接的選項如下: -b:修改新用戶的默認家目錄,若使用-d選項后此選項無效 -e:修改新賬號默認的停止日期(有效期限) -f:修改新賬號默認的鎖定日期 -g:修改新用戶的組,必須事先存在 -s:修改新用戶的默認shell 注意:-D選項修改的內容會被記錄在/etc/login.defs文件中,因此是永久生效的
示例:
新建了一個用戶haha,該用戶的登錄Shell是/bin/sh,同時又屬于bin和root用戶組,UID為2048,家目錄為/testdir/haha [root@localhost ~]# useradd -G bin,root -s /bin/sh -d /testdir/haha -u 2048 haha
2、usermod
功能:
修改用戶賬號屬性
語法:
usermod [options] LOGIN
選項:
-u:修改用戶UID -g:修改用戶GID -G:新附加組(且組需事先存在),原來的附加組將會被覆蓋;若保留原有組,則要同時使用-a 選項, -s:修改用戶的默認shell -c:添加新的注釋信息 -d:新家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;若要創建新家目錄并移動原家數據,同時使用-m選項 -l:修改用戶命名 -L:鎖定用戶,即在/etc/shadow第二個字段最前面添加“!” -U:解鎖用戶,即將/etc/shadow第二個字段最前面的“!”刪除 -e:指明用戶賬號過期日期,格式為YYYY-MM-DD -f:設定非活動期限,即用停權期限
說明:
usermod命令不可以修改正在線上的用戶的名稱,當usermod用來改變UID時,必須確認用戶沒在電腦上執行任何程序。
示例:
將用戶haha添加到用戶組users中,同時不離開其他用戶組 [root@localhost ~]# usermod -aG users haha
3、userdel
功能:
刪除用戶
語法:
userdel [options] LOGIN
選項:
-f:強制刪除用戶,即使用戶已登錄 -r:刪除用戶的同時刪除與用戶相關的所有文件
示例:
[root@localhost ~]# userdel -r gentoo
注意:請不要輕易用-r選項,如果用戶目錄下有重要的文件,在刪除前請備份。
4、passwd
功能:
修改用戶的密碼信息,只有管理員可以修改指定用的密碼信息,其他普通用戶只能修改自己的密碼。
語法:
passwd [option] [username]
選項:
-l:鎖定指定用戶的密碼 -u:解定指定用戶的密碼 -e:強制用戶下次登錄時修改密碼 -n:指定用戶密碼的最短使用期限 -x:指定用戶密碼的最大使用期限 -w:提前多少天警告用戶修改密碼 -i:用戶停權的期限 -S:顯示指定用戶的信息,包括加密算法 -k:設置密碼過期后才能修改密碼,即保持用戶密碼不過期 -g:修改組密碼 -d:刪除密碼,只有管理員才有權限 --stdin:從標準輸入接收并設置用戶密碼,如下: echo "PASSWORD" | passwd --stdin USERNAME
示例:
鎖定用戶user1密碼,將用戶sam的密碼刪除 [root@localhost ~]# passwd -l user1 ; passwd -d sam
5、chage
功能:
修改用戶密碼過期信息
語法:
chage [options] LOGIN
選項:
-d:上一次修改密碼的日期,其格式為YYYY-MM-DD,如果設置為0則表示此用戶在下次登錄時必須修改密碼 -E:設置密碼到期的日期,超過此天用戶密碼則被鎖定(設置的是/etc/shadow文件的第8字段) -I:設定停滯時間,超過此時間段賬號將不可用,(設置的是/etc/shadow文件的第7字段) -m:密碼可以修改的最小天數,設置為0時表示任何時候都可以修改 -M:密碼有效的最大天數 -W:密碼到期,提前幾天警告 -l:顯示用密碼設置的信息
示例:以我的系統為例
(1)[root@localhost ~]# chage -l root 最近一次密碼修改時間 :從不 密碼過期時間 :從不 密碼失效時間 :從不 帳戶過期時間 :從不 兩次改變密碼之間相距的最小天數 :0 兩次改變密碼之間相距的最大天數 :99999 在密碼過期之前警告的天數 :7 (2)[root@localhost ~]# chage -I 5 user1 [root@localhost ~]# chage -l user1 最近一次密碼修改時間 :8月 02, 2016 密碼過期時間 :10月 01, 2016 密碼失效時間 :10月 06, 2016 帳戶過期時間 :1月 01, 1970 兩次改變密碼之間相距的最小天數 :0 兩次改變密碼之間相距的最大天數 :60 在密碼過期之前警告的天數 :7
6、finger
功能:
用戶信息查找程序。單獨執行finger指令,它會顯示本地主機現在所有登錄用戶的信息。如果要查詢遠程主機的用戶信息,需要使用user@host的格式
語法:
finger [-lmsp] [user ...] [user@host ...]
選項:
-l:列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的Shell,登入時間,轉信地址,電子郵件狀態,還有計劃文件和方案文件內容; -m:不查找用戶的真實姓名; -s:列出該用戶的帳號名稱,真實姓名,登入終端機,閑置時間,登入時間以及地址和電話; -p:列出該用戶的帳號名稱,真實姓名,用戶專屬目錄,登入所用的Shell,登入時間,轉信地址,電子郵件狀態,但不顯示該用戶的計劃文件和方案文件內容
示例:
[root@localhost ~]# finger linuxpao Login: linuxpao Name: Directory: /home/linuxpao Shell: /bin/bash On since Tue Aug 2 16:25 (CST) on tty3 6 minutes 47 seconds idle New mail received Fri Jul 29 21:19 2016 (CST) Unread since Wed Jul 20 17:51 2016 (CST) No Plan.
7、chfn
功能:
修改finger命令顯示的信息
語法:
chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
選項:
-f:設置用戶真實姓名 -o:設置用戶的辦公室地址 -p:設置用戶的辦公室電話 -h:設置用戶的家庭電話
示例:
[root@localhost ~]# chfn Changing finger information for root. Name [root]: xiaobao Office []: 北京三里屯 Office Phone []: 010020 Home Phone []: 12345678 Finger information changed.
8、chsh
功能:
修改過用戶的登錄shell
語法:
chsh [-s shell] [-l] [-u] [-v] [username]
選項:
-s:修改用戶的shell -l:打印當前系統支持的shell(即/etc/shells文件記錄的shell)
示例:
(1)查看當前系統支持的shell [root@localhost ~]# chsh -l /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh (2)修改用戶haha的shell為/bin/csh [root@localhost ~]# chsh -s /bin/csh haha Changing shell for haha. Shell changed.
四、用戶組管理命令的介紹
1、groupadd
功能:
創建一個新組。 組名必須以小寫字母或者下劃線開頭,跟隨小寫字母、下劃線或短橫線??梢杂擅涝柦Y束。用正則表達式就是:[a-z_][a-z0-9_-]*[$]? 組名最長為 16 個字符。
語法:
groupadd [選項] group
選項:
-g:指定新組的GID -o:需與-g選項連用,此選項允許添加一個使用非唯一 GID 的組。 -r: 創建一個系統組 -K:覆蓋/etc/login.defs文件的默認值
示例:
增加了一個新系統組xixi,同時指定新組的組標識號是222 [root@localhost ~]# groupadd -r 222 xixi [root@localhost ~]# tail -1 /etc/group xixi:x:222:
2、groupmod
功能:
修改用戶組相關信息
語法:
groupmod [選項] GROUP
選項:
-n:修改用戶組的名稱 -g:修改用戶組的GID -o:與-g選項連用,表示強制使用某個已經存在的組ID號
示例:
將組xixi的標識號改為10000,組名修改為xixihaha [root@localhost ~]# groupmod -g 10000 -n xixihaha xixi [root@localhost ~]# getent group xixihaha xixihaha:x:10000:
3、groupdel
功能:
刪除一個組
語法:
groupdel [選項] GROUP
說明:
不能移除現有用戶的主組。在移除此組之前,必須先移除此用戶
示例:
刪除user1組(用戶user1已刪除) [root@localhost ~]# groupdel user1
4、gpasswd
功能:
管理用戶組,是組文件/etc/group和/etc/gshadow的管理工具
語法:
gpasswd [選項] group
選項:
-a:向group添加新用戶 -d:從group刪除用戶 -r:刪除組密碼 -A:指定組管理員 -M:指定組成員
示例:
將用戶haha,sarah加入admins組 [root@localhost ~]# gpasswd -M haha,sarah admins [root@localhost ~]# tail /etc/group tcpdump:x:72: linuxpao:x:500: admins:x:502:haha,sarah
5、newgrp
功能:
臨時登錄到一個新組
語法:
newgrp [-] [group]
示例:
如果用戶本不屬于某組,則需要組密碼,如下示例 [root@localhost ~]# id haha uid=2048(haha) gid=2048(haha) groups=2048(haha),0(root),1(bin),100(users),502(admins) [root@localhost ~]# su - haha [haha@localhost ~]$ newgrp admins [haha@localhost ~]$ id uid=2048(haha) gid=502(admins) groups=502(admins),0(root),1(bin),100(users),2048(haha) [haha@localhost ~]$ newgrp harry(組) Password:
6、groupmems
功能:
管理和查看主組成員
語法:
groupmems -a user_name | -d user_name | [-g group_name] | -l | -p
選項:
-a:將一個用戶添加到組成員列表 -d:從組成員列表中刪除用戶 -g:超級用戶可以指定修改哪個組的組成員列表,需要配合其他幾個選項使用 -l:列出組成員 -p:從組成員列表中刪除所有用戶
示例:
顯示bin組的成員 [root@localhost ~]# groupmems -l -g bin bin daemon haha 向bin組添加成員linuxpao [root@localhost ~]# groupmems -a linuxpao -g bin [root@localhost ~]# groupmems -l -g bin bin daemon haha linuxpao
7、groups
功能:
查看用戶所屬組
語法:
groups [OPTION]... [USERNAME]...
示例:
顯示haha用戶所在的組 [root@localhost ~]# groups haha haha : haha root bin users admins
五、用戶與組管理的相關命令補充
1、newusers
功能:
批量更新和創建新用戶
語法:
newusers [選項] [文件]
選項:
-c:使用指定的方法加密密碼,可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512,前提是您的 libc 支持這寫方法 -r:創建一個系統賬戶 -s:使用指定次數的輪轉來加密密碼,值 0 表示讓系統為加密方法選擇默認的輪轉次數 (5000),默認,輪轉數由 /etc/login.defs 文件中的 SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS變量確定
文件格式:
必須是/etc/passwd文件的格式,如下: pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell 對應 用戶名:密碼:UID:GID:GECOS:家目錄:登錄shell
示例:
創建文件user.txt,以批量添加用戶haha1,haha2,haha3. vim user.txt(以下是文件內容) haha1:x:3001:3001::/home/haha1:/bin/bash haha2:x:3002:3002::/home/haha2:/bin/bash haha3:x:3003:3003::/home/haha3:/bin/bash ------------------------------------------ [root@localhost testdir]# newusers user.txt (批量創建) [root@localhost testdir]# tail -3 /etc/passwd (查看創建結果) haha1:x:3001:3001::/home/haha1:/bin/bash haha2:x:3002:3002::/home/haha2:/bin/bash haha3:x:3003:3003::/home/haha3:/bin/bash
2、chpasswd
功能:
批量更新用戶密碼
語法:
chpasswd [選項]
格式:
user_name:password,默認必須明文提供密碼,然后由 chpasswd 加密
選項:
-c:使用指定的方法加密密碼 -e:提供的密碼是已經加密了的 -m:如果提供的密碼沒有加密,則使用 MD5 加密而不是 DES -s:使用指定次數的輪轉來加密密碼
示例:
創建文件passwd.txt,以批量添加用戶haha1,haha2,haha3的密碼,算法使用MD5。 vim passwd.txt (以下為文本內容) haha1:123456 haha2:qwerty haha3:asdfgh ----------------------------------------- [root@localhost testdir]# cat passwd.txt | chpasswd -c MD5(批量加密) [root@localhost testdir]# tail -3 /etc/shadow (加密結果) haha1:$1$Epulz/Ew$.VMMX.uodFeo7wOay6slU.:17015:0:99999:7::: haha2:$1$YMvrS/Ks$S5aDmDuaRwG3NsOe4z7wS1:17015:0:99999:7::: haha3:$1$hwyABoHg$tY0ZP4xmRQ.pwmkuMKiXD0:17015:0:99999:7:::
3、id
功能:
顯示真實有效的用戶和組ID號
語法:
id [OPTION]... [USER]
選項:
-u:顯示用戶UID -g:顯示用戶主組的GID -G:顯示用戶所屬附加組的GID -n:顯示組名稱而非數字,與-ugG 一起使用 -r:顯示真實ID 而非有效ID,與-ugG 一起使用 -Z:僅顯示當前用戶的安全環境
示例:
顯示haha的用戶ID和所有組ID [root@localhost testdir]# id haha uid=2048(haha) gid=2048(haha) groups=2048(haha),0(root),1(bin),100(users),502(admins)
4、su
功能:
切換用戶或以其他用戶身份執行命令
語法:
su [options...] [-] [user [args...]]
選項:
-l:使用新用戶的所有相關環境設定文件,相當于 su - username -m:表示使用目前的環境設定,而不重新讀取新用戶的設定文件 -c:僅執行一次命令,所以 -c 后面可以加上命令 -s:指定要執行的shell
示例:
使用帳號為root并在執行ls指令后退出變回原使用者 [root@localhost testdir]# su -c ls root(需要注意文件權限問題) bc file haha ls passwd.txt uset.txt cat file1 lost+found [root@localhost testdir]#
5、getent
功能:
用來察看系統的數據庫中的相關記錄
語法:
getent database [key ...]
datebase包括的列表:
ahosts;ahostsv4;ahostsv6;aliases;ethers;group;gshadow;hosts;initgroups; netgroup;networks;passwd;protocols;rpc;services;shadow
示例:
使用命令getent查看Linuxpao用戶在/etc/passwd文件中信息 [root@localhost testdir]# getent passwd linuxpao linuxpao:x:500:500::/home/linuxpao:/bin/bash
6、pwconv和pwunconv
功能:
pwconv:開啟用戶的投影密碼 pwunconv:關閉用戶的投影密碼
示例:
[root@localhost testdir]# getent passwd haha haha:x:2048:2048::/testdir/haha:/bin/csh [root@localhost testdir]# getent shadow haha haha:$6$3X8z.cbV$khAmbdajf7fyqZaNtRZWKBlRAaKuPUm6pvGIyvfhJfSMObQVX08k/6wUoksDDc/G71UhxBUNBeO0/Waa.hUPN1:17015:0:99999:7::: -----------以上是關閉用戶的投影密碼前haha用戶的/etc/passwd和/etc/shadow [root@localhost testdir]# pwunconv (關閉投影密碼) [root@localhost testdir]#getent passwd haha (可以看到/etc/shadow密碼移到了/etc/passwd) haha:$6$3X8z.cbV$khAmbdajf7fyqZaNtRZWKBlRAaKuPUm6pvGIyvfhJfSMObQVX08k/6wUoksDDc/G71UhxBUNBeO0/Waa.hUPN1:2048:2048::/testdir/haha:/bin/csh [root@localhost testdir]# cat /etc/shadow | grep haha(提示/etc/shadow不存在) cat: /etc/shadow: No such file or directory ------------- [root@localhost testdir]# pwconv (開啟投影密碼,恢復系統默認狀態) [root@localhost testdir]# getent shadow haha haha:$6$3X8z.cbV$khAmbdajf7fyqZaNtRZWKBlRAaKuPUm6pvGIyvfhJfSMObQVX08k/6wUoksDDc/G71UhxBUNBeO0/Waa.hUPN1:17015:0:99999:7:::
7、pwck
功能:
檢查密碼文件的完整性
語法:
pwck [選項] [passwd [ shadow ]]
選項:
-q:只報告錯誤。不顯示那些不需要用戶操作的警告 -r:在只讀模式下執行 pwck -s:根據用戶UID排序
示例:
[root@localhost testdir]# pwck -r /etc/passwd /etc/shadow user 'adm': directory '/var/adm' does not exist user 'uucp': directory '/var/spool/uucp' does not exist user 'gopher': directory '/var/gopher' does not exist user 'ftp': directory '/var/ftp' does not exist user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist
8、grpck
功能:
檢查組文件的完整性。grpck檢查發現錯誤以后,在命令行提示用戶是否刪除錯誤的記錄
語法:
grpck [選項] [group [ shadow ]]
選項:
-r:在只讀模式下執行grpck -s:根據用戶GID排序
示例:
[root@localhost testdir]# grpck /etc/gshadow invalid group file entry delete line 'root:::haha,linuxpao'? y(回復y表示同意刪除)
9、vipw
功能:
編輯/etc/passwd或/etc/shadow文件
語法:
vipw [選項]
選項:
-p:編輯passwd數據庫 -q:安靜模式 -s:編輯shadow數據庫
示例:
[root@localhost testdir]# vipw -p /etc/passwd root:x:0:0:xiaobao,北京三里屯,010020,12345678:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
10、vigr
功能:
編輯/etc/group和/etc/gshadoww
語法:
vigr [選項]
選項:
-g:編輯group數據庫 -q:安靜模式 -s:編輯gshadow數據庫
示例:
[root@localhost testdir]# vigr -s root:::haha,linuxpao bin:::bin,daemon,haha,linuxpao
原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/27442
文章整體架構層次清晰,對用戶和組相關的命令有理論有時間,如果能將權限管理類一起總結起來,對以后的復習會更好。