1. 程式人生 > >Linux用戶、組和權限管理(一)

Linux用戶、組和權限管理(一)

linux用戶、組使用

Linux是一個Multi-tasks(多任務)、 Multi-Users(多用戶)的系統


每一個登陸者或使用者都有用戶標識、密碼(所謂3A)

所謂的3A:

Authentication(驗證機制)

Authorization(授權機制)

Audition(審計)


組的概念:用戶組,用戶容器;是為了便於用戶權限分配


用戶類別

管理員:root

普通用戶:

系統用戶

登錄用戶


在linux系統中用戶標識UserID,簡稱UID

用戶標識使用的範圍:

16bits二進制數字:0-65535(默認16位,可擴展32位)

管理員:0

普通用戶:1-65535

系統用戶:1-499(Cenots6),1-999(Centos7)

登錄用戶:500-60000(Centos6),1000-60000(Centos7)


名稱解析:

每一個用戶名都對應一個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:

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

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


認證信息:

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

密碼存放文件位置:

用戶:/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(512是長度)


示例:

[[email protected] ~]# echo "nihao" | md5sum

0a34a9366d438e6ac5ae3480d024c4ef -

[[email protected] ~]# echo "abcdefg" | sha512sum

9ab216d2cf3d89df5ba18cd3e3eb390d4ed30a9a0349b71680cc244c7e22cdddabb5a042481b2c6c8d6fabee4f3cb280f02c0c3f27ee66929aa2342f2142750c -


/etc/passwd:用戶的信息庫

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

解釋:

name: 用戶名

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

UID:用戶ID號

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

GECOS:註釋信息

directory:用戶的家目錄;

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


/etc/shadow:用戶密碼(gshadow也是一樣)

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


/etc/group:組的信息庫

group_name:password:GID:user_list

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



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


useradd命令:創建用戶

[[email protected] ~]# useradd test

useradd [選項] 登錄名

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

[[email protected] ~]# useradd -u 1500 docker

docker:x:1500:1500::/home/docker:/bin/bash

-g, --gid GROUP:指定基本組ID,此組必須要存在,否則報錯;

[[email protected] ~]# useradd -g yunwei test2

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

[[email protected] ~]# useradd -G docker test

docker:x:1500:test

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

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

[[email protected] sh]# useradd -d /sh/test2 test2

test2:x:1502:1502::/sh/test2:/bin/bash

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

[[email protected] sh]# useradd -s /bin/sh test2

test2:x:1502:1502::/home/test2:/bin/sh

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

-M:不創建用戶家目錄

-f:非活動期限(密碼過期後,用戶徹底禁用時間)


註意:創建用戶時的默認設定配置文件為/etc/login.defs (全局配置)


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

[[email protected] ~]# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes


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

[[email protected] ~]# useradd -D -s /bin/sh

SHELL=/bin/sh

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



usermod命令:修改用戶屬性

usermod - modify a user account

格式:

usermod [options] 用戶名


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, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;

[[email protected] sh]# usermod -m -d /sh/test6 -u 10005 test6

註:要加-u選項,後跟UID和用戶名,否則會報錯

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

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


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

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



userdel命令:刪除用戶

userdel [選項] 登錄

-r:刪除用戶時一並刪除其家目錄;



groupadd命令:添加組

groupadd [選項] group_name

[[email protected] ~]# groupadd mylist


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

[[email protected] ~]# groupadd -g 10000 kklist

-r: 創建系統組;


groupmod命令:修改組屬性

groupmod [選項] GROUP

-g GID:修改GID;

[[email protected] ~]# groupmod -g 10010 kklist

-n new_name:修改組名;

[[email protected] ~]# groupmod -n kwlist kklist


groupdel命令:刪除組

groupdel [選項] GROUP

[[email protected] ~]# groupdel mylist


passwd命令

實現功能:

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

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


選項:

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

-d:清除用戶密碼串;

[[email protected] ~]# passwd -d kwang

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

-i DAYS:非活動期限;

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

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

-w DAYS:警告期限;


--stdin:(通常腳本使用)

echo "PASSWORD" | passwd --stdin USERNAME


gpasswd命令:

組密碼文件:/etc/gshadow

設置組密碼:

[[email protected] ~]# gpasswd 組名稱

gpasswd [選項] group

-a USERNAME:向組中添加用戶

[[email protected] sh]# gpasswd -a test1 mylist

-d USERNAME:從組中移除用戶

[[email protected] sh]# gpasswd -d test1 mylist



newgrp命令:臨時切換指定的組為基本組;

newgrp [-] [group]

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

不加入"-"只是臨時切換到指定組

示例:

[[email protected] sh]# gpasswd -a test1 mylist

[[email protected] sh]# su - test1

[[email protected] mylist]$ newgrp mylist

[[email protected] mylist]$ touch 2

-rw-r--r-- 1 test1 mylist 0 Mar 20 14:27 2


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

chage - change user password expiry information

格式:

chage [選項] 登錄名

選項:

-d:上一次更改的日期;0表示第一次登陸強制修改密碼

[[email protected] home]# chage -d 0 kwang

-E:賬號到期的日期;0表示立即過期,-1表示永不過期

[[email protected] home]# chage -E 0 kwang

[[email protected] home]# chage -E -1 kwang

-l:列出用戶密碼有效期限信息

[[email protected] home]# chage -l kwang

-m:密碼可更改的最小天數,零代表任何時候都可以更改密碼

[[email protected] home]# chage -m 1 kwang

Minimum number of days between password change : 1

-M:密碼保持有效的最大天數

[[email protected] home]# chage -M 7 kwang

Maximum number of days between password change : 7

-W:用戶密碼到期前,提前收到警告信息的天數

[[email protected] home]# chage -W 5 kwang

Number of days of warning before password expires : 5

-I:密碼失效時間後,鎖定賬號的天數



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‘:僅以指定用戶的身份運行此處指定的命令;

[[email protected] ~]# su - test -c ‘ls -l /etc/passwd‘



練習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;



解答1:

[[email protected] ~]# groupadd -g 5000 distro

[[email protected] ~]# groupadd -g 5001 peguin

[[email protected] ~]# useradd -G distro,peguin -u 4001 gentoo


本文出自 “變相怪傑” 博客,謝絕轉載!

Linux用戶、組和權限管理(一)