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:home directory:shell

 

1.2Linux作業系統使用者組

在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.3Linux作業系統密碼

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

加密演算法:

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

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

金鑰對:公鑰、私鑰

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

定長輸出:

雪崩效應:密碼中某一個字元改變,那麼整個加密後的金鑰都會改變

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

系統識別演算法ID 演算法名稱
1

MD5:message digest,128bits

2 sha:secure hash algorithm,160bits
3 sha224
4 sha256
5 sha384
6 sha512

/etc/shadow:使用者密碼

使用者名稱:加密的密碼:最近一次修改密碼的時間:最短使用期限:最常使用期限:警告期段:非活動期限:過期期限:保留欄位

 1 [[email protected] ~]# head -1 /etc/shadow

2 root:$6$mNeLUb3TE/L9utIA$nVgYyR6KkPDFRYrZC2Q9hPRNgz8z3mDKsQKraE1Fy8.LBMQoldhK4Ne1ZZlolZg2362JgdrwmTRmSbI5PTe.j0::0:99999:7::: 

加密密碼:使用$分隔,第一個段表示使用的加密演算法,第二個段表示新增的salt(隨機數),第三段表示加密後的密碼

 

2、許可權管理

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

 1 [[email protected] ~]# ls -l /bin/bash

2 -rwxr-xr-x. 1 root root 960392 8月 3 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,--incatice INACTIVE:在密碼過期後,賬戶被徹底禁用之前的天數,0表示立即禁用,-1表示禁用該功能

注意:建立使用者時的諸多預設設定配置檔案為/etc/login.defs

 

useradd -D:顯示建立使用者的預設選項配置

useradd -D 選項:修改預設選項的值

修改的結果保存於/etc/default/useradd檔案中;可以直接修改此檔案來實現

 

usermod命令:修改使用者屬性

usermod [選項] 使用者名稱

-u,--uid UID:修改使用者的ID為此處指定的新UID

-g,--group GROUP:修改使用者所屬的基本組;此組得事先存在

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

-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命令

登入式切換:會通過重新讀取目標使用者的配置檔案來重新初始化

su - USERNAME

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

su USERNAME

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

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

例如:su - USERNAME -c “whoami”

 

3.2使用者組管理命令

groupadd命令:新增組

groupadd [選項] GROUP_NAME

-g GID:指定GID,預設是上一個組的GID+1

-r:建立系統組

 

groupmod命令:修改組屬性

groupmod [選項] GROUP_NAME

-g GID:修改GID

-n NEW_NAME:修改組名

 

groupdel命令:刪除組

groupdel [選項] GROUP

 

3.3使用者及使用者組練習

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

 

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

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

練習4:為gentoo新增附加組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:過期期限,日期

-i:非活動期限,時間範圍

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

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

-w:警告期限

--stdin:echo “PASSWORD” | passwd --stdin USERNAME

 1 [[email protected] ~]# echo "ceshimima" | passwd --stdin ceshi

2 更改使用者 root 的密碼 。

3 passwd:所有的身份驗證令牌已經成功更新。 

 

 

gpasswd命令:

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

 

gpasswd [選項] group_name

-a USERNAME:向組中新增使用者,作為附加組

-d USERNAME:從組中刪除使用者

 

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

newgrp [-] [group_name]

-:會模擬使用者重新登入以實現重新初始化其工作環境

注意:

若指定組設定了密碼:

(1)如果使用者的附加組是要切換到的組名,那麼不需要密碼可以直接切換到指定組

(2)如果使用者的附加組不包含要切換的組名,那麼需要輸入密碼才能切換到指定組

若指定組沒有設定密碼,所有使用者都不可以直接切換到指定組,root使用者除外

 

 

3.5許可權管理命令

chmod命令:

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

三類使用者:

u:屬主

g:屬組

o:其他

a:所有

(1)chmod [OPTION]... MODE[,MODE]... FILE...

MODE表示法:

賦權表示法:直接操作一類使用者打的所有許可權位;

在賦予三類使用者的許可權不同時,則用逗號隔開;如果相同,可以合併授權

u=

g=

o=

a=

授權表示法:直接操作一類使用者的所有許可權位r,w,x

在賦予三類使用者的許可權不同時,則用逗號隔開;如果相同,可以合併授權

u+,u-

g+,g-

o+,o-

a+,a-

(2)chmod [OPTION]... OCTAL-MODE FILE...

使用十進位制的數字進行授權

(3)chmod [OPTION]... --reference=RFILE FILE...

參考其他檔案許可權授權

選項:

-R:遞迴修改,對目錄下的所有檔案(包括子目錄)都有效。

注意:使用者僅能修改屬主為自己的檔案的許可權

 

從屬關係管理命令:chown,chgrp

chown命令:

chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

選項:

-R:遞迴修改,對目錄下的所有檔案(包括子目錄)都有效

--reference:參考其他檔案屬主屬組進行修改屬主和屬組

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

chgrp命令:

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...

 

思考一:使用者對目錄有寫許可權,但對目錄下的檔案沒有寫許可權時,能否修改此檔案內容?能否刪除此檔案?

不能修改此檔案內容,但是能夠刪除此檔案

思考二:使用者對目錄有什麼許可權時,可以使用mv命令?

x,執行許可權

 

umask命令:檔案的許可權反向掩碼,遮罩碼

檔案:

666-umask

目錄:

777-umask

注意:之所以檔案用666去減,表示檔案預設不能擁有執行許可權;如果減得的結果中有執行許可權,則需要將其加1;

umask命令:

umask:檢視當前umask

umask MASK:設定umask

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