一、Linux用戶及用戶組的基本概念
用戶:用戶是實現能夠將有限的資源在多個使用者之間進行分配;、
用戶組:用戶組是指多個用戶的集合,方便對一類需要同樣權限的用戶授權
Linux是多用戶、多任務的操作系統。
多用戶指:多人同時使用系統資源;多任務:同時運行多個進程
二、用戶及用戶組類別
1、用戶:名稱解析庫 /etc/passwd
a、管理員
root 用戶標識(UID)為0
b、普通用戶及系統用戶
普通用戶的用戶標識(既UID):
CentOS 5,6: 500+
CentOS 7: 1000+
系統用戶用戶標識(既UID):
CentOS 5,6: 1-499
CentOS 7: 1-999
2、用戶組:名稱解析庫 /etc/group
a、管理員組
組標識為:0
b、普通用戶組及系統用戶組
普通用戶組標識:
CentOS 5,6: 500+
CentOS 7: 1000+
系統用戶組標識:
CentOS 5,6: 1-499
CentOS 7: 1-999
3、用戶組類別:
以用戶為核心分為:
用戶的主組:基本組;
用戶的附加組:額外組;
以容納的用戶來劃分:
私有組:與用戶名相同,且只有一個用戶;
共有組:組內包含了多個用戶;
三、用戶及用戶組的認證機制
Linux的用戶密碼認證方式在centos7中使用sha512
認證信息庫存儲位置:
用戶的認證信息庫:/etc/shadow
組的認證信息庫:/etc/gshadow
密碼:加密存放,使用單向加密機制
算法:
md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224
sha256
sha384
sha512
三、權限的生效機制
進程的運行者:
是否與文件的屬主相同,如果是,則以文件屬主的身份來訪問此文件;否則
是否屬于文件的屬組,如果是,則以文件屬組的身份來訪問此文件;否則
以文件的其它用戶的身份來訪問此文件;
四、用戶及用戶組管理命令
groupadd命令:添加組
groupadd [options] group
-g GID:指明GID;
# groupadd -g 2000 testgrp # grep "testgrp" /etc/group testgrp:x:2000:
-r, –system:系統組;
# groupadd -r testgrp1 # grep "testgrp1" /etc/group testgrp1:x:985:
groupmod命令:修改組信息
groupmod [選項] GROUP
-g GID
-n NEW_NAME:修改組名;
# grep "testgrp\>" /etc/group testgrp:x:2000: # groupmod -g 300 -n grptest testgrp # grep "grptest" /etc/group grptest:x:300:
groupdel命令:刪除組
groupdel [選項] GROUP
# grep "grptest" /etc/group grptest:x:300: # groupdel grptest # grep "grptest" /etc/group
useradd命令:添加用戶
useradd [選項] 登錄名
-c, –comment COMMENT:注釋信息,一般為Full Name;
-d, –home /PATH/TO/HOME_DIR:家目錄路徑;目標路徑不能事先存在,否則會有警告,不會復制skel相關的文件給用戶;
-g, –gid GROUP:用戶的基本組組名或GID;
-G, –groups GROUP1[,GROUP2,…[,GROUPN]]]:用戶所屬的附加組列表,彼此間用逗號隔開,中間沒有空格;
# useradd -c "testuser" -d /home/testuser -g testgrp -G testgrp1 testuser # id testuser uid=5011(testuser) gid=5011(testgrp) groups=5011(testgrp),985(testgrp1)
-m, –create-home:強制創建家目錄;
一般指當CREATE_HOME變量為設置時必須使用此參數
-M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置 (CREATE_HOME) 為 yes;
# useradd -M testuser2 # ls /home/ centos gentoo nologin test1 test3 fedora mageedu slackware test2 testuser
-r, –system:創建一個系統賬戶
創建系統用的UID在0-999之內。且不創建家目錄
# useradd -r testuser3 # id testuser3 uid=990(testuser3) gid=984(testuser3) groups=984(testuser3) # ls /home/ centos gentoo nologin test1 test3 fedora mageedu slackware test2 testuser
-s, –shell SHELL:用戶的登錄 shell 名,默認為留空,讓系統根據 /etc/default/useradd 中的 SHELL 變量選擇默認的登錄shell;
-u, –uid UID:用戶 ID 的數字值。此值必須為唯一的,除非使用了 -o 選項。此值必須非負,默認使用大于等于UID_MIN,且大于任何其他用戶 ID 最小值。
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh # useradd -s /bin/bash -u 3001 testuser4 # grep "testuser4\>" /etc/passwd testuser4:x:3001:3001::/home/testuser4:/bin/bash
注意:創建登錄用戶時,為其自定義的shell程序必須為可登錄shell,且要位于/etc/shells文件中;
useradd -D:顯示創建用戶時的默認設置;
useradd -D 選項:設置某默認選項;
-e, –expiredate EXPIRE_DATE:用戶賬號的過期期限;過期后會被鎖定;日期以 YYYY-MM-DD 格式指定
-f, –inactive INACTIVE:密碼過期后,賬戶被徹底禁用之前的天數。0 表示立即禁用,-1 表示禁用這個功能。
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes # useradd -e 2020-03-08 testuser5 # useradd -f 3 testuser6
為用戶提供默認配置的配置文件:
/etc/login.defs, /etc/default/useradd
影子口令文件:/etc/shadow
/etc/shadow每個字段的意思:
登錄名:密碼:最近一次的修改時間:密碼的最短使用期限:密碼最長使用期限:提前警告的天數:非活動期限:賬號的禁用日期:保留字段
usermod命令:修改賬號信息
-c, –comment COMMENT
-d, –home HOME_DIR:修改家目錄為新的位置,但一般應該同時使用-m選項以保證原家目錄中的文件會移動到新目錄中;
-g, –gid GROUP
-G, –groups GRO UP1[,GROUP2,…[,GROUPN]]]:修改時會覆蓋原有的附加組;一同使用-a選項,表示為用戶添加新的附加組;
-l, –login NEW_LOGIN:修改當前用戶的用戶名;
-s, –shell SHELL
-u, –uid UID
# grep "mageedu" /etc/passwd mageedu:x:5015:5015:mageedu:/home/mageedu:/bin/bash # usermod -c "this is mageedu" -m -d /opt/mageedu -g 5000 -G 6000 -l mageedugood -u 3000 mageedu # grep "mageedu" /etc/passwd mageedugood:x:3000:5000:this is mageedu:/opt/mageedu:/bin/bash # id mageedugood uid=3000(mageedugood) gid=5000(mage) groups=5000(mage),6000(xueba)
-L, –lock:鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!”
-U, –unlock:解鎖用戶的密碼。這將移除加密的密碼之前的“!”
# grep "mageedu" /etc/shadow mageedugood:$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7::: # usermod -L mageedugood # grep "mageedu" /etc/shadow #此處可以看到鎖定后在密碼前面有一個!號 mageedugood:!$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7::: # usermod -U mageedugood # grep "mageedu" /etc/shadow mageedugood:$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::
userdel命令:刪除用戶賬號
userdel [選項] 登錄名
-r, –remove:用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除
# userdel -r mageedugood # id mageedugood id: mageedugood: no such user # ls /home/ #加上-r選項后同時刪除用戶的家目錄以及用戶郵箱 centos gentoo slackware test2 testuser testuser5 fedora nologin test1 test3 testuser4 testuser6 # userdel test1 # ls /home/ #未加-r可以找到test1用戶的家目錄 centos gentoo slackware test2 testuser testuser5 fedora nologin test1 test3 testuser4 testuser6 # id test1 id: test1: no such user
passwd命令:密碼管理命令
(1) passwd:修改自己的密碼;
(2) passwd username:修改其它用戶的密碼,僅root有此權限;
密碼復雜度:
(1) 不能少于8個字符;
(2) 不能使用與過去的密碼太相似的密碼;
(3) 應該使用四類字符中的至少三類;
# passwd test2 Changing password for user test2. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
選項:
-l:鎖定密碼
-u:解鎖解密
-d:清除密碼
# grep "test2" /etc/shadow test2:$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7::: # passwd -l test2 Locking password for user test2. passwd: Success # grep "test2" /etc/shadow test2:!!$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7::: # passwd -u test2 Unlocking password for user test2. passwd: Success # grep "test2" /etc/shadow test2:$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7::: # passwd -d test2 Removing password for user test2. passwd: Success # grep "test2" /etc/shadow test2::16868:0:99999:7:::
與usermod不同的是,passwd在鎖定時密碼前面有兩個!!號
特殊用法:可以避免交互式
–stdin:從標準輸入接收密碼;
echo "PASSWORD" | passwd –stdin USERNAME
# echo "mageedu"|passwd --stdin test2 Changing password for user test2. passwd: all authentication tokens updated successfully.
gpasswd命令:為組添加密碼
組密碼文件:/etc/gshadow
gpasswd [選項] group
-a USERNAME:把用戶添加至組中;
-d USERNAME:從此組中移除此用戶;
# gpasswd -a test3 xueba Adding user test3 to group xueba # grep "xueba" /etc/gshadow xueba:$6$bxtP5/lZt$umET9D6NeQrdWDGNG0LfpUQiJ5Poq8Xa0GoaDQqJFvqLVm3GWrCxOtDnCXbGjZngS4S7lumQE9hW18DgWPBrm.::test2,test3 # gpasswd -d test2 xueba Removing user test2 from group xueba # grep "xueba" /etc/gshadow xueba:$6$bxtP5/lZt$umET9D6NeQrdWDGNG0LfpUQiJ5Poq8Xa0GoaDQqJFvqLVm3GWrCxOtDnCXbGjZngS4S7lumQE9hW18DgWPBrm.::test3
newgrp命令:登錄到一個新組
chage命令:修改用戶賬號的各種期限;
$ touch testfile $ ll testfile -rw-rw-r-- 1 test2 test2 0 Mar 8 12:43 testfile $ newgrp xueba $ touch testfile2 $ ll testfile2 -rw-r--r-- 1 test2 xueba 0 Mar 8 12:44 testfile2
五、文件系統權限簡介
文件系統文件權限:
三類用戶:
屬主:owner, u
屬組:group, g
其它:other, o
所有:All,a
權限:
r: readable,可讀
w: writable, 可寫
x:excutable, 可執行
權限管理:
文件:
r:可獲取文件的數據;
w:可修改文件的數據;
x:可將此文件運行為進程;
目錄:
r:可使用ls命令獲取其下的所有文件列表;但不可以使用“ls -l”去獲取詳細信息,也不可以cd至此目錄中;
w:可修改此目錄下的文件列表, 即可以在此目錄下創建或刪除文件;
x:可以使用"ls -l“命令來獲取其下的文件的詳細屬性信息,也可cd至此目錄中;
六、文件系統權限管理命令
chmod命令:
作用:change file mode bits
使用方式:
chmod [OPTION]… MODE[,MODE]… FILE…
# 以ugoa的方式來進行授權
chmod [OPTION]… OCTAL-MODE FILE…
# 權限數字是數值模式:是從一到四的八進制數字(0-7),分別用4(讀權限) 2(寫權限) 1(可執行權限)
chmod [OPTION]… –reference=RFILE FILE…
# 標識權限參照某文件修改
(1) chmod [OPTION]… MODE[,MODE]… FILE…
MODE:
賦權表示法:直接操作一類用戶的所有權限位rwx;
u=
g=
o=
a=
兩類用戶權限相同:ug=, go=
不同類的用戶權限不同:u=,g=,o=
# ll total 4 -rw-r--r-- 1 root root 595 Mar 8 15:57 fstab # chmod u=r,g=w,o=x fstab # ll total 4 -r---w---x 1 root root 595 Mar 8 15:57 fstab # ll total 4 -r---w---x 1 root root 595 Mar 8 15:57 fstab # chmod a=rw fstab # ll total 4 -rw-rw-rw- 1 root root 595 Mar 8 15:57 fstab
授權表示法:操作一類用戶一位或多位權限;
u+, u-
g+, g-
o+, o-
a+, a-
兩類用戶權限收授機制相同:ug+, ug-, …
不同類的用戶權限不同:u+,g+,o+
# ll total 4 -rw-rw-rw- 1 root root 595 Mar 8 15:57 fstab # chmod u+x,g-w,o-r fstab # ll total 4 -rwxr---w- 1 root root 595 Mar 8 15:57 fstab # ll total 4 -rwxr-xr-x 1 root root 595 Mar 8 15:57 fstab # chmod ug-x,o+w fstab # ll total 4 -rw-r--rwx 1 root root 595 Mar 8 15:57 fstab # ll total 4 -r--r--r-x 1 root root 595 Mar 8 15:57 fstab # chmod a+w fstab # ll total 4 -rw-rw-rwx 1 root root 595 Mar 8 15:57 fstab
(2) chmod [OPTION]… OCTAL-MODE FILE…
OCTAL-MODE:權限標識
r:4
w:2
x:1
# chmod 755 fstab # ll total 4 -rwxr-xr-x 1 root root 595 Mar 8 15:57 fstab # chmod 600 fstab # ll total 4 -rw------- 1 root root 595 Mar 8 15:57 fstab # chmod 644 fstab # ll total 4 -rw-r--r-- 1 root root 595 Mar 8 15:57 fstab
注意:使用數字標識權限時不可省略,例如:
# ll total 4 -rw-r--r-- 1 root root 595 Mar 8 15:57 fstab # chmod 60 fstab # ll total 4 ----rw---- 1 root root 595 Mar 8 15:57 fstab
這里本來要改文件的屬主為6(rw),文件的屬組沒有權限,但是更改后就變成屬組為6,而屬主與其他用戶沒有權限
(3) chmod [OPTION]… –reference=RFILE FILE…
常用選項:
-R, –recursive:遞歸修改;
# ll mode/ total 4 -rw-r--r-- 1 root root 595 Mar 8 16:13 fstab # ll mode/ -d drwxr-xr-x 2 root root 18 Mar 8 16:13 mode/ # chmod -R o+w mode/ # ll mode/ -d drwxr-xrwx 2 root root 18 Mar 8 16:13 mode/ # ll mode/ total 4 -rw-r--rw- 1 root root 595 Mar 8 16:13 fstab
–reference=RFILE:RFILE表示參考其權限模型;
# ll total 4 ----rw---- 1 root root 595 Mar 8 15:57 fstab # ll /etc/fstab -rw-r--r--. 1 root root 595 Mar 12 2016 /etc/fstab # chmod --reference=/etc/fstab /tmp/fstab # ll total 4 -rw-r--r-- 1 root root 595 Mar 8 15:57 fstab
chown命令:修改屬主或屬組
chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… –reference=RFILE FILE…
# 此處也是參照文件修改,只是此處修改的是屬主和屬組( 注意:此處不修改權限)
# ll -d mode/ drwxr-xrwx 2 root root 18 Mar 8 16:13 mode/ # chown mageedu.mageedu mode/ # ll -d mode/ drwxr-xrwx 2 mageedu mageedu 18 Mar 8 16:13 mode/ # ll fstab -rwxr-xr-x 1 root root 595 Mar 8 15:57 fstab # chown .mageedu fstab #此處表示修改屬組(屬組與屬主的分隔符可以用點或者冒號(.或:) # ll fstab -rwxr-xr-x 1 root mageedu 595 Mar 8 15:57 fstab # chown mageedu. fstab #此處表示修改屬主 # ll total 4 -rwxr-xr-x 1 mageedu mageedu 595 Mar 8 15:57 fstab
常用選項:
-R, –recursive:遞歸修改;
# 與chmod使用方式相同,此處不在過多介紹
chgrp命令:修改屬組
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
# ll fstab -rwxr-xr-x 1 mageedu mageedu 595 Mar 8 15:57 fstab # chgrp xueba fstab # ll fstab -rwxr-xr-x 1 mageedu xueba 595 Mar 8 15:57 fstab
六、下面介紹幾個比較實用的用戶與用戶組相關的Linux命令
chsh命令:修改用戶的登錄shell
chsh [option] [username]
-s:指定shell
-l:查看可用shell列表
chfn命令:修改用戶的詳細信息
chfn [option] [username]
-f,–full-name 名字
-o,–office 辦公地址
-p,–office-phone 辦公電話
finger命令:用戶信息查找程序
finger [-lmsp] [user …] [user@host …]
-s:顯示用戶的列出該用戶的帳號名稱,真實姓名,登入終端機,閑置時間,登入時間以及地址和電話;
pwck:用來驗證/etc/passwd和/etc/shadow文件的內容格式完整性
pwck [options] [passwd [ shadow ]]
-s:以用戶id排序文件 /etc/passwd /etc/shadow
-r:只讀方式運行命令
grpck:用來驗證/etc/group /etc/gshadow件的內容格式完整性
grpck [options] [group [ shadow ]]
-s:以組id排序文件 /etc/group /etc/gshadow
-r:只讀方式運行命令
原創文章,作者:Ace,如若轉載,請注明出處:http://www.www58058.com/12664
理論與實戰相結合,很不錯。