Linux系統用戶和組

用戶、組和權限管理


Multi-tasks, Multi-Users


每個使用者:

用戶標識、密碼;

Authentication

Authorization

Audition


組:用戶組,用戶容器


用戶類別:

管理員

普通用戶

系統用戶

登錄用戶


用戶標識:UserID, UID

16bits二進制數字:0-65535

管理員:0

普通用戶:1-65635

系統用戶:1-499(CentOS6), 1-999(CentOS7)

登錄用戶:500-60000(CentOS6), 1000-60000(CentOS7)


名稱解析:名稱轉換

Username <--> UID


根據名稱解析庫進行:/etc/passwd


組:

組類別1:

管理員組

普通用戶組

系統組

登錄組


組標識:GroupID, GID

管理員組:0

普通用戶組:1-65635

系統用戶組:1-499(CentOS6), 1-999(CentOS7)

登錄用戶組:500-60000(CentOS6), 1000-60000(CentOS7)


名稱解析:groupname <--> gid

解析庫:/etc/group


組類別2:

用戶的基本組

用戶的附加組


組類別3:

私有組:組名同用戶名,且只包含一個用戶;

公共組:組內包含了多個用戶;


認證信息:

通過比對事先存儲的,與登錄時提供的信息是否一致;

password:

/etc/shadow

/etc/gshadow (組密碼文件)


密碼的使用策略:

1、使用隨機密碼;

2、最短長度不要低於8位;

3、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;

4、定期更換;


加密算法:

對稱加密:加密和解密使用同一個密碼;

非對稱加密:加密和解密使用的一對兒密鑰;

密鑰對兒:

公鑰:public key

私鑰: private key

單向加密:只能加密,不能解密;提取數據特徵碼;

定長輸出

雪崩效應 (相似的兩個原密碼,加密後完全不同)


算法:

md5: message digest, 128bits

sha:secure hash algorithm, 160bits

sha224

sha256

sha384

sha512


在計算之時加salt,添加的隨機數;


/etc/passwd:用戶的信息庫

name:password:UID:GID:GECOS:directory:shell


name: 用戶名

password:可以是加密的密碼,也可是佔位符x;

UID:

GID:用戶所屬的主組的ID號;

GECOS:註釋信息

directory:用戶的家目錄;

shell:用戶的默認shell,登錄時默認shell程序;


/etc/shadow:用戶密碼

用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過期期限:保留字段


/etc/group:組的信息庫

group_name:password:GID:user_list


user_list:該組的用戶成員;以此組爲附加組的用戶的用戶列表;


相關命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su




Linux用戶和組管理


安裝上下文:

進程以其發起者的身份運行;

進程對文件的訪問權限,取決於發起此進程的用戶的權限;


系統用戶:爲了能夠讓那後臺進程或服務類進程以非管理員的身份運行,通常需要爲此創建多個普通用戶;這類用戶從不用登錄系統;



groupadd命令:添加組

groupadd [選項] group_name

-g GID:指定GID;默認是上一個組的GID+1;

-r: 創建系統組;(centos6:1-499,centos7:1-999)

例子:

[root@bogon go_dir]# groupadd -r testgroup

[root@bogon go_dir]# groupadd -g 2000 testgroup2

[root@bogon go_dir]# groupadd -r -g 200 testgroup3

[root@bogon go_dir]# tail -3 /etc/group

testgroup:x:983:

testgroup2:x:2000:

testgroup3:x:200:


groupmod命令:修改組屬性

groupmod [選項] GROUP

-g GID:修改GID;

-n new_name:修改組名;

例子:

[root@bogon go_dir]# groupmod -g 6666 testgroup2

[root@bogon go_dir]# groupmod -n modtestgroup3 testgroup3

[root@bogon go_dir]# tail -2 /etc/group

testgroup2:x:6666:

modtestgroup3:x:200:

groupdel命令:刪除組

groupdel [選項] GROUP

例子:

[root@bogon go_dir]# groupdel testgroup

[root@bogon go_dir]# groupdel testgroup2

[root@bogon go_dir]# groupdel modtestgroup3

[root@bogon go_dir]# tail -2 /etc/group

tcpdump:x:72:

lzw:x:1000:


useradd命令:創建用戶

useradd [選項] 登錄名

-u, --uid UID:指定UID;

-g, --gid GROUP:指定基本組ID,此組得事先存在;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;

-c, --comment COMMENT:指明註釋信息;

-d, --home HOME_DIR:以指定的路徑爲用戶的家目錄;通過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會爲用戶複製環境配置文件;

-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells(安全shell)文件中;

-r, --system:創建系統用戶;

例子:

[root@bogon go_dir]# groupadd gp1

[root@bogon go_dir]# groupadd gp2

[root@bogon go_dir]# tail -2 /etc/group

gp1:x:1002:

gp2:x:1003:

[root@bogon go_dir]# useradd -G gp1,gp2 lisi

[root@bogon go_dir]# tail -3 /etc/group

gp1:x:1002:lisi

gp2:x:1003:lisi

lisi:x:1004:


注意:創建用戶時的諸多默認設定配置文件爲/etc/login.defs


useradd -D:顯示創建用戶的默認配置;

useradd -D 選項: 修改默認選項的值;

修改的結果保存於/etc/default/useradd文件中;


usermod命令:修改用戶屬性

usermod [選項] 登錄

-u, --uid UID:修改用戶的ID爲此處指定的新UID;

-g, --gid GROUP:修改用戶所屬的基本組;

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;

-a, --append:與-G一同使用,用於爲用戶追加新的附加組;

-c, --comment COMMENT:修改註釋信息;

-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;(要和-m一起用才能轉移)

-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動爲新的家目錄;

-l, --login NEW_LOGIN:修改用戶名;

-s, --shell SHELL:修改用戶的默認shell;

-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";

-U, --unlock:解鎖用戶的密碼;


userdel命令:刪除用戶

userdel [選項] 登錄

-r:刪除用戶時一併刪除其家目錄;(默認是不刪除的)


練習1:創建用戶gentoo,UID爲4001,基本組爲gentoo,附加組爲distro(GID爲5000)和peguin(GID爲5001);

練習2:創建用戶fedora,其註釋信息爲"Fedora Core",默認shell爲/bin/tcsh;


練習3:修改gentoo用戶的家目錄爲/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;

練習4:爲gentoo新增附加組netadmin;


passwd命令:

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1) passwd:修改用戶自己的密碼;

(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;

-l, -u:鎖定和解鎖用戶;

-d:清除用戶密碼串;

-e DATE: 過期期限,日期;

-i DAYS:非活動期限;

-n DAYS:密碼的最短使用期限;

-x DAYS:密碼的最長使用期限;

-w DAYS:警告期限;


--stdin:

echo "PASSWORD" | passwd --stdin USERNAME (腳本中通常這樣用)


gpasswd命令:

組密碼文件:/etc/gshadow

gpasswd [選項] group

-a USERNAME:向組中添加用戶

-d USERNAME:從組中移除用戶

(組密碼有什麼用?newgrp在切換組的時候用得上)


newgrp命令:臨時切換指定的組爲基本組(如果組沒有組密碼,則不能切換);

newgrp [-] [group]

-: 會模擬用戶重新登錄以實現重新初始化其工作環境;


chage命令:更改用戶密碼過期信息

chage [選項] 登錄名

-d LAST_DAY (最近一次修改密碼的時間)

-E, --expiredate EXPIRE_DATE (過期時間)

-I, --inactive INACTIVE (非活動期限)

-m, --mindays MIN_DAYS (最小使用期限)

-M, --maxdays MAX_DAYS (最大使用期限)

-W, --warndays WARN_DAYS (警告期限)


id命令:顯示用戶的真和有效ID; 

id [OPTION]... [USER]

-u: 僅顯示有效的UID;

-g: 僅顯示用戶的基本組ID; 

-G: 僅顯示用戶所屬的所有組的ID;

-n: 顯示名字而非ID;


su命令:switch user

登錄式切換(完全切換):會通過讀取目標用戶的配置文件來重新初始化

su - USERNAME

su -l USERNAME

非登錄式切換(半切換):不會讀取目標用戶的配置文件進行初始化

su USERNAME


注意:管理員可無密碼切換至其它任何用戶;


-c 'COMMAND':僅以指定用戶的身份運行此處指定的命令;


其它幾個命令:chsh, chfn, finger, whoami, pwck, grpck


命令總結:groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, id, su, chage


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