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程序有效