Linux用戶管理

一,用戶/組基本概念

1,概念

Users and groups:
. Every process (running program) on the system runs as a particular user.
. Every file is owned by a particular user.
. Access to files and directories are restricted by user.
. The user associated with a running process determines the files and directories accessible to that process.

2,查看當前登錄的用戶信息

    [root@tianyun ~]# id
    uid=0(root) gid=0(root) groups=0(root)

3,查看文件的owner

    [root@tianyun ~]# ll /home/
    drwx------. 4 alice alice 4096 Jun 2 15:59 alice
    drwx------. 2 root root 16384 Jun 1 23:09 lost+found
    drwxr-xr-x 2 root root 4096 Jun 2 15:33 tianyun

4,查看運行的進程username

    [root@tianyun ~]# ps aux
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.0 19360 1536 ? Ss 13:29 0:00 /sbin/init
    root 2 0.0 0.0 0 0 ? S 13:29 0:00 [kthreadd]
    root 3 0.0 0.0 0 0 ? S 13:29 0:00 [migration/0]
    root 4 0.0 0.0 0 0 ? S 13:29 0:00 [ksoftirqd/0]

5,用戶組信息存儲的文件

 /etc/passwd(7列)
 root:x:0:0:root:/root:/bin/bash
用戶名:x:uid:gid:描述:HOME:shell
系統約定: RHEL6
uid: 0 特權用戶
uid: 1~499 系統用戶
uid: 500+ 普通用戶
The root user
. uid is 0
. all power
. This user has the power to override normal privileges on the file system
. installing or removing software and to manage system files and directorie
. Most devices can only be controlled by root

/etc/shadow(8列)
 root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:   :   :
 加密算法$id$salt$encrypted
$1: MD5
$5: SHA-256
$6: SHA-512
8列所代表的含義
 root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:15636:0:99999:7:: :
--------------------------
1)“登錄名”是與/etc/passwd文件中的登錄名相一致的用戶賬號
2)“口令”字段存放的是加密後的用戶口令字,如果爲空,則對應用戶沒有口令,登錄時不需要口令;   
星號代表帳號被鎖定;
雙歎號表示這個密碼已經過期了。
$6$開頭的,表明是用SHA-512加密的,
$1$ 表明是用MD5加密的
$2$ 是用Blowfish加密的
$5$ 是用 SHA-256加密的。

3)“最後一次修改時間”表示的是從某個時刻起,到用戶最後一次修改口令時的天數。時間起點對不同的系統可能不一樣。例如在SCOLinux中,這個時間起點是1970年1月1日。
4)“最小時間間隔”指的是兩次修改口令之間所需的最小天數。
5)“最大時間間隔”指的是口令保持有效的最大天數。
6)“警告時間”字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
7)“不活動時間”表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數。(軟限制。到期後多少天就不能用賬號了。)
8)“失效時間”字段給出的是一個絕對的天數,如果使用了這個字段,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是一個合法的賬號,也就不能再用來登錄了。(硬限制。)
9) 保留
/etc/group
root:x:0:
[root@tianyun ~]# man 5 passwd
PASSWD(5)                      File formats                     PASSWD(5)

NAME 名稱
passwd - 密碼文件

描述
       Passwd           是個文本文件,           它包含了一個系統帳戶列表,
       給出每個帳戶一些有用的信息,比如用戶 ID,組 ID,  家目錄,  shell,等.
       通常它也包含了每個用戶經過加密的密碼.
       它通常應該是可讀的(許多命令,工具程序,象  ls(1)  用它做用戶   Id
       到用戶名稱的映射),但是隻允許超級用戶有寫方式權限.

       在過去美好的日子裏,這種一般的讀許可沒有什麼大問題.
       每個人都能讀到加密了的密碼,因爲硬件太慢以至於不能解開一個
       精選的密碼,另外,這基本假定是爲友好的使用團體使用的.
       現在,許多人運行一些版本的影子密碼套件,它們在         /etc/passwd
       的密碼域裏是  *,而不再是加密的口令,  加密的口令放在  /etc/shadow
       中,那個文件只有超級用戶能讀.

       不管是否使用了影子密碼,許多系統管理員使用一個星號在加密的密碼字段
       以確保用戶不能鑑別他(她)自己的密碼. (見下面的注意)

       如果你建立了一個新的登錄,首先放個星號在密碼字段,         然後使用
       passwd(1) 設置它.

     (密碼文件)裏每行一條記錄,並且每行有這樣的格式:

      account:password:UID:GID:GECOS:directory:shell
    (帳號:密碼:用戶ID:組ID:一般的信息:目錄:shell)

[root@tianyun ~]# man 5 shadow

SHADOW(5)                       文件格式和轉化                       SHADOW(5)

名稱
       shadow - 影子化了的密碼文件
描述
       shadow 是一個文件,它包含系統賬戶的密碼信息和可選的年齡信息。
       如果沒有維護好密碼安全,此文件絕對不能讓普通用戶可讀。
       此文件的每行包括 9 個字段,使用半角冒號 (“:”) 分隔,順序如下:
       登錄名
           必須是有效的賬戶名,且已經存在於系統中。
       加密了的密碼
           請參考 crypt(3) 來了解關於解析此字符串的細節信息。
           如果密碼字段包含一些不是 crypt(3) 合法結果的字符,比如 ! 或
           *,用戶將無法使用 unix 密碼登錄(但是可以通過其它方法登錄系統)。
           此字段可以爲空,此時認證爲特定的登錄名時,不要求密碼。然而,一些讀取
           /etc/shadow
           文件的應用程序,在密碼字段爲空時,可能決定禁止任何訪問。
           以歎號開始的密碼字段意味着密碼被鎖定。該行的剩餘字符表示鎖定之前的密碼。
      最後一次更改密碼的日期
           最近一次更改密碼的時間,表示從1970年1月1日開始的天數。
           0 有特殊意思,表示用戶應該在下次登錄系統時更改密碼。
           空字段表示密碼年齡功能被禁用。
       密碼的最小年齡
           最小密碼年齡是指,用戶一次更改密碼之後,要等多長時間纔再次被允許更改密碼。
           空字段或 0 表示沒有最小密碼年齡。
       最大密碼年齡
           最大密碼年齡是指,這寫天之後,用戶必須更改密碼。
           這寫天之後,密碼仍然可用。用戶將會在下次登錄的時候被要求更改密碼。
           空字段表示沒有最大密碼年齡,沒有密碼警告時間段,沒有密碼禁用時間段(請看下邊)。
           如果最大密碼年齡小於最小密碼年齡,用戶將會不能更改密碼。
       密碼警告時間段
           密碼過期之前,提前警告用戶的的天數(請參考上邊的密碼的最大年齡)。
           空字段或者 0 表示沒有密碼警告期。
       密碼禁用期
           密碼過期(查看上邊的密碼最大年齡)後,仍然接受此密碼的天數(在此期間,用戶應該在下次登錄時修改密碼)。
           密碼到期並且過了這個寬限期之後,使用用戶的當前的密碼將會不能登錄。用戶需要聯繫系統管理員。
           空字段表示沒有強制密碼過期。
       賬戶過期日期
           賬戶過期的日期,表示從1970年1月1日開始的天數。
           注意,賬戶過期不同於密碼過期。賬戶過期時,用戶將不被允許登錄;密碼過期時,用戶將不被允許使用其密碼登
錄。
           空字段表示賬戶永不過期。
           應該避免使用
           0,因爲它既能理解成永不過期也能理解成在1970年1月1日過期。
       保留字段
           此字段保留作將來使用。
文件
        /etc/passwd
           用戶賬戶信息。
       /etc/shadow
           安全用戶賬戶信息。
      /etc/shadow-
           /etc/shadow 的備份文件。
           注意,此文件由 shadow
           工具集使用,而不是所有的用戶和密碼管理工具都會使用。

[root@tianyun ~]# man 5 group(不演示了)
關於man手冊

1、用戶命令
2、系統調用
3、C庫調用
4、設備文件及特殊文件
5、配置文件格式
6、遊戲
7、雜項
8、管理命令及守護進程
9、Linux內核API(CentOS7以後出現)
之所以分這九個章節是應爲有的命令分屬不同類,查看命令具體屬於man中的哪個章節需要使用命令

二,用戶/組管理(重點掌握)

1,用戶

1.1 創建用戶未指定選項

[root@tianyun ~]# useradd user01
. 未指定該用戶的主組
. 未指定該用戶的附加組
. 未指定用戶的HOME
. 未指定用戶的SHELL
. 未指定用戶的UID...
[root@tianyun ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group
/etc/passwd:user01:x:507:512::/home/user01:/bin/bash
/etc/shadow:user01:!!:16589:0:99999:7:::
/etc/group:user01:x:512:

[root@tianyun ~]# id user01
uid=507(user01) gid=512(user01) groups=512(user01)

[root@tianyun ~]# ls /var/spool/mail/user01
/var/spool/mail/user01

小結:
如果創建一個用戶時,未指定任何選項,系統會創建一個和用戶名相同的組作爲用戶的Primary Group.

1.2 創建用戶並指定選項

[root@tianyun ~]# useradd user02 -u 1503 //創建用戶usr02,指定uid
[root@tianyun ~]# useradd user03 -d /aaa //創建用戶user03 指定家目錄
[root@tianyun ~]# useradd user05 -s /sbin/nologin //創建用戶並指定shell
[root@tianyun ~]# useradd user07 -G hr,it,fd //創建用戶,指定附加組
[root@tianyun ~]# useradd user10 -u 4000 -s /sbin/nologin

1.3 刪除用戶

[root@tianyun ~]# userdel user10
//刪除用戶user10,但不刪除用戶家目錄和mail spool
[root@tianyun ~]# ll -d /home/user10/
drwx------ 3 506 510 4096 09-01 21:14 /home/user10/
[root@tianyun ~]# ll /var/spool/mail/user10
-rw-rw---- 1 506 mail 0 09-01 21:14 /var/spool/mail/user10

[root@tianyun ~]# userdel -r user2
 //刪除用戶user2,同時刪除用戶家目錄和mail spool

1.4 用戶密碼

方法一:root修改其他用戶(alice)密碼
[root@tianyun ~]# passwd alice
方法二:用戶(zhuzhu)登錄,自己修改密碼。
[zhuzhu@tianyun ~]$ passwd

1.5 組成員管理

注意:只針對已存在的用戶      -G  組名 組名 ... 用戶名
[root@tianyun ~]# usermod -G hr niuniu2 //覆蓋原有的附加組
[root@tianyun ~]# usermod -G fd,it niuniu2
[root@tianyun ~]# usermod -aG hr niuniu2 //增加新的附加組

1.6 其他選項管理

[root@tianyun ~]# usermod -s /sbin/nologin niuniu2
修改登錄SHELL

2,用戶組

[root@tianyun ~]# groupadd hr

[root@tianyun ~]# groupadd net01 -g 2000
//添加組net01,並指定gid 2000

[root@tianyun ~]# grep 'net01' /etc/group
//查看/etc/group中組net01信息

[root@tianyun ~]# groupdel net01
//刪除組net01

2.1 分類

2.1.1 基本組

隨用戶創建,自動創建的同名組
用戶的基本組,顯示在/etc/passwd

2.1.2 附加組

用於加入的其他組

2.1.3 案例

1 useradd是創建用戶的命令。
2 usermod是修改用戶的命令。
3 groupadd是創建組的命令。
4 -u 制定用戶的UID。
5 -g 制定用戶的基本組。
6 -G 制定用戶的附加組。
7 /etc/passwd 可以查看的是用戶的基本組。
8 /etc/group 可以查看用戶的附加組。

一、創建用戶AAA,同時生成基本組AAA
[root@QF ~]# useradd AAA
[root@QF ~]# grep AAA /etc/passwd
AAA:x:6001:6001::/home/AAA:/bin/bash

二、創建用戶BBB,同時生成基本組BBB
[root@QF ~]# useradd BBB
[root@QF ~]# grep BBB /etc/passwd
BBB:x:6002:6002::/home/BBB:/bin/bash

三、創建組CCC
[root@qf ~]# groupadd CCC
[root@qf ~]# grep CCC /etc/group
CCC:x:7001:

四、修改用戶AAA的基本組爲CCC.
五、查看passwd中,用戶AAA的基本組是CCC。
[root@qf ~]# usermod  AAA   -g CCC
[root@qf ~]# grep AAA /etc/passwd
AAA:x:6001:7001::/home/AAA:/bin/bash

六、修改用戶BBB的附加組爲CCC.
七、查看group中,用戶BBB的附加組是CCC。
[root@qf ~]# usermod  BBB   -G CCC
[root@qf ~]# grep CCC /etc/group
CCC:x:7001:BBB

三,提權(瞭解)

1,永久提權Switching users with su

[alice@tianyun ~]$ useradd u1
-bash: /usr/sbin/useradd: 權限不夠
[alice@tianyun ~]$ su - root
password:
[root@tianyun ~]# useradd u1
成功

2,臨時提權Running commands as root with sudo

以root身份授權普通用戶xulei
[root@tianyun ~]# vim /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL

[root@tianyun ~]# useradd xulei -G wheel
[root@tianyun ~]# id xulei
uid=504(xulei) gid=504(xulei) 組=504(xulei),10(wheel)

# passwd xulei
切換用戶xulei登陸

[xulei@tianyun ~]$ useradd gougou10
-bash: /usr/sbin/useradd: 權限不夠
[xulei@tianyun ~]$ sudo useradd gougou10
[xulei@tianyun ~]$ id gougou10
uid=505(gougou10) gid=505(gougou10) 組=505(gougou10)

四,命令概覽

groupadd,groupdel

useradd,usermod,userdel

passwd,chage

五,擴展知識

1, useradd創建用戶時,參照的文件...

[root@tianyun ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 30
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
CREATE_HOME yes
ENCRYPT_METHOD SHA512

[root@tianyun ~]# vim /etc/default/useradd
SHELL=/sbin/nologin

/etc/login.defs詳解
        man login.defs

/etc/login.defs文件定義了與/etc/password和/etc/shadow配套的用戶限制設定。這個文件是需要的,缺失並不會影響系統的使用,但是也許會產生意想不到的錯誤。

如果/etc/shadow文件裏有相同的選項,則以/etc/shadow裏的設置爲準,也就是說/etc/shadow的配置優先級高於/etc/login.defs。

# *REQUIRED* required
#  Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
#密碼最大有效期
PASS_MIN_DAYS   0
#兩次修改密碼的最小間隔時間
PASS_MIN_LEN    5
#密碼最小長度,對於root無效
PASS_WARN_AGE   7
#密碼過期前多少天開始提示
#
# Min/max values for automatic uid selection in useradd
#創建用戶時不指定UID的話自動UID的範圍
UID_MIN                   500
#用戶ID的最小值
UID_MAX                 60000
#用戶ID的最大值
#
# Min/max values for automatic gid selection in groupadd
#自動組ID的範圍
GID_MIN                   500
#組ID的最小值
GID_MAX                 60000
#組ID的最大值

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local
#當刪除用戶的時候執行的腳本

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes
#使用useradd的時候是夠創建用戶目錄

# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
#用MD5加密密碼
Password aging
       
 last change 最後一次更改密碼的時間
max days 最長過期天數
min days 兩次修改密碼的最小間隔時間
warn days 警告密碼過期時間。
password expired 密碼已過期
 inactive days不活躍的時期
查找修改密碼策略的方法
chage -m 0 -M 90 -W 7 -I 14 username
chage -d 0 username will force a password update on next login.
chage -l username will list a username's current settings.
chage -E YYYY-MM-DD will expire an account on a specific day.

2, 生產環境手動創建用戶示例

[root@tianyun~]# useradd maomao100
[root@tianyun~]# echo 123456 |passwd --stdin maomao100
[root@tianyun~]# chage -d 0 maomao100 //強制用戶在下一次登錄時修改密碼

3, 將多個用戶加入到指定的組

[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# groupadd group1
[root@localhost ~]# gpasswd -a user1 group1
正在將用戶“user1”加入到“group1”組中
[root@localhost ~]# cat /etc/group
group1:x:1011:user1

4,替換某個組的成員

[root@localhost ~]# gpasswd -M user2,user3 group1
[root@localhost ~]# cat /etc/group
group1:x:1011:user2,user3

5,刪除某個組的某個成員

原組中有三個用戶,刪除其中一個用戶。
[root@localhost ~]# grep group1 /etc/group
group1:x:1011:user3,user1,user2
[root@localhost ~]# gpasswd -d user1 group1
正在將用戶“user1”從“group1”組中刪除
[root@localhost ~]# grep group1 /etc/group
group1:x:1011:user3,user2
[root@localhost ~]#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章