用戶組和權限管理
概念
用戶分為三類:
1、超級用戶:root uid=0,簡單來說uid為0的用戶就是超級用戶。
2、虛擬用戶:存在linux中,滿足文件或者程序運行的需要,而創建的。不能登錄,不能使用。uid=1-499,1-999(centos7)
3、普通用戶:管理員root創建的用戶。uid=500+,1000+(centos7)
用戶組就是具有相同特征的用戶的集合。一個組可以包含多個用戶,每個用戶也可以屬于不同的組。用戶組的目的方便管理員對用戶進行集中管理。用戶組也分為兩類:系統組和普通組。
用戶和用戶組的關系:
一對一:一個用戶存在一個組,也可以是組中唯一成員
一對多:一個用戶屬于多個組,只有一個主組,其余為附加組
多對一:多個用戶存在于一個組
多對多:多個用戶可以存在多個組
下圖中每一個方框代表一個組,每個圖代表一個用戶,可以方便我們理解用戶和組的關系。
用戶及用戶組配置文件介紹
/etc/passwd 用戶及其屬性信息
我們可以使用cat命令查看配置文件,下圖截取了一部分。
第一列(以冒號為分隔符):用戶名
第二列:密碼位
第三列:UID號 CentOS6 1-499為系統用戶,預留
CentOS7 1-999為系統用戶,預留
第四列:GID號 主組和輔助組
第五列:用戶全名或注釋
第六列:用戶的家目錄
第七列:用戶默認的shell類型
/etc/group 組及其屬性信息
第一列:組名稱
第二列:組密碼,通常不需要設定
第三列:GID CentOS6 1-499為系統組,預留
CentOS7 1-999為系統組,預留
第四列:以該組為附加組的用戶列表
/etc/shadow 用戶密碼及其相關屬性
第一列:用戶名
第二列:密碼位 $加密方式$salt$password
!!代表賬戶被鎖定
第三列:更改密碼時間(天數計算)—距離1970年1月1號時間
第四列:密碼最短口令有效期
第五列:口令過期時間,更改口令往后的時間
第六列:口令到期前提前多少天提醒
第七列:口令過期后多少天賬戶過期
第八列:帳號的有效期
/etc/gshadow 組密碼及其相關屬性
第一列:組名
第二列:組密碼
第三列:管理員列表,可以更改組密碼和成員
第四列:將該組作為輔助組的成員列表
用戶和組管理命令
用戶管理命令
useradd
-u uid 創建用戶時指定uid
-g gid 指明用戶所屬基本組
-c 用戶的注釋信息
-M 不建家目錄
-s 指定用戶的默認shell
-e 用戶過期時間
-G 為用戶指明附加組,組須事先存在
案例1:創建用戶gentpp,附加組為bin和root,默認shell為/bin/csh,注釋信息為”Gentoo Distribution”。
[root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c “Gentoo Distribution”
[root@centos7 ~]#cat /etc/passwd|tail -n1 #查看/etc/passwd最后一行
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
創建用戶時默認值設定存放于/etc/default/useradd
[root@centos7 ~]#cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home #把用戶的家目錄建在/home中
INACTIVE=-1 #是否啟用帳號過期停權,-1表示不啟用
EXPIRE= #帳號終止日期,不設置表示不啟用
SHELL=/bin/bash #新用戶默認所用的shell類型
SKEL=/etc/skel #配置新用戶家目錄的默認存放路徑。當我們用useradd添加用戶時,
用戶家目錄下的文件,都是從這里配置的目錄中復制過去的。下面會詳細解釋一下/etc/skel
CREATE_MAIL_SPOOL=yes #創建mail文件
/etc/login.defs文件是用來定義創建用戶時所需要的一些用戶的配置信息。如創建用戶時,是否需要家目錄,UID和GID的范圍,用戶及密碼的有效期限等等。
下面是centos7版本的/etc/login.defs文件內容
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail #創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件
#MAIL_FILE .mail
# Password aging controls:
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999 #一個密碼最長可以使用的天數
PASS_MIN_DAYS 0 #更換密碼的最小天數
PASS_MIN_LEN 5 #密碼的最小長度
PASS_WARN_AGE 7 #密碼失效前提前多少天開始警告
# Min/max values for automatic uid selection in useradd
UID_MIN 1000 #最小UID為1000,也就是說添加用戶時,UID從1000開始分配
UID_MAX 60000 #最大UID為60000
# System accounts
SYS_UID_MIN 201 #系統用戶UID最小為201
SYS_UID_MAX 999 #系統用戶UID最大為999
# Min/max values for automatic gid selection in groupadd
GID_MIN 1000 #GID的范圍為1000-60000。同上面UID情況
GID_MAX 60000
# System accounts
SYS_GID_MIN 201 #系統GID的范圍是201-999
SYS_GID_MAX 999
# useradd command line.
CREATE_HOME yes #是否創建家目錄,默認要求創建;可用-m參數控制
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077 #默認權限
# This enables userdel to remove user groups if no members exist.
USERGROUPS_ENAB yes #刪除用戶同時刪除用戶組
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 #SHA512密碼加密
補充一點
/etc/skel的作用:/etc/skel目錄使用來存放新用戶配置文件的目錄,當我們添加新用戶時,這個目錄下的所有文件會自動被復制到新添加的用戶的家目錄下;默認情況下,/etc/skel目錄下的文件都是隱藏文件;用過修改、添加、刪除/etc/skel目錄下的問及愛你,我們可以為新創建的用戶提供統一的,標準的、初始化用戶環境。
usermod
-u UID: 新UID
-g GID: 新主組
-G 新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
-s 新的默認SHELL
-c 新的注釋信息
-d HOME: 新家目錄不會自動創建;若要創建新家目錄并移動原家數據,同時使用-m選項
-l login_name: 新的名字
-L: lock指定用戶,在/etc/shadow 密碼欄的增加!
-U: unlock指定用戶,將/etc/shadow 密碼欄取消!centos7不可以解鎖
案例:修改gentpp的默認shell和描述信息
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh
[root@centos7 ~]#usermod -s /bin/sh gentpp
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh
userdel
-r 刪除用戶時,連同其家目錄,mail一同刪除
getent passwd ==cat /etc/passwd #查看用戶信息,后面可直接跟用戶名
[root@centos7 ~]#getent passwd ma
ma:x:1000:1000:ma:/home/ma:/bin/bash
id
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用
案例:
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
[root@centos7 ~]#id -u gentpp
1007
[root@centos7 ~]#id -g gentpp
1008
[root@centos7 ~]#id -G gentpp
1008 0 1
[root@centos7 ~]#id -nG gentpp
gentpp root bin
su 切換用戶或以其他用戶身份執行命令
1、su 非登錄式切換,不會讀取目標用戶的部分配置文件,不改變當前工作目錄
2、su – 登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
3、root使用su切換至其他用戶無須密碼,其他用戶之間切換或者切換到root需要密碼
passwd 修改指定用戶的密碼,僅root用戶權限
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
–stdin:從標準輸入接收用戶密碼
案例:修改ma的密碼
[root@centos7 ~]#echo maguofu |passwd –stdin ma
Changing password for user ma.
passwd: all authentication tokens updated successfully.
注意:一次只能修改一個用戶密碼,不能批量修改。
組帳號管理命令
groupadd
-g 創建指定gid的組
-r 創建系統組 CentOS 6: ID<500
CentOS 7: ID<1000
groupmod
-n newgrpname oldgrpname 修改組名
-g newgid groupname 修改gid
groupdel
groupdel 組名 刪除組
gpasswd
-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
例如: [root@centos7 ~]#gpasswd -a ma -g zhu
Adding user ma to group zhu #將用戶ma添加到組zhu中
[root@centos7 ~]#gpasswd -d ma -g zhu
Removing user ma from group zhu #將用戶ma從組zhu中刪除
groupmems[options] [action]
options
-g 更改為指定組
actions
-a 指定用戶加入組
-d 從組中刪除用戶
-p 從組中清除所有成員
-l 顯示組成員列表
案例:
[root@centos7 ~]#groupmems -g admins -a ma
[root@centos7 ~]#groupmems -g admins -a zhu #將ma和zhu用戶添加到admins中
[root@centos7 ~]#groupmems -g admins -l #查看admins中的用戶列表
ma zhu
[root@centos7 ~]#groupmems -g admins -d ma #將ma從admins中刪除
[root@centos7 ~]#groupmems -g admins -l
zhu
[root@centos7 ~]#groupmems -g admins -p #清空admins中的所有組成員
[root@centos7 ~]#groupmems -g admins -l
groups 查看用戶所屬組列表
[root@centos7 ~]#groups ma
ma : ma
root@centos7 ~]#groups zhu
zhu : zhu
文件權限
文件屬性
通過ls -li可查看文件的長格式信息,我們取出一個進行解釋
[root@centos7 /]#ls -li
64 dr-xr-xr-x. 4 root root 4.0K Jul 14 11:33 boot
第1列:inode號
第2列:第1個字符代表文件的類型(-是普通文件,d是目錄等等)
第2-10個字符代表文件權限,前三個是用戶的權限、中間三個用戶組的、后面其他用戶的權限
第11個字符.與SELINUX相關,暫時不做描述
第3列:文件的硬連接數
第4列:文件對應的屬主或者用戶
第5列:文件對應的屬組或者用戶組
第6列:文件大小
第7列:文件最后的修改的時間
第8列:文件名
修改文件屬主和屬組
chown 修改文件的屬主(也可以改組)
用戶 文件或者目錄 <==僅僅授權用戶
:組 文件活目錄 <==僅僅授權組
用戶:組 文件或目錄 <==表示授權用戶和組
-R 遞歸
–reference=源文件 目標文件
強調:
1)其中的冒號“:”可以用點好“.”代替
2)要授權的用戶和組名,必須是linux系統里實際存在的
案例:
[root@centos7 app]#ll
-rw-r–r–. 1 root root 0 Jul 29 16:27 f1
-rw-r–r–. 1 root root 0 Jul 29 16:27 f2
[root@centos7 app]#chown ma:ma f1
[root@centos7 app]#chown :zhu f2
[root@centos7 app]#ll
-rw-r–r–. 1 ma ma 0 Jul 29 16:27 f1
-rw-r–r–. 1 root zhu 0 Jul 29 16:27 f2
[root@centos7 app]#chown –reference=/app/f1 f2 #將f1的用戶和屬組信息復制給f2
[root@centos7 app]#ll
-rw-r–r–. 1 ma ma 0 Jul 29 16:27 f1
-rw-r–r–. 1 ma ma 0 Jul 29 16:27 f2
chgrp 修改文件的屬組(只能改組)
—-reference=源文件 目標文件
-R 遞歸
案例:
[root@centos7 app]#chgrp ma f1 <==將f1的屬組直接修改成ma
[root@centos7 app]#ll
-rw-r–r–. 1 ma ma 0 Jul 29 16:27 f1
-rw-r–r–. 1 ma ma 0 Jul 29 16:27 f2
-rw-r–r–. 1 root root 0 Jul 29 16:37 f3
[root@centos7 app]#chgrp –reference=/app/f3 f1
[root@centos7 app]#chgrp –reference=/app/f3 f2
[root@centos7 app]#ll
-rw-r–r–. 1 ma root 0 Jul 29 16:27 f1
-rw-r–r–. 1 ma root 0 Jul 29 16:27 f2
-rw-r–r–. 1 root root 0 Jul 29 16:37 f3
文件權限
普通文件
r:可以讀取文件的內容
w:可以追加或者覆蓋文件的內容
x:可以執行改文件,需要和r配合
目錄文件
r:可以查看目錄下有哪些文件,不能查看文件的詳細信息
w:可以在目錄中創建和刪除文件,需要x配合
x:可以cd進入該目錄
區別:
文件權限可以用八進制來表示
r:4
w:2
x:1
例如:rwx=4+2+1=7
修改文件權限
chmod
方法一:chmod u=rwx,g=rx,o=r /app/f1
方法二:chmod 755 /app/f1
方法三:chmod –reference=f1 f2 <==將f2的權限修改成f1一樣
默認權限umask
#
默認權限umask
真實用途,從對應的位中將umask指定權限去除
全局設置:/etc/bashrc
用戶設置:~/.bashrc
新建目錄權限=777-umask
新建文件權限=666-umask 看結果,有寄數,對位+1
無寄數 偶數不變,最終結果
目錄案例:
[root@centos7 app]#umask
0022
當前umask的值為0022(第一位是特殊權限位,后續會介紹暫時不用理會)
新建目錄權限=777-022=755
[root@centos7 app]#mkdir test/
[root@centos7 app]#ll
drwxr-xr-x. 2 root root 6 Jul 29 19:15 test <==創建一個目錄test可以看見默認權限為755
[root@centos7 app]#su – ma <==切換到ma用戶,root默認umask為022,其他用戶002
Last login: Sat Jul 29 17:17:11 CST 2017 on pts/0
[ma@centos7 ~]$umask
0002
[ma@centos7 ~]$mkdir test2
[ma@centos7 ~]$ll
drwxrwxr-x. 2 ma ma 6 Jul 29 19:20 test2 <==創建的目錄為775=777-002,符合上述格式
文件案例:這次我們把默認umask更改為0421
[root@centos7 app]#umask 0421
[root@centos7 app]#umask
0421
[root@centos7 app]#touch f1
[root@centos7 app]#ll
–w-r–rw-. 1 ma ma 0 Jul 29 19:38 f1 <==666-421=245 5為奇數+1,偶數不變。最終為246。
原創文章,作者:eleven,如若轉載,請注明出處:http://www.www58058.com/83210
真的漲知識了!萬萬沒想到,創建用戶的機制還有這套路,哈哈!