什麼是用戶?
用戶須要用帳號來訪問系統,服務和信息。系統中每一個進程都使用一個特定的用戶運行。每一個文件都屬於一個特定的額用戶全部。
對文件和目錄的訪問會收到用戶的限制。根據運行進程相關聯的用戶可肯定該進程能夠訪問的文件和目錄
id命令用於顯示當前已登陸用戶的信息。也能夠將用戶名做爲id命令的參數,來獲取她的基本信息linux
[root@localhost ~]# id uid=0(root) gid=0(root) 組=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@localhost ~]# id root uid=0(root) gid=0(root) 組=0(root)
若要查看與某一文件或目錄相關聯的用戶,可使用ls -l命令(第三列顯示用戶名)算法
[root@localhost ~]# ls -l /tmp/ 總用量 892 -rw-r--r--. 1 root root 1596 8月 20 19:21 anaconda.log drwx------. 2 zhang zhang 25 8月 21 09:49 firefox_zhang drwxr-xr-x. 2 root root 18 8月 20 19:07 hsperfdata_root -rw-r--r--. 1 root root 581 8月 20 19:21 ifcfg.log -rwx------. 1 root root 836 8月 20 19:18 ks-script-DypRd9 -rw-r--r--. 1 root root 0 8月 20 19:20 packaging.log -rw-r--r--. 1 root root 0 8月 20 19:20 program.log -rw-r--r--. 1 root root 0 8月 20 19:20 sensitive-info.log
使用ps命令能夠查看進程信息。默認僅顯示當期shell中的進程。添加a選項能夠查看與終端相關的全部進程。若要查看進程相關聯的用戶,在命令中加u選項shell
[root@localhost ~]# ps au USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 12565 0.1 2.3 324024 44344 tty1 Ssl+ 02:55 1:12 /usr/bin/X :0 -background none -no zhang 55253 0.0 0.1 116688 2932 pts/0 Ss 05:57 0:00 bash root 55322 0.0 0.1 220852 3328 pts/0 S 05:57 0:00 su root 55330 0.0 0.1 116692 3248 pts/0 S+ 05:57 0:00 bash root 63929 0.0 0.1 116576 3388 pts/1 Ss 14:08 0:00 -bash root 64171 0.0 0.0 151064 1816 pts/1 R+ 14:22 0:00 ps au
以上命令的輸出是使用名稱來顯示用戶,可是操做系統內部是按照UID來標識用戶的。默認狀況下,本地用戶名稱和編號的映射被存儲在/etc/passwd中centos
username:password:UID:GID:GECOS:/home/dir:shell username:是UID到名稱的一種映射,便於用戶使用 password:之前是以加密格式保存密碼的位置,如今密碼存在在/etc/shadow中 UID:用戶的ID,標識用戶的標號 GID:組的ID GECOS該字段能夠是任意文本,一般包含用戶的實際姓名 /home/dir 用戶的我的數據和配置文件所處的位置 shell 用戶登陸是運行的程序
什麼是組:bash
與用戶同樣,組也有本身的名稱和編號(GID)。本地組在/etc/group中定義app
組能夠用來協助管理者訪問tcp
建立,修改,鎖定,刪除,本地定義的用戶帳號ui
useradd建立用戶加密
不帶選項運行時,useradd username會爲/etc/passwd 中的全部字段設置合理的默認值,在默認狀況下,useradd命令不會設置任何有效的密碼,用戶必需要等設置了密碼才能夠登陸centos7
useradd --help 能夠顯示用於覆蓋默認值的基本選項,在多數狀況下,相同的選項能夠用戶usermod命令,能夠對現有的用戶進行修改
usermod修改現有用戶
usermod --help 能夠顯示用戶修改帳號的基本選項,一些常見的選項包括
[root@localhost ~]# usermod --help 用法:usermod [選項] 登陸 選項: -c, --comment 註釋 GECOS 字段的新值 -d, --home HOME_DIR 用戶的新主目錄 -e, --expiredate EXPIRE_DATE 設定賬戶過時的日期爲 EXPIRE_DATE -f, --inactive INACTIVE 過時 INACTIVE 天數後,設定密碼爲失效狀態 -g, --gid GROUP 強制使用 GROUP 爲新主組 -G, --groups GROUPS 新的附加組列表 GROUPS -a, --append GROUP 將用戶追加至上邊 -G 中提到的附加組中, 並不從其它組中刪除此用戶 -h, --help 顯示此幫助信息並推出 -l, --login LOGIN 新的登陸名稱 -L, --lock 鎖定用戶賬號 -m, --move-home 將家目錄內容移至新位置 (僅於 -d 一塊兒使用) -o, --non-unique 容許使用重複的(非惟一的) UID -p, --password PASSWORD 將加密過的密碼 (PASSWORD) 設爲新密碼 -R, --root CHROOT_DIR chroot 到的目錄 -s, --shell SHELL 該用戶賬號的新登陸 shell -u, --uid UID 用戶賬號的新 UID -U, --unlock 解鎖用戶賬號 -Z, --selinux-user SEUSER 用戶帳戶的新 SELinux 用戶映射
userdel刪除用戶
userdel username能夠將用戶從/etc/passwd 中刪除,可是默認狀況下保留的家目錄不變
userdel -r username 同事刪除用戶的家目錄
id顯示用戶信息,包括用戶的UID和組成員
id username 將顯示username的用戶信息,包括用戶UID編號和組成成員
[root@localhost ~]# id zhang uid=1000(zhang) gid=1000(zhang) 組=1000(zhang),10(wheel)
passwd設置密碼
passwd username可用於設置用戶的初始密碼或者更改該用戶的密碼
root用戶能夠將密碼設置爲任何值,即便密碼不符合規範,也是會成功更新
普通用戶的長度必須至少8個字符,切不能夠是詞語,用戶名或者之前使用過的類似的密碼
UID範圍:
特定UID編號和編號範圍可供RHEL用戶特殊的目的
UID 0始終分配至超級用戶root
UID 1-999 是系統用戶,
UID 1000+可供分配給普通用戶的範圍
練習:
添加用戶alex
[root@localhost ~]# useradd alex
經過檢查/etc/passwd 文件確認alex已經添加
[root@localhost ~]# tail -2 /etc/passwd zhang:x:1000:1000:zhang:/home/zhang:/bin/bash alex:x:1001:1001::/home/alex:/bin/bash
使用passwd命令初始化alex的密碼
[root@localhost ~]# passwd alex 更改用戶 alex 的密碼 。 新的 密碼: 從新輸入新的 密碼: passwd:全部的身份驗證令牌已經成功更新。
建立,修改,刪除本地定義的組帳戶
管理補充組:組必須存在後,用戶才能添加到其中
groupadd 建立組
groupadd groupname 若是不帶選項,將使用/etc/login.defs文件中指定範圍內的下一個可用GID
-g GID用戶指定具體的GID
-r 選項將使用/ect/login.defs文件中有效系統GID編號範圍內的GUID建立系統組
groupmod 修改現有的組
-n 選項用戶將現有的組名的GID映射,指定到新的名稱
-g 用於指定新的GID
groupdel刪除組
若是組是任意現有用戶的主要組,不能被刪除,與userdel同樣,先檢查全部的文件系統,確保沒有任何遺留由該組擁有的任何文件
usermod變動組成員
組成員能夠經過用戶管理進行控制,經過usermod -g groupname更改用戶的主要組
經過usermod -aG groupname username將用戶添加到補充組
能夠分配一個普通用戶到管理員組
[root@localhost ~]# gpasswd -A alex wheel
不像usermod命令必需要root運行,gpasswd可讓一個普通用戶運行,可是用戶僅可以添加和刪除除他們以管理員分配的組成員
[root@localhost ~]# gpasswd -a zhang wheel
正在將用戶「zhang」加入到「wheel」組中
練習:
建立名爲shakespeare,組ID爲30000的補充組
[root@localhost ~]# groupadd -g 30000 shakespeare
建立名爲artists的補充組
[root@localhost ~]# groupadd artists
查看/etc/group文件,已肯定shakespeare和artists已經添加成功
[root@localhost ~]# tail -5 /etc/group tcpdump:x:72: zhang:x:1000: alex:x:1001: shakespeare:x:30000: artists:x:30001:
將alex用戶添加到做爲補充組的shakespeare中
[root@localhost ~]# usermod -G shakespeare alex
確認已使用id命令添加了alex
[root@localhost ~]# id alex uid=1001(alex) gid=1001(alex) 組=1001(alex),30000(shakespeare)
在shadow文件中手工鎖定帳號,設置密碼時效策略
陰影密碼和密碼策略
在很早之前,加密的密碼被存儲在刻度的/etc/passwd文件中,
如今密碼哈希中存儲的三段信息
$1$gCjLa2/Z$6Pu0EK0AzfCjxjv2hoL0B/
一、1.哈希算法。數字1表示MD5哈希,數字6表示SHA-512哈希
二、gCjLa2/Z,用戶加密哈希的加密鹽,使用加密鹽能夠防止兩個密碼在相同的用戶在/etc/shadow中擁有相同的條目
三、6Pu0EK0AzfCjxjv2hoL0B/ 表示已經加密過的哈希
用戶嘗試登錄時,系統在/etc/shadow中查詢用戶的條目,將用戶的salt和鍵入的未加密密碼組合,在使用指定的哈希算法加密。若是結果與已知加密哈希匹配,則用戶輸入了正確的密碼,反之輸入錯誤
* centos7 支持兩種強大的新的密碼哈希算法SHA-256和SHA-512.
/etc/shadow採用以冒號分割的9個字段
name:password:lastchange:minage:maxage:warning:inactive:expire:blank
name:登陸名稱,必須是系統中的有效帳戶名
password:已加密密碼,密碼字段的開頭爲感嘆號時,表示改密碼已經被鎖定
lastchange:最近一次修改密碼的日期
minage:能夠更改密碼前的最少天數
maxage:能夠更改密碼前的最多天數
warning:密碼即將到期的警告期,表示爲天數
inactive:帳戶在密碼到期後保持活動的天數
expire:帳戶到期日期,以距離1970年1月1日的天數表示
blank:預留字段,供之後使用
chage -m 0 -M 90 -W 7 -I 14 username chage -d 0 username 將強制在下次登陸時更新密碼 chage -l username 將列出用戶名的當前設置 chage -E YYYY-MM-DD 將在指定日期後帳戶過時
注意:
date命令能夠用來計算將來的日期
[root@localhost ~]# date 2018年 08月 22日 星期三 15:20:02 CST [root@localhost ~]# date -d "+45days" 2018年 10月 06日 星期六 15:20:05 CST
限制訪問:
經過chage命令能夠設置帳戶過時,到了該日期沒法以交互方式登陸系統。usermod命令能夠經過-L參數鎖定帳戶
[root@localhost ~]# usermod -L alex
用戶離開公司時,管理員能夠經過usermod命令鎖定帳戶並使其過時
必須使用距離1970年1月1日的天數來指定
[root@localhost ~]# usermod -L -e 1 alex
能夠經過usermod -U username進行解鎖,若是帳戶已通過期,務必也要更改到期日期
* 百度查找nologin shell
得到超級用戶的訪問權限,一超級用戶的身份運行命令管理Linux系統
root用戶
大多數操做系統具備某種類型的超級用戶,即具備系統所有權限的用戶,在centos7中,該用戶就是root用戶。該用戶的特權高於文件系統的一半特權。用戶管理系統
要執行安裝或者刪除軟件操做,以及管理目錄等任務,必須將特權升到root用戶
大多數設備都僅受root控制,可是也有些設備並不是如此。例如usb等移動設備通常用戶就能夠控制
無限制的特權也會帶來不少問題。root用戶具備破壞系統的無限制權限:刪除文件和目錄,刪除用戶帳戶,添加後門等。若是root帳戶泄露,則其餘人就有可能擁有系統的管理控制權限
警告:
在Linux系統上建議不要直接以root身份登陸,若是須要神犬能夠用su或者sudo
利用su切換用戶
su命令可讓用戶切換至另外一個帳號,若是沒有指定用戶名,則使用root帳戶,當普通用戶調用時,系統將提示輸入要切換的目標帳號的密碼:
而root用戶調用時,不須要密碼
[root@localhost ~]# su zhang [zhang@localhost root]$ id zhang uid=1000(zhang) gid=1000(zhang) 組=1000(zhang),10(wheel) [zhang@localhost root]$ su 密碼: [root@localhost ~]# id root uid=0(root) gid=0(root) 組=0(root)
命名 su username會啓動non-login shell ,而命令su -username則啓動login shell,
主要的區別是:su - 會將shell環境設置爲該用戶身份徹底同樣,而su僅以該用戶身份使用當前環境變量設置啓動shell。
練習:
鎖定alex帳戶
[root@localhost ~]# usermod -L alex
嘗試以alex用戶登陸
[root@localhost ~]# su - alex
解鎖alex用戶
[root@localhost alex]# usermod -U alex
更改alex密碼策略,沒90天須要更改密碼
[root@localhost alex]# chage -M 90 alex [root@localhost alex]# chage -l alex 最近一次密碼修改時間 :8月 22, 2018 密碼過時時間 :11月 20, 2018 密碼失效時間 :從不 賬戶過時時間 :1月 02, 1970 兩次改變密碼之間相距的最小天數 :0 兩次改變密碼之間相距的最大天數 :90 在密碼過時以前警告的天數 :7
肯定將來180天后的日期
[root@localhost alex]# date -d "+180days" 2019年 02月 18日 星期一 15:42:16 CST
設置用戶在該日期過時
[root@localhost alex]# chage -E 2020-12-12 alex [root@localhost alex]# chage -l alex 最近一次密碼修改時間 :8月 22, 2018 密碼過時時間 :11月 20, 2018 密碼失效時間 :從不 賬戶過時時間 :12月 12, 2020 兩次改變密碼之間相距的最小天數 :0 兩次改變密碼之間相距的最大天數 :90 在密碼過時以前警告的天數 :7 [root@localhost alex]#