運維基礎-用戶和組管理

什麼是用戶?
用戶須要用帳號來訪問系統,服務和信息。系統中每一個進程都使用一個特定的用戶運行。每一個文件都屬於一個特定的額用戶全部。
對文件和目錄的訪問會收到用戶的限制。根據運行進程相關聯的用戶可肯定該進程能夠訪問的文件和目錄

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

經過su sudo給普通用戶提權

得到超級用戶的訪問權限,一超級用戶的身份運行命令管理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]# 
相關文章
相關標籤/搜索