提綱
文件系統權限
3A 安全
Authentication : 認證 --> 用戶名&密碼、指紋、人臉識別、DNA驗證 Authorization : 授權 Accounting|Audition : 審計
權限模型
Linux 下組和用戶的特點: (1)Linux不支持用戶或組的嵌套,windows支持 (2)Linux允許用戶名、組名、ID號相同
用戶分類
-
安全上下文 Security Context:進程所能夠訪問資源的權限取決于進程的運行者的身份
-
Linux下判斷身份都是看UID號,而非名字
用戶級別 | ID號 | 備注 |
---|---|---|
管理員 | 0 | root |
普通用戶 | 1-65535 | |
系統用戶 | 1~499(v6),1-999(v7) | 對守護進程獲取資源進行權限分配(shell:/sbin/nologin;/usr/sbin/nologin) |
普通用戶 | 500+(v6),1000+(v7) | 交互式登錄 |
- 對于文件和目錄而言,用戶大概分為三個級別
:
用戶級別 | 說明 |
---|---|
1st Class | 擁有者 owner |
2nd Class | 群組成員 group members |
3rd Class | 其他用戶 other users |
組分類
組類型 | 說明 |
---|---|
主組 | 用戶有且只能有一個主要組,排位第一級別 |
輔助組 | 一個用戶可以有0~n個附加組(輔助組) |
私有組 | 組名與用戶名相同,且僅包含一個用戶 |
#----------------------------------------------------------------------------- # 查看用戶組信息 #----------------------------------------------------------------------------- [root@localhost ~]# groups alice alice : alice g2 [root@localhost ~]# getent group alice alice:x:502:user2 [root@localhost ~]# getent gshadow alice alice:!::user2 [root@localhost ~]# id alice uid=501(alice) gid=502(alice) groups=502(alice),1240(g2)
配置文件
配置文件 | 說明 |
---|---|
/etc/passwd | 用戶及其屬性信息(名稱、UID、主組ID等) |
/etc/shadow | 用戶密碼及其相關屬性 |
/etc/group | 組及其屬性信息 |
/etc/gshadow | 組密碼及其相關屬性 |
passwd 文件格式
[liang@centos7 ~]$ getent passwd root liang root:x:0:0:root:/root:/bin/bash liang:x:1000:1000:liang:/home/liang:/bin/bash
從左到右的含義依次是:
字段 | 說明 |
---|---|
name | 登錄名 |
password | 密碼(x為占位符,加密密碼在/etc/shadow) |
UID |
用戶ID,root的id=0,范圍:1~65535 其中,系統用戶:1-499(CentOS6),1-999(CentOS7); 普通用戶:500+(CentOS6), 1000+ (CentOS7) |
GID | 用戶主組ID(系統組:V6<500, V7<1000) |
GECOS | 備注字段 |
directory | 用戶家目錄 |
shell | 用戶默認的shell |
#----------------------------------------------------------------------------- # 1) getent passwd [username...]: 查看用戶的passwd配置文件內容 #----------------------------------------------------------------------------- [root@localhost ~]# getent passwd (= cat /etc/passwd) [root@localhost ~]# getent passwd liang liang:x:500:501::/home/liang:/bin/bash #----------------------------------------------------------------------------- # 2) chfn username : 修改用戶的GECOS備注字段內容 #----------------------------------------------------------------------------- [root@localhost ~]# chfn liang Changing finger information for liang. Name []: liangchao Office []: 110 Office Phone []: 10086 Home Phone []: 119 Finger information changed. [root@localhost ~]# getent passwd liang liang:x:500:501:liangchao,110,10086,119:/home/liang:/bin/bash #----------------------------------------------------------------------------- # 3) 修改alice的密碼 #----------------------------------------------------------------------------- [root@localhost Packages]# echo 123456 | passwd --stdin alice Changing password for user alice. passwd: all authentication tokens updated successfully. #----------------------------------------------------------------------------- # 4) chsh -s shell username : 修改用戶默認的shell類型 # 5) su - username : 切換用戶(完全切換) #----------------------------------------------------------------------------- [root@localhost Packages]# getent passwd alice alice:x:501:502::/home/alice:/bin/bash [root@localhost Packages]# chsh -s /bin/csh alice Changing shell for alice.Shell changed. [root@localhost Packages]# getent passwd alice alice:x:501:502::/home/alice:/bin/csh [root@localhost Packages]# su - alice [alice@localhost ~]$ echo $SHELL /bin/csh #----------------------------------------------------------------------------- # 6) 將用戶的shell類型改為nologin,導致用戶無法切換,也無法登錄 #----------------------------------------------------------------------------- [root@localhost Packages]# file /sbin/nologin /sbin/nologin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped [root@localhost Packages]# su - alice This account is currently not available. #----------------------------------------------------------------------------- # 7) 設定是否將密碼放進shadow:pwunconv不放(password unconvert),pwconv放 #----------------------------------------------------------------------------- [root@centos7 testdir]# pwunconv [root@centos7 testdir]# echo 123456 | passwd --stdin liangChanging password for user liang. passwd: Authentication token manipulation error (此時 cat /etc/shadow會報找不到文件,cat /etc/passwd發現所有用戶的密碼位均有值,不再是x) [root@centos7 testdir]# getent passwd liang liang:$6$XoyQiDfz$R7dcM4mGTBYejUJ8d3w/:1000:1000:liang:/home/liang:/bin/bash [root@centos7 testdir]# pwconv [root@centos7 testdir]# getent passwd liang liang:x:1000:1000:liang:/home/liang:/bin/bash
shadow 文件格式
#----------------------------------------------------------------------------- # loginName:password:last change:min change age:max useage:warning period:inactivity period:expiration date:reserve filed #----------------------------------------------------------------------------- [root@localhost Packages]# getent shadow alice(等同于:cat /etc/shadow ) alice:!$6$AWo3D7uD$GyqAxaEXFkIcG8XE2kPBRl82……tm0LQo7eZhUS37Fj2Pymll.:17014:0:99999:7:::
從左到右的含義依次是:
字段 | 說明 |
---|---|
login name | 登錄名 |
encrypted password | 加密密碼 |
date of last password change | 從1970年1月1日起到密碼最近一次被更改的時間,天數(空即禁用) |
minimum password age | 密碼再過幾天可以被變更(0表示隨時可被變更) |
maximum password age | 密碼再過幾天必須被變更(99999表示永不過期) |
password warning period | 密碼過期前幾天系統提醒用戶(默認為一周) |
password inactivity period | 密碼過期幾天后帳號會被鎖定 |
account expiration date | 從1970年1月1日算起,多少天后帳號失效 |
reserved field | 預留字段 |
關于各個時間的先后順序,如下圖所示:
[root@localhost Packages]# getent shadow alice(等同于:cat /etc/shadow ) alice:!$6$AWo3D7uD$GyqAxaEX……hUS37Fj2Pymll.:17014:0:99999:7::: #----------------------------------------------------------------------------- # 關于第二列密碼詳解: # 1) $6: 加密方式 # 常見的加密方式:md5($1),sha1,sha224,sha256,sha384,sha512($6) # * 修改加密算法:authconfig --passalgo=md5 --update #----------------------------------------------------------------------------- [root@localhost Packages]# authconfig --passalgo=md5 --update [root@localhost Packages]# useradd john [root@localhost Packages]# echo 12345 | passwd --stdin john Changing password for user john. passwd: all authentication tokens updated successfully. [root@localhost Packages]# getent shadow john john:$1$nJw0PIvZ$jJ0IklD4k9u3WYxMM4Ssr.:17014:0:99999:7::: #----------------------------------------------------------------------------- # 2) $8MvEcVLBt2bVhbld$:隨機數,故即便密碼相同,加密后也不同; # 3) ?。河脩翩i定,不可登陸,但root可以su過去 # * 加鎖:usermod -L username # * 解鎖:usermod -U username #----------------------------------------------------------------------------- [root@localhost Packages]# usermod -L alice [root@localhost Packages]# getent shadow alice alice:!$6$AWo3D7uD$GyqAxaEXFkIcG8XE2k……S37Fj2Pymll.:17014:0:99999:7::: [root@localhost Packages]# usermod -U alice [root@localhost Packages]# getent shadow alice alice:$6$AWo3D7uD$GyqAxaEXFkIcG8XE2kPBR……7Fj2Pymll.:17014:0:99999:7::: #----------------------------------------------------------------------------- # 4) 密碼建議:數字/大小寫/特殊字符混合;足夠長;使用隨即密碼;定期更換 #----------------------------------------------------------------------------- [root@localhost Packages]# openssl rand -base64 10 (生成隨機密碼) S8DBJeAt4bugFg== [root@localhost Packages]# echo "`date +%s`/86400" |bc17014 [root@localhost Packages]# echo $[`date +%s`/86400]17014 #----------------------------------------------------------------------------- # 使用戶alice下次登錄必須修改密碼 #----------------------------------------------------------------------------- # 方式一: [root@localhost Packages]# chage -d 0 alice [root@localhost Packages]# getent shadow alice alice:$6$AWo3D7uD$GyqAx……37Fj2Pymll.:0:0:99999:7::: # 方式二: [root@localhost Packages]# passwd -e alice Expiring password for user alice. passwd: Success [root@localhost Packages]# getent shadow alice alice:$6$AWo3D7uD$GyqAxa……ZhUS37Fj2Pymll.:0:0:99999:7:::
group 文件格式
#----------------------------------------------------------------------------- # groupName:passwd:GID:userList #----------------------------------------------------------------------------- [root@centos7 Desktop]# getent group admins admins:x:1002:harry,sarah
字段名 | 說明 |
---|---|
group_name | 用戶名 |
password | 密碼,若為空則不需密碼 |
GID | 組ID |
user_list | 組成員列表 |
gshadow 文件格式
#----------------------------------------------------------------------------- # 關于第二列【密碼】的詳解: # 1) 若密碼出現非加密字符,如!或*,用戶將不能用unix密碼使用組(組成員不受限) # 2) 組密碼用于一個非組成員想要獲取組權限(參考 newgrp命令) # 3) ! 開頭表明密碼鎖定 #----------------------------------------------------------------------------- [root@centos7 Desktop]# getent gshadow admins hehe admins:!::harry,sarah hehe:*::
header 1 | header 2 |
---|---|
group name | 存在于系統中的有效組名 |
encrypted password | 密碼 |
administrators | 組管理員列表(權限與組成員相同,但可修改組員和組密碼) |
members | 成員列表 |
用戶、組 管理命令
useradd
-
語法
useradd [options] LOGIN useradd -D useradd -D [options]
-
參數
參數 | 使用說明 |
---|---|
-b BASE_DIR | 指定用戶的默認家目錄的BASE目錄; 默認參考配置文件; 若無-m,則家目錄必須存在。 |
-c COMMENT | 描述信息,用作用戶的全名 |
-d HOME_DIR | 指定用戶家目錄;默認在BASE_DIR下建與用戶同名的目錄作為家目錄; |
-D | 改變默認值(當僅用-D則使用默認值;當-D配合其他選項,則用指定值更新默認) |
-e YYYY-MM-DD | 設定用戶賬號的失效時間(account expiredDate);默認不失效; |
-f INACTIVE_DAYS | 設定當密碼過期后多少天帳號將被禁用 |
-g GROUP | 設定主組(組存在);若未指定,則參考/etc/login.defs的USERGROUPS_ENAB的設定(yes:創建同名組;no:參考/etc/default/useradd的GROUP,或100) |
-G 2nd_GROUPS… | 設定附屬組 |
-k SKEL_DIR | 設定創建家目錄后,從SKEL_DIR拷貝文件到用戶家目錄 |
-K KEY=VALUE | 設定如下默認值(-K UID_MIN=100 -K UID_MAX=499 -K UMASK=… -K PASS_MAX_DAYS=-1) |
-l | 不降用戶添加到lastlog 和 faillog 數據庫。 |
-m | 若用戶家目錄不存在則創建,并從-k指定的數據拷貝到該家目錄;家目錄的父目錄必須存在才能創建 |
-M | 不創建家目錄,即使/etc/login.defs(CREATE_HOME=yes)也不行 |
-N | 不創建同名組,為用戶添加組:-g 或 /etc/default/useradd(GROUP)指定的 |
-o | 允許創建UID相同的用戶,僅當配合-u時有效 |
-r | 創建系統賬戶(不創建家目錄,若必須指定需使用-m選項) |
-s SHELL | 設定用戶默認登錄shell |
-u UID | 設定用戶UID,必須唯一(除非使用-o) |
-U | 創建同名組 |
-
配置文件
/etc/default/useradd : 用戶創建的默認值
/etc/login.defs : 密碼相關的配置項
/etc/skel/ : 包含默認文件的目錄
-
示例
#----------------------------------------------------------------------------- # 新增用戶alice: # 1)新增完成后,查看alice的組是alice(未指定時自動創建同名組) # 2)新增完成后,未指定家目錄的,自動創建家目錄(系統用戶不創建) #----------------------------------------------------------------------------- [root@localhost ~]# useradd alice [root@localhost ~]# id alice uid=501(alice) gid=502(alice) groups=502(alice) [root@localhost ~]# ll /home total 12 drwx------. 4 alice alice 4096 Aug 1 11:45 alice drwx------. 28 liang liang 4096 Jul 20 18:04 liang #----------------------------------------------------------------------------- # 創建UID相同的兩個用戶:mag,mag2 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -u 1234 mag [root@localhost Packages]# useradd -u 1234 mag2 useradd: UID 1234 is not unique [root@localhost Packages]# useradd -u 1234 -o mag2 [root@localhost Packages]# getent passwd mag mag2 mag:x:1234:1234::/home/mag:/bin/bash mag2:x:1234:1235::/home/mag2:/bin/bash #----------------------------------------------------------------------------- # 創建用戶user2,為其添加輔助組:liang,alice,bin #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -G liang,alice,bin user2 [root@localhost Packages]# getent passwd user2 user2:x:1236:1236::/home/user2:/bin/bash [root@localhost Packages]# groups user2 user2 : user2 bin liang alice #----------------------------------------------------------------------------- # 1)創建用戶user3,為其指定家目錄:/testdir/user3home,目錄不存在 # 2)創建用戶user4,為其指定家目錄:/testdir/user4,目錄存在不重建,所需文件不復制 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -d /testdir/user3home user3 [root@localhost Packages]# getent passwd user3 user3:x:1237:1237::/testdir/user3home:/bin/bash [root@localhost Packages]# ll /testdirtotal 69876 drwx------. 2 root root 16384 Jul 20 16:54 lost+found drwx------. 4 user3 user3 4096 Aug 1 15:51 user3home -r--r--r--. 1 root root 71524872 Jul 22 11:51 VMwareTools-10.0.0-2977863.tar.gz drwxr-xr-x. 9 root root 4096 Aug 12 2015 vmware-tools-distrib [root@localhost Packages]# mkdir /testdir/user4 [root@localhost Packages]# useradd -d /testdir/user4 user4 useradd: warning: the home directory already exists. Not copying any file from skel directory into it. #----------------------------------------------------------------------------- # 創建用戶user5,不創建默認組:因未指定組,默認設定GID=100 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -N user5 [root@localhost Packages]# getent passwd user5 user5:x:1239:100::/home/user5:/bin/bash #----------------------------------------------------------------------------- # 創建系統用戶user6,設定shell為/sbin/nologin:不創建家目錄、郵箱 #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -r -s /sbin/nologin user6 [root@localhost Packages]# getent passwd user6 user6:x:496:492::/home/user6:/sbin/nologin [root@localhost Packages]# ls /homealice john liang mage mage2 tom user1 user2 user5 [root@localhost Packages]# cd /var/spool/mail [root@localhost mail]# ll total 8 -rw-rw----. 1 liang mail 0 Jul 20 17:15 liang -rw-------. 1 root mail 5376 Aug 1 09:11 root -rw-rw----. 1 rpc mail 0 Jul 20 16:59 rpc #----------------------------------------------------------------------------- # 查看系統創建用戶的默認設置: # (1) useradd -D == cat /etc/default/useradd # (2) /etc/skel #----------------------------------------------------------------------------- [root@localhost Packages]# useradd -DGROUP=100HOME=/home INACTIVE=-1EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@localhost Packages]# ll -a /etc/skeltotal 36 drwxr-xr-x. 4 root root 4096 Jul 20 17:00 . drwxr-xr-x. 125 root root 12288 Aug 1 15:55 .. -rw-r--r--. 1 root root 18 May 11 07:21 .bash_logout -rw-r--r--. 1 root root 176 May 11 07:21 .bash_profile -rw-r--r--. 1 root root 124 May 11 07:21 .bashrc drwxr-xr-x. 2 root root 4096 Nov 12 2010 .gnome2 drwxr-xr-x. 4 root root 4096 Jul 20 16:58 .mozilla #----------------------------------------------------------------------------- # 修改用戶創建的默認shell:/sbin/nologin #----------------------------------------------------------------------------- [root@localhost mail]# useradd -D -s /sbin/nologin [root@localhost mail]# useradd -D GROUP=100 HOME=/home INACTIVE=-1EXPIRE= SHELL=/sbin/nologin SKEL=/etc/skel CREATE_MAIL_SPOOL=yes #----------------------------------------------------------------------------- # 1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為"Gentoo Distribution" #----------------------------------------------------------------------------- [root@centos7 Packages]# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo [root@centos7 Packages]# getent passwd gentoo gentoo:x:1001:1001:Gentoo Distribution:/home/gentoo:/bin/csh [root@centos7 Packages]# groups gentoogentoo : gentoo root bin #----------------------------------------------------------------------------- # 2、創建下面的用戶、組和組成員關系 # 名字為admins 的組 # 用戶natasha,使用admins 作為附屬組 # 用戶harry,也使用admins 作為附屬組 # 用戶sarah,不可交互登錄系統,且不是admins 的成員, # natasha,harry,sarah密碼都是centos #----------------------------------------------------------------------------- [root@centos7 Packages]# groupadd admins [root@centos7 Packages]# useradd -G admins natasha [root@centos7 Packages]# useradd -G admins harry [root@centos7 Packages]# useradd -s /sbin/nologin sarah [root@centos7 Packages]# echo centos | passwd --stdin sarah Changing password for user sarah. passwd: all authentication tokens updated successfully. [root@centos7 Packages]# echo centos | passwd --stdin harry Changing password for user harry. passwd: all authentication tokens updated successfully. [root@centos7 Packages]# echo centos | passwd --stdin natasha Changing password for user natasha. passwd: all authentication tokens updated successfully. [root@centos7 Packages]# getent passwd natasha harry sarah natasha:x:1002:1003::/home/natasha:/bin/bash harry:x:1003:1004::/home/harry:/bin/bash sarah:x:1004:1005::/home/sarah:/sbin/nologin [root@centos7 Packages]# groups natasha harry sarah natasha : natasha admins harry : harry admins sarah : sarah
-
其他參考
newusers passwd格式文件:批量創建用戶
chpasswd :批量修改用戶口令
#----------------------------------------------------------------------------- # 批量創建用戶:newusers filename #----------------------------------------------------------------------------- [root@centos7 testdir]# cat user.txt hehe:x:2000:2000::/home/hehe:/bin/bash hehe2:x:2000:2000::/home/hehe2:/bin/bash hehe3:x:2000:2000::/home/hehe3:/bin/bash hehe4:x:2000:2000::/home/hehe4:/bin/bash hehe5:x:2000:2000::/home/hehe5:/bin/bash [root@centos7 testdir]# newusers user.txt #----------------------------------------------------------------------------- # 批量設定密碼:chpasswd # 1) cat passwdfile | chpasswd # 2) echo mage:centos | chpasswd # 3) echo centos | passwd --stdin mage &> /dev/null #----------------------------------------------------------------------------- [root@centos7 testdir]# cat passwd.txt hehe:123456 hehe2:123456 hehe3:123456 hehe4:123456 hehe5:123456 [root@centos7 testdir]# cat passwd.txt | chpasswd #----------------------------------------------------------------------------- # 拷貝默認配置文件等: # 1) cp -r /etc/skel/.[^.]* /path/to/homedir # 2) cp -r `ls -A` /path/to/homedir (這種方法要求用戶當前處在/etc/skel) # 3) cp -r /etc/skel/. /path/to/homedir (注意/etc/skel/.和 /etc/skel/.*的差異) #----------------------------------------------------------------------------- [root@centos7 testdir]# cd /etc/skel [root@centos7 skel]# ls -a . .. .bash_logout .bash_profile .bashrc .mozilla [root@centos7 skel]# ls /home gentoo harry hehe hehe2 hehe3 hehe4 hehe5 liang natasha sarah [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe2 [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe3 [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe4 [root@centos7 skel]# cp -r /etc/skel/.[^.]* /home/hehe5 [root@centos7 skel]# ls -a /home/hehe3 . .. .bash_logout .bash_profile .bashrc .mozilla
usermod
-
語法
usermod [OPTION] login
-
參數
header 1 | header 2 |
---|---|
-a | 新增附加組 |
-u UID | 新UID |
-g GID | 新基本組 |
-G GROUP1[,GROUP2,…[,GROUPN]]] | 新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append; |
-s SHELL | 新的默認SHELL; |
-c 'COMMENT' | 新的注釋信息; |
-d HOME | 新家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;若要創建新家目錄并移動原家數據,同時使用-m選項 |
-l login_name | 新的名字; |
-L | lock指定用戶,在/etc/shadow 密碼欄的增加 ! |
-U | unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉 |
-e YYYY-MM-DD | 指明用戶賬號過期日期; |
-f INACTIVE | 設定非活動期限; |
-
示例
#----------------------------------------------------------------------------- # 修改hehe: # 1)設定UID=20000, 主組=liang,附加組=bin,root,shell=/bin/csh # 2)自動創建家目錄=/testdir/hehedir,并移動其下文件 # 3)重命名username=newhehe,增加備注=hehe test # 4)設定帳號過期時間=2017-08-01,非活動時間=10天 #----------------------------------------------------------------------------- [root@centos7 skel]# getent passwd hehe hehe:x:2000:2000::/home/hehe:/bin/bash [root@centos7 skel]# usermod -u 20000 -g liang -G bin,root -s /bin/csh -d /testdir/hehedir -m -c "hehe test" -l newhehe -e 2017-08-01 -f 10 hehe [root@centos7 skel]# getent passwd newhehe newhehe:x:20000:1000:hehe test:/testdir/hehedir:/bin/csh [root@centos7 skel]# getent shadow newhehe newhehe:$6$.VWAU/eiQyR/M$vn/bC13Qyy……lLet0wV4BNzhfQ/:17014:0:99999:7:10:17379: [root@centos7 skel]# cd /testdir/hehedir [root@centos7 hehedir]# ls -a /testdir/hehedir . .bash_history .bash_profile .cache .mozilla .. .bash_logout .bashrc .config [root@centos7 hehedir]# ll /testdir total 2 -rw-r--r--. 1 root root 64 Aug 1 16:56 passwd.txt -rw-r--r--. 1 root root 203 Aug 1 17:01 user.txt #----------------------------------------------------------------------------- # 為用戶newhehe新增附加組:bin,root #----------------------------------------------------------------------------- [root@centos7 hehedir]# groups newhehe newhehe : liang ftp [root@centos7 hehedir]# usermod -aG bin,root newhehe [root@centos7 hehedir]# groups newhehe newhehe : liang root bin ftp #----------------------------------------------------------------------------- # 清空sarah的附加組 #----------------------------------------------------------------------------- [root@centos7 hehedir]# usermod -G "" sarah [root@centos7 hehedir]# usermod -G sarah sarah
userdel
-
語法
userdel [OPTION]… login
-
參數
-r: 刪除用戶家目錄;
-
示例
[root@centos7 hehedir]# userdel -r natasha [root@centos7 hehedir]# ls /homegentoo harry hehe2 hehe3 hehe4 hehe5 liang sarah [root@centos7 hehedir]# ll /var/spool/mail/ total 76 -rw-rw----. 1 gentoo mail 0 Aug 1 16:08 gentoo -rw-rw----. 1 harry mail 0 Aug 1 16:13 harry -rw-rw----. 1 liang mail 628 Jul 31 23:11 liang -rw-------. 1 root mail 71445 Jul 22 10:25 root -rw-rw----. 1 rpc mail 0 Jul 21 17:34 rpc -rw-rw----. 1 sarah mail 0 Aug 1 16:15 sarah
id 查看用戶相關的ID信息
-
用法
id [OPTION]… [USER]
-
參數
參數 | 說明 |
---|---|
-u | UID |
-g | GID |
-G | Groups |
-n | Name |
-
示例
[root@localhost ~]# groups bin bin : bin daemon sys [root@localhost ~]# id bin uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)
su 用戶切換(switch user)
-
使用說明
su命令使用戶可以切換用戶和組ID來執行命令。
su不加參數默認切換至root。
為了向后兼容,su默認不會改變用戶當前目錄,只會改變環境變量:HOME, SHELL, 如果目標用戶不是root也會改變LOGNAME 和 USER。
強烈建議所有切換均使用 su – 以避免復雜環境的副作用。
-
參數說明
參數 | 使用說明 |
---|---|
-c command | 切換用戶后執行command |
-, -l, –login | 近似真正登錄,會重置環境變量:HOME,SHELL,USER,LOGNAME,PATH,同時會切換到用戶家目錄 |
-
配置文件
/etc/nologin : 若要限制除管理員外的普通用戶登錄系統,則可以創建該文件(V6 & V7) /run/nologin : V7
[root@localhost ~]# touch /etc/nologin [root@centos7 ~]# echo "The system is maintaining. Try again 2h later." >> /run/nologin [root@centos7 ~]# rm -rf /etc/nologin [root@centos7 ~]# touch /run/nologin [root@centos7 ~]# echo "The system is maintaining. Try again 2h later." >> /run/nologin [root@centos7 ~]# rm -rf /run/nologin
-
示例
#----------------------------------------------------------------------------- # 1. su username:切換后查看環境變量,PATH及當前目錄保持原用戶設定 # 2. su - username:切換后查看環境變量,PATH及當前目錄均切換至當前用戶的設定 # 3. id 、who 均顯示當前切換后的用戶信息 #----------------------------------------------------------------------------- [root@localhost testdir]# su liang ### su liang 不完全切換至liang用戶 [liang@localhost testdir]$ id uid=500(liang) gid=501(liang) groups=501(liang) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liang@localhost testdir]$ whoami liang [root@localhost testdir]# su - liang ### su - liang 完全切換至liang用戶 [liang@localhost ~]$ id uid=500(liang) gid=501(liang) groups=501(liang) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [liang@localhost ~]$ whoami liang #----------------------------------------------------------------------------- # 1. su username:切換后查看環境變量,PATH及當前目錄保持原用戶設定 # 2. su - username:切換后查看環境變量,PATH及當前目錄均切換至當前用戶的設定 # 3. id 、who 均顯示當前切換后的用戶信息 #----------------------------------------------------------------------------- [liang@localhost testdir]$ echo -e "$HOME \n$SHELL \n$USER \n$LOGNAME \n$PATH" ### 從root 不完全切換su liang 之后查看環境變量 /home/liang /bin/csh liang liang /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost testdir]# echo -e "$HOME \n$SHELL \n$USER \n$LOGNAME \n$PATH" ### 回到 root 查看環境變量 /root /bin/bash root root /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [liang@localhost ~]$ echo -e "$HOME \n$SHELL \n$USER \n$LOGNAME \n$PATH" ### 從root 完全切換 su liang 后查看環境變量 /home/liang /bin/csh liang liang /usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin #----------------------------------------------------------------------------- # 4. su :不完全切換,使用 w、who、finger 無法看到該登錄用戶,但查看系統進程可以發現切換后用戶發起的進程, #----------------------------------------------------------------------------- [liang@localhost testdir]$ w ### 不完全切換后,w查看用戶信息 21:00:31 up 15:17, 3 users, load average: 0.31, 0.40, 0.38USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 Tue16 28:32m 4.09s 4.09s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var root pts/0 10.1.250.53 16:22 0.00s 0.20s 0.03s w john tty7 :1 Tue16 28:32m 6.49s 0.47s pam: gdm-password [liang@localhost ~]$ w ### 完全切換后,w查看用戶信息 21:05:02 up 15:22, 3 users, load average: 0.01, 0.19, 0.30USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 Tue16 28:36m 4.09s 4.09s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var root pts/0 10.1.250.53 16:22 0.00s 0.17s 0.00s w john tty7 :1 Tue16 28:36m 6.50s 0.47s pam: gdm-password [liang@localhost testdir]$ who ### 不完全切換后,who查看登錄用戶信息root tty1 2016-08-02 16:28 (:0) root pts/0 2016-08-03 16:22 (10.1.250.53) john tty7 2016-08-02 16:36 (:1) [liang@localhost ~]$ who ### 完全切換后,who查看登錄用戶信息root tty1 2016-08-02 16:28 (:0) root pts/0 2016-08-03 16:22 (10.1.250.53) john tty7 2016-08-02 16:36 (:1) [liang@centos7 root]$ finger ### 不完全切換后,finger查看登錄用戶信息Login Name Tty Idle Login Time Office Office Phone Host root root *:0 Aug 2 10:01 (:0) root root pts/0 Aug 4 09:11 (10.1.250.53) root root pts/1 42 Aug 4 09:11 (10.1.250.53) [liang@centos7 ~]$ finger ### 完全切換后,finger查看登錄用戶信息Login Name Tty Idle Login Time Office Office Phone Host root root *:0 Aug 2 10:01 (:0) root root pts/0 Aug 4 09:11 (10.1.250.53) root root pts/1 42 Aug 4 09:11 (10.1.250.53) [liang@localhost testdir]$ ps aux | grep ps ### 不完全切換后,查看系統進程root 64 0.0 0.0 0 0 ? S 05:42 0:00 [kpsmoused] root 2247 0.0 0.1 189124 3504 ? Ss 05:43 0:00 cupsd -C /etc/cups/cupsd.conf liang 7856 0.0 0.0 110248 1148 pts/0 R+ 21:00 0:00 ps aux liang 7857 0.0 0.0 103320 856 pts/0 S+ 21:00 0:00 grep ps [liang@localhost ~]$ ps aux |grep ps ### 完全切換后,查看系統進程root 64 0.0 0.0 0 0 ? S 05:42 0:00 [kpsmoused] root 2247 0.0 0.1 189124 3504 ? Ss 05:43 0:00 cupsd -C /etc/cups/cupsd.conf liang 7907 0.0 0.0 110244 1148 pts/0 R+ 21:04 0:00 ps aux liang 7908 0.0 0.0 103320 856 pts/0 S+ 21:04 0:00 grep ps #----------------------------------------------------------------------------- # 5. su username -c 'COMMAND' : 使用liang身份執行COMMAND #----------------------------------------------------------------------------- [root@centos7 ~]# su - liang -c 'echo $SHELL'/bin/bash [root@centos7 ~]# #----------------------------------------------------------------------------- # 6. 在su 命令中,單引號 與 雙引號 的差異 #----------------------------------------------------------------------------- [root@centos7 ~]# su - liang -c 'echo $USER' liang [root@centos7 ~]# su - liang -c "echo $USER" root
passwd
-
語法說明
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
-
參數說明
參數 | 使用說明 |
---|---|
-l | 鎖定指定用戶 |
-u | 解鎖指定用戶 |
-e | 強制用戶下次登錄修改密碼(相當于 chage -d 0 username) |
-n mindays | 指定最短使用期限 |
-x maxdays | 最大使用期限 |
-w warndays | 提前多少天開始警告 |
-i inactivedays | 非活動期限 |
–stdin | 從標準輸入接收賬戶密碼(echo "password" |
chage
設置用戶密碼過期信息
-
語法說明
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
-
參數說明
參數 | 使用說明 |
---|---|
-d LAST_DAY | 設定密碼最后更改時間(0:強制用戶下次登錄必須修改密碼) |
-E EXPIRE_DATE | 設定用戶帳號不可用的日期(-1:去掉賬戶的expiration date) |
-I INACTIVE | 指定用戶密碼過期后多久帳號將被鎖定(-1:去掉賬戶的inactivity) |
-l | 最大使用期限 |
-m MIN_DAYS | 設定多少天后用戶可以修改密碼(0:用戶可以隨時修改密碼) |
-M MAX_DAYS | 設定密碼最大有效天數(若 MAX_DAYS+LAST_DAY < CURRENT_DAY,要求用戶在使用賬戶前即更改密碼;-1 清楚驗證密碼有效時間) |
-W WARN_DAYS | 設定密碼過期日多少天之前提醒用戶修改 |
-
示例
#----------------------------------------------------------------------------- # /etc/shadow 格式: # loginName:password:last change:min change age:max useage:warning period:inactivity period:expiration date:reserve filed #----------------------------------------------------------------------------- [root@centos7 ~]# getent shadow wangcai ### wangcai 原始信息 wangcai:!!:0:0:99999:7::: #----------------------------------------------------------------------------- # 1)chage -d 'YYYY-MM-DD'|DAYS USERNAME:設定密碼最后更改時間(0:強制用戶下次登錄必須修改密碼) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -d '2016-08-01' wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0:99999:7::: ### 從1970-01-01后17014天 #----------------------------------------------------------------------------- # 2)chage -E 'YYYY-MM-DD'|DAYS USERNAME:設定用戶帳號不可用的日期(-1:去掉賬戶的expiration date) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -E '2017-08-01' wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0:99999:7::17379: #----------------------------------------------------------------------------- # 3)chage -I DAYS USERNAME:指定用戶密碼過期后多久帳號將被鎖定(-1:去掉賬戶的inactivity) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -I 14 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0:99999:7:14:17379: #----------------------------------------------------------------------------- # 4)chage -l USERNAME:列示賬戶期限信息 #----------------------------------------------------------------------------- [root@centos7 ~]# chage -l wangcai Last password change : Aug 01, 2016 Password expires : never Password inactive: never Account expires: Aug 01, 2017 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires: 7 #----------------------------------------------------------------------------- # 4)chage -m DAYS USERNAME:設定多少天后用戶可以修改密碼(0:用戶可以隨時修改密碼) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -m 3 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:3:99999:7:14:17379: #----------------------------------------------------------------------------- # 5)chage -M DAYS USERNAME:設定密碼最大有效天數(若 MAX_DAYS+LAST_DAY<CURRENT_DAY,要求用戶在使用賬戶前即更改密碼;-1 清楚驗證密碼有效時間) #----------------------------------------------------------------------------- [root@centos7 ~]# chage -M 365 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:3:365:7:14:17379: #----------------------------------------------------------------------------- # 6)chage -W DAYS USERNAME:設定密碼過期日多少天之前提醒用戶修改 #----------------------------------------------------------------------------- [root@centos7 ~]# chage -W 15 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:3:365:15:14:17379: #----------------------------------------------------------------------------- # 7)清除設定:chage -E -1 -I -1 -m 0 -M -1 wangcai #----------------------------------------------------------------------------- [root@centos7 ~]# chage -E -1 -I -1 -m 0 -M -1 wangcai [root@centos7 ~]# getent shadow wangcai wangcai:!!:17014:0::15::: [root@centos7 ~]# chage -l wangcaiLast password change : Aug 01, 2016Password expires : neverPassword inactive : neverAccount expires : neverMinimum number of days between password change : 0Maximum number of days between password change : -1Number of days of warning before password expires : 15
groupadd
-
語法格式
groupadd [OPTION]... group_name
-
參數說明
參數 | 使用說明 |
---|---|
-g, –gid GID | 設定GID(非負整數),僅當-o配合時允許重復使用,否則唯一 |
-K, –key KEY=VALUE | 修改/etc/login.defs的設定(如GID_MIN, GID_MAX),格式:-K GID_MIN=100 -K GID_MAX=499 |
-o, –non-unique | 允許用戶創建一個同一ID的組 |
-p, –password PASSWORD | 設定組密碼,改密碼為已經加密過的密碼(非明文) |
-r, –system | 創建系統組(范圍:/etc/login.defs[SYS_GID_MIN ~ SYS_GID_MAX]) |
-
示例
#----------------------------------------------------------------------------- # /etc/group組及其屬性信息 格式: groupName:passwd:GID:附加組userList #----------------------------------------------------------------------------- [root@localhost ~]# groupadd -r systestliang ### 創建系統組 [root@localhost ~]# getent group systestliang systestliang:x:491: [root@localhost ~]# usermod -G systestliang tom ### 設置用戶附加組為 systestliang [root@localhost ~]# groupdel systestliang ### 刪除systestliang組,不抱錯 [root@localhost ~]# usermod -g systestliang tom ### 設定用戶主組為 systestliang [root@localhost ~]# groupdel systestliang ### 刪除組報錯 groupdel: cannot remove the primary group of user 'tom' #----------------------------------------------------------------------------- # /etc/group & /etc/gshadow 中的userList指的是將該組作為附加組的成員 #----------------------------------------------------------------------------- [root@localhost ~]# usermod -g systestliang tom ### 設定用戶主組為 systestliang [root@localhost ~]# getent group systestliang systestliang:x:491: [root@localhost ~]# getent gshadow systestliang systestliang:!:: [root@localhost ~]# usermod -G systestliang john ### 設置用戶附加組為 systestliang [root@localhost ~]# getent gshadow systestliang systestliang:!::john [root@localhost ~]# getent group systestliang systestliang:x:491:john
groupdel
-
示例
#----------------------------------------------------------------------------- # 刪除組時,若組為某用戶的主組則不可刪除,需清楚后再刪;若組內有附加成員,則可刪 #----------------------------------------------------------------------------- [root@localhost ~]# usermod -G systestliang tom ### 設置用戶附加組為 systestliang [root@localhost ~]# groupdel systestliang ### 刪除systestliang組,不抱錯 [root@localhost ~]# usermod -g systestliang tom ### 設定用戶主組為 systestliang [root@localhost ~]# groupdel systestliang ### 刪除組報錯 groupdel: cannot remove the primary group of user 'tom'
groupmod
-
語法格式
groupmod [options] GROUP
-
參數說明
參數 | 使用說明 |
---|---|
-g, –gid GID | 修改GID(非負整數),僅當-o配合時允許重復使用,否則唯一 |
-n, –new-name NEW_GROUP | 修改組名 |
-o, –non-unique | 允許修改組ID時,使用相同的GID |
-p, –password PASSWORD | 修改組密碼,改密碼為已經加密過的密碼(非明文) |
gpasswd
-
語法格式
gpasswd [OPTION] GROUP
-
參數說明
參數 | 使用說明 |
---|---|
-a user | 將user添加至指定組中; |
-d user | 從指定組中移除用戶user |
-A user1,user2,… | 設置有管理權限的用戶列表 |
-
參考命令
newgrp Groupname:臨時切換基本組,如果用戶不屬于該組,則需要組密碼
[alice@localhost ~]$ newgrp tomPassword: Invalid password.
groupmems
-
語法格式
groupmems [options] [action]
-
參數說明
options: -g, --group groupname 更改為指定組 (只有root) Actions: -a, --add username 指定用戶加入組 -d, --delete username 從組中刪除用戶 -p, --purge 從組中清除所有成員 -l, --list 顯示組成員列表
-
示例
[root@localhost ~]# groupmems -l -g bin ### 列示組用戶成員 bin daemon user2 [root@localhost ~]# getent group bin bin:x:1:bin,daemon,user2 [root@localhost ~]# groupmems -g bin -a john ### 向組添加成員 [root@localhost ~]# groupmems -l -g bin ### 列示組用戶成員 bin daemon user2 john [root@localhost ~]# getent group bin bin:x:1:bin,daemon,user2,john
groups
-
語法格式
groups [OPTION].[USERNAME]… 查看用戶所屬組列表
-
示例
[root@localhost ~]# groups binbin : bin daemon sys
其他命令(chfn、chsh、finger、newgrp、vipw、vigr、pwck、grpck、strace)
-
示例
#----------------------------------------------------------------------------- # chfn username: 修改用戶備注 #----------------------------------------------------------------------------- [root@centos7 ~]# chfn wangcai Changing finger information for wangcai. Name []: wangcai Office []: tiantang Office Phone []: 110 Home Phone []: 120 Finger information changed. #----------------------------------------------------------------------------- # chsh -s SHELL username: 修改用戶shell #----------------------------------------------------------------------------- [root@centos7 ~]# chsh -s /bin/csh wangcai Changing shell for wangcai.Shell changed. #----------------------------------------------------------------------------- # finger username: 查看用戶信息 #----------------------------------------------------------------------------- [root@centos7 ~]# getent passwd wangcai wangcai:x:1001:1001:wangcai,tiantang,110,120:/home/wangcai:/bin/csh [root@centos7 ~]# finger wangcai Login: wangcai Name: wangcai Directory: /home/wangcai Shell: /bin/cshOffice: tiantang, 110 Home Phone: 120 Last login Thu Aug 4 11:06 (CST) on pts/0No mail.No Plan. #----------------------------------------------------------------------------- # vipw == vi /etc/passwd :若要直接修改/etc/passwd,建議使用vipw,修改后會自動檢查格式是否正確 # vigr == vi /etc/group :若要直接修改/etc/group ,建議使用vigr,修改后會自動檢查格式是否正確 # pwck (password check):檢查/etc/passwd文件 # grpck (group check) :檢查/etc/group文件 #----------------------------------------------------------------------------- [root@localhost Packages]# pwck 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 user 'saslauth': directory '/var/empty/saslauth' does not exist user 'pulse': directory '/var/run/pulse' does not exist pwck: no changes [root@localhost Packages]# grpck group liang has an entry in /etc/gshadow, but its password field in /etc/group is not set to 'x' grpck: no changes #----------------------------------------------------------------------------- # strace:跟蹤命令執行過程 #----------------------------------------------------------------------------- [root@centos7 hehedir]# strace groupmems -l -g sarah
原創文章,作者:taobaibai,如若轉載,請注明出處:http://www.www58058.com/31286