linux用戶和組的管理
一、用戶名的認知
1、用戶名的引入:人的認知傾向字符串,而機器只認0101的ASCII代碼)
名稱解析:用戶名<---->UID
①用戶認證 驗證該用戶是否有權限登錄該主機
--認證機制:linux默認的認證機制叫shadow 通常稱爲影子口令
密碼存放位置/etc/shadow
[root@localhost tmp]# head -3 /etc/shadow root:$6$aClk7n/uMXB25Oxe$1xOFEgeyIah/WYYSa6GeT7G72Z3JFgMkuo73wIuIzl3JLMxWI4njZG9a3zjaG9nO2cChgGVFYWvi5T5xyIKjv/:16526:0:99999:7::: bin:*:15980:0:99999:7::: daemon:*:15980:0:99999:7:::
--安全上下文:進程是繼承了,發起該進程的用戶的權限。
②用戶授權 該用戶是否有權限能訪問該文件
③審計 記錄用戶的所有操作
2、用戶類別
管理員 root UID:0
普通用戶分兩種
1、系統用戶 (作用:他們是爲了在後臺運行某個服務進程而特別建立,不能進行交互式登錄的用戶 UID的範圍 1-499)
2、可交互式登錄的用戶,UID的範圍 500-65535
/etc/passwd 是系統識別用戶的一個文件,在/etc/passwd 中,每一行都表示的是一個用戶的信息;一行有7個段位;每個段位用:號分割
[root@localhost home]# tail -1 /etc/passwd jiuren:x:500:500::/home/jiuren:/bin/bash
jiuren: 用戶名
x :密碼佔位符 存在別處
500:UID
500:GID
::用戶的註釋(描述信息)這裏沒有註釋
/home/jiuren:用戶的家目錄
/bin/bash:用戶所使用的默認SHELL類型
二、組的概念
容器:存放用戶及權限
group name <---->GID
組的類別:
管理員組 root GIU:0
普通組
1、系統組 GID:1-499)
2、用戶組(2種) GID:500-65535
☆用戶的私有組 (組名和用戶名一樣,且通常指包含一個用戶)
☆用戶的非私有組(2種)
★用戶的基本組 (用戶執行操作時,用戶所屬的組,就稱爲基本組)
★用戶的附加組 (除了基本組以外的組)
/etc/group
該文件是用戶組的配置文件,內容包括用戶和用戶組,並且能顯示出用戶是歸屬哪個用戶組或哪幾個用戶組,因爲一個用戶可以歸屬一個或多個不同的用戶組;同一用戶組的用戶之間具有相似的特徵 。
在/etc/group 中的每條記錄分四個字段:
[root@localhost home]# head -3 /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon
拿daemon這個組來舉例說明:
daemon:組名
x:組密碼佔位符
2:GID
bin,daemon:該組下的用戶名列表
三、用戶和組管理相關的命令
useradd [選項] 參數(用戶名)添加用戶
-u UID 指定用戶UID
[root@localhost tmp]# useradd -u 888 zhang [root@localhost tmp]# id zhang uid=888(zhang) gid=888(zhang) groups=888(zhang)
-c comment'描述信息'
[root@localhost tmp]# useradd -c "this is xiaoli" xiaoli [root@localhost tmp]# id xiaoli uid=889(xiaoli) gid=889(xiaoli) groups=889(xiaoli)
-d home_dir 指定用戶的家目錄,此目錄應該不存在,若存在創建用戶時會報警
[root@localhost tmp]# useradd -d /tmp/wang wang [root@localhost tmp]# tail -1 /etc/passwd wang:x:890:890::/tmp/wang:/bin/bash
-s shell 指定用戶的默認shell /etc/shells 用戶可選擇的shell
[root@localhost tmp]# useradd -s /bin/csh xiaozhao [root@localhost tmp]# tail -1 /etc/passwd xiaozhao:x:891:891::/home/xiaozhao:/bin/csh
-g GID或組名 指定用戶的基本組
[root@localhost tmp]# useradd -g abc aaa [root@localhost tmp]# id aaa uid=892(aaa) gid=5005(abc) groups=5005(abc)
-G GID或組名 指定用戶的附加組
[root@localhost tmp]# useradd -G def bbb [root@localhost tmp]# id bbb uid=893(bbb) gid=893(bbb) groups=893(bbb),5006(def)
-r 創建系統用戶
[root@localhost tmp]# useradd -r log [root@localhost tmp]# id log uid=498(log) gid=498(log) groups=498(log)
注: /etc/defaulat/useradd 默認創建用戶時所設的選項和參數
usermod [選項] 用戶名
-u UID 修改UID
[root@localhost tmp]# tail -1 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin [root@localhost tmp]# useradd -u 500 jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=500(jiuren) groups=500(jiuren)
-c 修改描述信息
[root@localhost tmp]# usermod -c "jiurenjiaoyu" jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren:x:500:500:jiurenjiaoyu:/home/jiuren:/bin/bash
-d 修改用戶的家目錄
注:通常用於-m選項一起使用,以實現移動用戶的家目錄(目標家目錄一般不存在)
[root@localhost tmp]# usermod -d /tmp/jiaoyu -m jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren:x:500:500:jiurenjiaoyu:/tmp/jiaoyu:/bin/bash
-s 修改用戶的shell類型
[root@localhost tmp]# usermod -s csh jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren:x:500:500:jiurenjiaoyu:/tmp/jiaoyu:csh
-g 組名或者GID 修改用戶的基本組
[root@localhost tmp]# groupadd test [root@localhost tmp]# usermod -g test jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=5003(test) groups=5003(test)
-G 組名或者GID -a追加的形式(默認是覆蓋)修改附加組
[root@localhost tmp]# usermod -G test jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=5003(test) groups=5003(test) [root@localhost tmp]# groupadd test2 [root@localhost tmp]# usermod -G test2 -a jiuren [root@localhost tmp]# id jiuren uid=500(jiuren) gid=5003(test) groups=5003(test),5004(test2) [root@localhost tmp]#
-l 新的用戶名 更改用戶名
[root@localhost tmp]# usermod -l jiuren1 jiuren [root@localhost tmp]# tail -1 /etc/passwd jiuren1:x:500:0:jiurenjiaoyu:/tmp/jiaoyu:csh
-L 鎖定該用戶 這個操作是放一個感嘆號在你的密碼前,禁用密碼
[root@localhost tmp]# tail -1 /etc/shadow jiuren:$6$gFvaKNmM$U7NwVbrrPekw3XgnMee5zqZ30R9mEMEibj0j9F13rKRwyASDo9 rxOIR.i6tWna.DznvEW795PuRCErzhdIbkN.:16529:0:99999:7::: [root@localhost tmp]# usermod -L jiuren [root@localhost tmp]# tail -1 /etc/shadow jiuren:!$6$gFvaKNmM$U7NwVbrrPekw3XgnMee5zqZ30R9mEMEibj0j9F13rKRwyASDo 9rxOIR.i6tWna.DznvEW795PuRCErzhdIbkN.:16529:0:99999:7:::
-U 解鎖該用戶 這個操作是在加密密碼前取消感嘆號,恢復帳號登錄
[root@localhost tmp]# usermod -U jiuren [root@localhost tmp]# tail -1 /etc/shadow jiuren:$6$gFvaKNmM$U7NwVbrrPekw3XgnMee5zqZ30R9mEMEibj0j9F13rKRwyASDo9 rxOIR.i6tWna.DznvEW795PuRCErzhdIbkN.:16529:0:99999:7:::
userdel [選項] 參數(用戶名)
-r 刪除用戶是,同時刪除用戶家目錄
[root@localhost home]# ls aaa bbb jiuren lost+found xiaoli xiaozhao zhang [root@localhost home]# userdel -r zhang [root@localhost home]# ls aaa bbb jiuren lost+found xiaoli xiaozhao
groupadd [選項] 參數(組名)
-g GID 指定當前創建組的ID號
[root@localhost home]# groupadd -g 999 test3 [root@localhost home]# tail -3 /etc/group bbb:x:893: log:x:498: test3:x:999:
-r 創建系統組
[root@localhost home]# groupadd -r test4 [root@localhost home]# tail -1 /etc/group test4:x:497:
groupmod [選項] 組名
-g GID 修改的是組的ID
[root@localhost home]# groupmod -g 400 test4 [root@localhost home]# tail -1 /etc/group test4:x:400:
-n 修改的是新的組名
[root@localhost home]# groupmod -n systest4 test4 [root@localhost home]# tail -1 /etc/group systest4:x:400:
groupdel 組名 刪除組
[root@localhost home]# groupdel systest4 [root@localhost home]# tail -3 /etc/group bbb:x:893: log:x:498: test3:x:999:
練習1 答案在本文最後,請思考,動手試試!
創建用戶gentoo UID爲4001 基本組爲gentoo,附加組爲distro(GID爲5000)和peguin(GID爲5001)
練習2
創建用戶fedora 其描述爲“Fedora Core” 默認shell爲 /bin/tcsh
練習3
修改gentoo 用戶的家目錄爲/tmp/gentoo,並且爲gentoo新增附加組爲netadmin
id [選項] 參數(用戶名)
-u UID 僅顯示UID
[root@localhost tmp]# id -u wang 890
-g GID 僅顯示GID
[root@localhost tmp]# id -g aaa 5005
-n 顯示用戶名而非數字,需要與-ugG 結合使用
[root@localhost tmp]# id -n -u xiaozhao xiaozhao
chsh 用於 改變 用戶的 登錄 shell. 如果 沒有在 命令行上 指定 shell, chsh 能夠 做出 提示
chsh -l ==cat /etc/shells
-l 用戶可以使用的安全shell
-s shell 用戶名 修改用戶的默認shell
[root@localhost home]# chsh -s /bin/tcsh wang Changing shell for wang. Shell changed. [root@localhost home]# tail -8 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin jiuren:x:500:5003:jiurenjiaoyu:/tmp/jiaoyu:csh xiaoli:x:889:889:this is xiaoli:/home/xiaoli:/bin/bash wang:x:890:890::/tmp/wang:/bin/tcsh #成功改變shell類型 xiaozhao:x:891:891::/home/xiaozhao:/bin/csh aaa:x:892:5005::/home/aaa:/bin/bash bbb:x:893:893::/home/bbb:/bin/bash log:x:498:498::/home/log:/bin/bash
練習1答案:
[root@localhost tmp]# groupadd gentoo [root@localhost tmp]# groupadd -g 5000 distro [root@localhost tmp]# groupadd -g 5001 peguin [root@localhost tmp]# useradd -u 4001 -g gentoo -G distro,peguin gentoo [root@localhost tmp]# id gentoo uid=4001(gentoo) gid=500(gentoo) groups=500(gentoo),5000(distro),5001(peguin)
練習2答案
[root@localhost tmp]# useradd -c "Fedora Core" -s /bin/tcsh fedora [root@localhost tmp]# tail -1 /etc/passwd fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
練習3答案
[root@localhost tmp]# groupadd netadmin [root@localhost tmp]# usermod -G netadmin -a gentoo [root@localhost tmp]# id gentoo uid=4001(gentoo) gid=500(gentoo) groups=500(gentoo),5000(distro),5001(peguin),5002(netadmin) [root@localhost tmp]# usermod -d /tmp/gentoo -m gentoo [root@localhost tmp]# ls /home/ fedora jiuren lost+found [root@localhost tmp]# tail -3 /etc/passwd tcpdump:x:72:72::/:/sbin/nologin gentoo:x:4001:500::/tmp/gentoo:/bin/bash fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh
四、/etc/shadow 存儲用戶認證密碼
[root@localhost tmp]# head -1 /etc/shadow root:$6$aClk7n/uMXB25Oxe$1xOFEgeyIah/WYYSa6GeT7G72Z3JFgMkuo73wIuIzl3JLMxWI4njZG9a3zja G9nO2cChgGVFYWvi5T5xyIKjv/:16526:0:99999:7:::
1、每個字段的代表意思
用戶名:加密後的密碼:上次修改密碼的時間:密碼最短使用期限:密碼最長使用期限:密碼警告區間:密碼非活動區間(用戶存在,密碼不能登錄):賬號過期(賬號被註銷):預留
如:7天之內不能修改--最短使用期限
30天最長--密碼最長使用時間
30天到期之後警告區間
密碼加密的每個字段的含義$爲分隔符
·6:指定密碼加密方式 使用的是 sha512字長
·aClk7n/uMXB25Oxe加密雜質
·1xOFEgeyIah/WYYSa6GeT7G72Z3JFgMkuo73wIuIzl3JLMxWI4njZG9a3zja
G9nO2cChgGVFYWvi5T5xyIKjv/ :加密生成的密碼
例子 (root+雜項)進行sha512加密 形成512長度的字符串
2、修改用戶密碼:
管理員:passwd 回車 修改管理員root用戶自身密碼
passwd 用戶名 修改其他普通用戶的密碼
普通用戶:passwd 只能修改普通用戶自身密碼
切換登錄
su :switch user
登錄式切換: su - 用戶名 (會讀取用戶的所有配置)exit 退出當前用戶
非登錄式切換: su 用戶名 (不會讀取目標用戶環境配置文件)
五、權限管理
1、文件權限:針對3類對象進行定義
-rw-r--r--. 1 root root 27632 Apr 1 18:16 install.log
屬主 屬組 其他組(其他用戶)
權限類型:r read w write x eXcutable
文件(指普通文件)
r可以查看文件的內容
w可以修改文件的內容
x可以把文件向內核提起申請,運行爲一個進程
目錄(目錄文件)
r是否可以使用ls命令,處了-l 選項之外
w是否可以在目錄中進行添加、刪除操作
x可使用cd命令進入目錄 ls -l的選項是否可用
2、修改文件的權限:
用法:chmod [選項]... 模式[,模式]... 文件...
-R 遞歸賦予權限
每種模式都應屬於這類形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"
操作對像
u 文件屬主權限
g 同組用戶權限
o 其它用戶權限
a 所有用戶(包括以上三種)
權限設定
+ 增加權限
- 取消權限
= 唯一設定權限
權限類別
r 讀權限
w 寫權限
x 執行權限
X 表示只有當該檔案是個子目錄或者該檔案已經被設定過爲可執行。
s 文件屬主和組id
l 給文件加鎖,使其它用戶無法訪問
權限模型 文件名
o=+rwx 不能寫成o=+r,+w,+x 如下例子
[root@localhost ~]# ls -l functions -rw-r--r-- 1 root root 19295 Apr 6 05:27 functions [root@localhost ~]# chmod o=+w,+x functions [root@localhost ~]# ls -l functions -rwxr-x-wx 1 root root 19295 Apr 6 05:27 functions #這裏給屬主和數組也同樣加上了x權限
u和g用法同上
數值權限 rwx分別代表421
3、chown修改屬主、屬組
用法:chown [選項]... [所有者][:[組]] 文件...
-R 遞歸賦予權限
屬主: 只更改屬主
:屬組 只更改數組
[root@localhost ~]# ls -l functions -rwxr-x-wx 1 root root 19295 Apr 6 05:27 functions [root@localhost ~]# chown jiuren: functions [root@localhost ~]# ls -l functions -rwxr-x-wx 1 jiuren jiuren 19295 Apr 6 05:27 functions #這裏沒有達到上面描述的效果, 是因爲基本組的原因 [root@localhost ~]# chown :root functions [root@localhost ~]# ls -l functions -rwxr-x-wx 1 jiuren root 19295 Apr 6 05:27 functions #這裏就可以修改用戶的數組