1. 程式人生 > >linux的使用者及許可權管理

linux的使用者及許可權管理

1、linux作業系統使用者及使用者組

Linux作業系統是多工(Multi-tasks)多使用者(Multi-users)分時作業系統,linux作業系統的使用者就是讓我們登入到linux的許可權;每當我們使用使用者名稱登入作業系統時,linux都會對該使用者進行認證、授權審計等操作。作業系統為了識別每個使用者,會給每個使用者定義一個ID,就是UID。使用者組就相當於多個使用者的容器;在linux系統中,使用者組也有一個ID,GID。

1.1 linux作業系統使用者

在linux中,使用者分為兩大類:管理員使用者和普通使用者,其中普通使用者有分為系統使用者和登入使用者;
系統使用者:為了能夠讓那些後臺程序或服務類程序以非管理員的身份執行,通常需要為此建立多個普通使用者,這類使用者從來不用登陸系統。
登入使用者:就是我們一般使用登入linux的使用者。

使用者標識:user id,UID
通常使用16bits二進位制數字表示(0-65535)
管理員的使用者標識:0
普通使用者:1-65535
系統使用者:1-499(Centos6)、1-999(Centos7)
登入使用者:500-60000(Centos6)、1000-60000(Centos7)

​linux通過名稱解析庫“/etc/passwd”檔案解析使用者名稱與使用者ID之間的對應關係。

/etc/passwd:使用者資訊庫
name:password:UID:GID:GECOS:directory:shell

1.2 linux作業系統使用者組

在Linux中,使用者組分類方式有三種:
1、管理員組、普通使用者組(系統使用者組,登入使用者組)
2、使用者的基本組、使用者附加組
3、私有組、公共組

使用者組標識:group id,GID
通常使用16bits二進位制數字表示(0-65535)
管理員的使用者組標識:0
普通使用者組:1-65535
系統使用者組:1-499(Centos6)、1-999(Centos7)
登入使用者組:500-60000(Centos6)、1000-60000(Centos7)

linux通過名稱解析庫“/etc/group”檔案解析使用者名稱與使用者ID之間的對應關係。

/etc/group:組的資訊庫
group_name:passwd:GID:user_list
user_list:該組使用者的成員;以此組為附加組的使用者的使用者列表

1.3 linux作業系統密碼

使用者在登入linux系統時,會對比password與之前儲存在“/etc/shadow”、“/etc/gshadow”檔案中的密碼是否一致。

​加密演算法:
對稱加密:加密和解密使用同一個密碼
非對稱加密:加密和解密使用的一對金鑰
金鑰對:公鑰(public key)、私鑰(private key)
單向加密:只能加密,不能解密;提取資料特徵碼;
定長輸出:
雪崩效應:密碼中某一個字元改變,那麼整個加密後的金鑰都會改變

linux的密碼加密方式使用單向加密演算法,並且新增隨機數(salt)計算得出的。

系統識別演算法ID 演算法名稱
1 md5:message digest,128bits
2 sha:secure hash algorithm,160bits
3 sha224
4 sha256
5 sha384
6 sha512

/etc/shadow:使用者密碼

使用者名稱:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:非活動期限:過期期限:保留欄位
這裡寫圖片描述

[[email protected] ~]# head -1 /etc/shadow
root:$6$mNeLUb3TE/L9utIA$nVgYyR6KkPDFRYrZC2Q9hPRNgz8z3mDKsQKraE1Fy8.LBMQoldhK4Ne1ZZlolZg2362JgdrwmTRmSbI5PTe.j0::0:99999:7:::

加密密碼:使用$分隔,第一個段表示使用的加密演算法,第二個段表示新增的salt。第三段表示加密後的密碼.

2、許可權管理

linux的檔案管理許可權分為讀、寫和執行

[[email protected] ~]# ls -l /bin/bash
-rwxr-xr-x. 1 root root 960392 83 2016 /bin/bash 

檔案許可權:
-rwxr-xr-x.
共分為五個部分:
-:表示檔案型別
rwx:使用者屬主的許可權
r-x:使用者屬組的許可權
r-x:其他使用者的許可權
.:是否啟用facl

許可權:
r:readable,讀
w:wirteable,寫
x:excuteable,執行

許可權對檔案的作用:
r:可獲取檔案的資料;
W:可修改檔案的資料;
x:可將此檔案執行為程序;

許可權對目錄的作用:
r:可使用ls命令獲取其下的所有檔案列表;
w:可修改此目錄下的檔案列表;即建立或刪除檔案,包括子目錄。
x:可cd至此目錄中;且可使用ls -l來獲取所有檔案的詳細屬性資訊;

許可權組合 二進位制數 十進位制數
000 0
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
練習:
rw-rw-r--   664
rwxrwxr-x   775
rwxr-x---   750
rw-------   600 
rwxr-xr-x   755

3、相關命令

3.1使用者管理命令

useradd命令:建立使用者
useradd [選項] 登入名
-u,–uid UID:指定UID,預設是上一個使用者的UID+1
-g,–gid GID:指定基本組ID,此組得事先存在;
-G,–groups GROUP1[,GROUP2,……[,GROUPSN]]:指明使用者所屬的附加組,多個組之間用逗號分隔。
-c,–comment COMMENT:指明註釋資訊
-d,–home HOME_DIR:以指定路徑為使用者的家目錄;通過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會為使用者複製環境配置檔案。
-s,–shell SHELL:指定使用者的預設shell,可用的所有shell列表儲存在/etc/shells檔案中;
-r,–system:建立系統使用者
-M:不為使用者建立主目錄
-f,–incative INACTIVE:在密碼過期後,賬戶被徹底禁用之前的天數,0表示立即禁用,-1表示禁用該功能。
注意:建立使用者時的諸多預設設定配置檔案為/etc/login.defs

useradd -D:顯示建立使用者的預設選項配置;
useradd -D 選項:修改預設選項的值;
修改的結果保存於/etc/default/useradd檔案中;可以直接修改此檔案來實現。

usermod命令:修改使用者屬性
usermod [選項] 登入名
-u,–uid UID:修改使用者的ID為此處指定的新UID;
-g,–group GROUP:修改使用者所屬的基本組;此組得事先存在;
-G, –groupsGROUP1[,GROUP2,…[,GROUPN]]]:修改使用者所屬的附加組,原來的附加組會被覆蓋;
-a, –append:與-G一同使用,用於使用者追加新的附加組;
-c,–comment COMMENT:修改註釋資訊;
-d,–home HOME_DIR:修改使用者的家目錄;使用者原有的檔案不會被轉移至新位置;
-m,–move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;
-l,–login NEW_LOGING:修改使用者名稱;
-s, –shell SHELL:修改使用者的預設shell;
-L,–lock:鎖定使用者密碼;即在使用者原來的密碼字串之前新增一個”!”;
-U,–unlock:解鎖使用者密碼,

userdel命令:刪除使用者,
userdel [選項] 登入名
-r:刪除使用者時一併刪除其家目錄和使用者郵箱;

id命令:顯示使用者的真實和有效的UID和GID
id [OPTION]… [USERNAME]
-u:僅顯示有效的UID;
-g:僅顯示使用者的基本組的ID;
-G:僅顯示使用者所屬的所有組的ID;
-n:顯示名字而非ID;一般與g一起使用:-ng

**su命令:**switch user
登入式切換:會通過重新讀取目標使用者的配置檔案來重新初始化
su - USERNAME
su -l USERNAME

非登入式切換:不會讀取目標使用者的配置檔案進行初始化
su USERNAME

注意:管理員可無密碼切換至其它任何使用者;其它使用者在切換使用者時必須輸入密碼。

-c “COMMAND”:僅以指定使用者的身份執行此處指定的命令
例如:su - USERNAME -c “whoami”

3.2 使用者組管理命令

groupadd命令:新增組
groupadd [選項] group_name
-g GID:指定GID,預設是上一個組的GID+1
-r:建立系統組;

groupmod命令:修改組屬性
groupmod [選項] GROUP
-g GID:修改GID
-n new_name:修改組名

groupadd命令:刪除組
groupdel [選項] GROUP

3.3 使用者及使用者組練習

練習1:建立使用者gentoo,UID為4001,基本組為gentoo,附加組為distro(GID為5000)和penguin(GID為5001);

groupadd -g 5000 distro
groupadd -g 5001 penguin
useradd -u 4001 -G distro,penguin

練習2:建立使用者fedora,其註釋資訊為"Fedora Core",預設shell為/bin/tsch;

useradd -c "Fedora Core" -s /bin/tsch fedora

練習3:修改gentoo使用者的家目錄為/var/tmp/gentoo;要求其原有檔案人仍能被使用者訪問;

usermod -d /var/tmp/gentoo -m gentoo

練習4:為gentoo新增附加組netadmin

group netadmin
usermod -a -G netadmin

3.4 密碼管理命令

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” | passed –stdin USERNAME

[[email protected] ~]# echo "hadoop" | passwd --stdin hadoop
更改使用者 hadoop 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。                

gpasswd命令:
使用者組密碼檔案:/etc/gshadow

gpasswd [選項] group
-a USERNAME:向組中新增使用者,作為附加組
-d USERNAME:從組中刪除使用者

newgrp命令:臨時切換指定的組為基本組;
newgrp [-] [group]
-:會模擬使用者重新登入以實現重新初始化其工作環境
注意:
若指定組設定了密碼:
(1)如果使用者的附加組是要切換到的組名,那麼不需要密碼可以直接切換到指定組。
(2)如果使用者的附加組不包含要切換的組名,那麼需要輸入密碼才能切換到指定組。
若指定組沒有設定密碼:所有使用者都不可以直接切換到指定組;root使用者除外。

chage命令:更改使用者密碼過期資訊
[[email protected] ~]# chage list root
用法:chage [選項] 登入
選項:
-d, –lastday 最近日期 將最近一次密碼設定時間設為“最近日期”
-E, –expiredate 過期日期 將帳戶過期時間設為“過期日期”
-h, –help 顯示此幫助資訊並推出
-I, –inactive INACITVE 過期 INACTIVE 天數後,設定密碼為失效狀態
-l, –list 顯示帳戶年齡資訊
-m, –mindays 最小天數 將兩次改變密碼之間相距的最小天數設為“最小天數”
-M, –maxdays 最大天數 將兩次改變密碼之間相距的最大天數設為“最大天數”
-R, –root CHROOT_DIR chroot 到的目錄
-W, –warndays 警告天數 將過期警告天數設為“警告天數”

其他幾個命令使用者管理命令:
chsh:修改shell
chfn:修改使用者基本資訊
finger:顯示使用者基本資訊

[[email protected] ~]# finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
root      root       pts/0   20:33  May 17 14:47                           (192.168.126.1)
root      root       pts/1          May 18 12:56                           (192.168.126.1)

pwck:檢查使用者的密碼是否有問題

[[email protected] ~]# pwck
使用者“ftp”:目錄 /var/ftp 不存在
使用者“pulse”:目錄 /var/run/pulse 不存在
pwck:無改變   

grpck:檢查組檔案的完整性

3.5 許可權管理命令

chmod命令:
chmod [OPTIONS]… MODE[,MODE]… FILE…
chmod [OPTIONS]… OCTAL-MODE FILE…
chmod [OPTIONS]… –reference=RFILE FILE…

三類使用者:
u:屬主
g:屬組
o:其它
a:所有

(1)chmod [OPTIONS]… MODE[,MODE]… FILE…
MODE表示法:
賦權表示法:直接操作一類使用者的所有許可權位;
在賦予三類使用者的許可權不同時,則用逗號隔開;如果相同,可以合併授權。
u=
g=
o=
a=
授權表示法:直接操作一類使用者的所有許可權位r,w,x:
在賦予三類使用者的許可權不同時,則用逗號隔開;如果相同,可以合併授權。
u+,u-
g+,g-
o+,o-
a+,a-
(2)chmod [OPTIONS]… OCTAL-MODE FILE…
使用十進位制的數字進行授權

(3)chmod [OPTIONS]… –reference=RFILE FILE…
參考檔案許可權授權;

選項:
-R,–recursive:遞迴修改,對目錄下的所有檔案(包括子目錄)都有效。
注意:使用者僅能修改屬主為自己的那些檔案的許可權;

從屬管理管理命令:chown,chgrp
chown命令:
chown [選項]… [OWNER][:[GROUP]] FILE…
chown [選項]… [OWNER][.[GROUP]] FILE…
chown [選項]… –reference=RFILE FILE…
選項:
-R:遞迴修改,對目錄下的所有檔案(包括子目錄)都有效。

chgrp命令:
chmod [選項]… GREOUP FILE…
chmod [選項]… –reference=RFILE FILE…

注意:僅管理員可修改檔案的屬主和屬組;

思考1:使用者對目錄有寫許可權,但對目錄下的檔案沒有寫許可權時,能否修改此檔案內容?能否刪除此檔案?
不能修改檔案的內容,但是能夠刪除此檔案
思考2:使用者對目錄有什麼許可權時,可以使用mv命令。
執行許可權

umask:檔案的許可權反向掩碼,遮罩碼;
檔案:
666-umask
目錄:
777-umask
注意:之所以檔案用666去減,表示檔案預設不能擁有執行許可權;如果減得的結果中有執行許可權,則需要將其加1;

umask命令:
umask:檢視當前umask
umask MASK:設定umask;

注意:此類設定僅對當前shell程序有效。