Linux基礎——用戶、用戶組和權限管理

一,Linux 用戶和用戶組基礎概念

    Linux系統是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。

  (1)用戶、用戶組的類別:

wKioL1bea7XgkKC4AABWaArVOEc983.png

   在CentOS 6下,系統用戶:1-499,普通用戶:500+

       UID: 16bits二進制數字:0-65535;
                 Linux內核(2.6x版)已經可以支持到4294967295(2^32-1)個標識符

注意:CentOS 7(RHEL 7)開始用戶系統用戶的數量增大


  (2)用戶配置文件

     1. 用戶信息庫,名稱解析庫:/etc/passwd

     2. 密碼存儲位置:/etc/shadow

     3.組的認證信息庫:/etc/gshadow

     4.用戶組的所有信息存儲位置:/etc/group


二,用戶和用戶組的管理

基本的用戶命令爲:useradd(創建用戶)、usermod(修改用戶)、userdel(刪除用戶)

基本的組管理命令爲:groupadd(創建組)、groupmod(修改組)、groupdel(刪除組)

密碼配置:passwd(設置用戶密碼)、gpasswd(設置組密碼)

 ①useradd :創建新的用戶

useradd  [選項]  登錄名
 -c, --comment COMMENT:註釋信息,一般爲Full Name;
 -d, --home  /PATH/TO/HOME_DIR:家目錄路徑;目標路徑不能事先存在,否則會有警告,不會得利skel相關的文件給用戶;
 -g, --gid GROUP:用戶的基本組組名或GID;
 -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用戶所屬的附加組列表,彼此間用逗號隔開,中間沒有空格;
 -m, --create-home:強制創建家目錄; 
 -M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置(CREATE_HOME)爲yes;
 -r, --system:創建一個系統賬戶
 -s, --shell SHELL:用戶的登錄shell名,默認爲留空,讓系統根據 /etc/default/useradd 中的SHELL變量選擇默認的登錄shell;
 -u, --uid UID:用戶ID的數字值。此值必須爲唯一的,除非使用了-o選項。此值必須非負,默認使用大於等於UID_MIN,且大於任何其他用戶ID最小值。

 例1:創建一個用戶sam,爲sam指定主目錄爲/usr/sam;

# useradd –d /usr/sam -m sam

 例2:新建用戶gem,指定該用戶的登錄Shell是 /bin/sh,指定它屬於group用戶組,同時又屬於adm和root用戶組,其中group用戶組是其主組。

# groupadd group
# groupadd adm
# useradd -s /bin/sh -g group –G adm,root gem
注意:創建登錄用戶時,爲其自定義的shell程序必須爲可登錄shell,且要位於/etc/shells文件中;

useradd -D:顯示創建用戶時的默認設置;
useradd -D  選項:設置某默認選項;

新建用戶不選擇選項時,useradd會按照默認選項創建用戶。

【PS:這些默認選項實際是記錄在/etc/default/useradd文件中,另外/etc/login.defs也會影響useradd、userdel等命令的默認動作。】

②usermod:修改賬號信息

【注意:usermod不允許改變正在線上的使用者帳號名稱。當usermod改變userID,必須確認這名user沒在電腦上執行任何程序】

-L, --lock:鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!”
-U, --unlock:解鎖用戶的密碼。這將移除加密的密碼之前的“!”

③userdel:刪除用戶賬號

userdel [選項]  登錄名                    
-r, --remove:用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除

④groupadd:添加組

用法:groupadd [選項] group
 常用選項:
-g GID :指明GID,默認是上一個組的GID+1
-r,--system:創建系統組,默認爲1-999數字

⑤passwd:密碼管理命令

(1) passwd:修改自己的密碼;                    
(2) passwd  username:修改其它用戶的密碼,僅root有此權限;                                        
密碼複雜度:                        
(1) 不能少於8個字符;                        
(2) 不能使用與過去的密碼太相似的密碼;                        
(3) 應該使用四類字符中的至少三類; 
(4)  定期更換;                                   
 選項:                        
 -l:鎖定密碼                        
 -u:解鎖解密                        
 -d:清除密碼                                                
 --stdin:從標準輸入接收密碼;                            
 echo "PASSWORD" | passwd  --stdin  USERNAME

⑥su:切換用戶

(1) 不讀取目標用戶的配置文件(非登錄式切換,半切換);
 su  USERNAME 
(2) 讀取目標用戶的配置文件(登錄式切換,完全切換);
 su  -l  USERNAME
 su  -  USERNAME
 -c command, --command=command:
 僅以指定的用戶的身份運行此處指定的命令,而不執行真正的身份切換操作;
 注意:root切換至任何其它用戶無須認證密碼;普通用戶切換至其它用戶,都需要密碼;

⑦gpasswd:爲組添加密碼

gpasswd [選項] group
          -a USERNAME:把用戶添加至組中;
          -d USERNAME:從此組中移除此用戶;

⑧newgrp命令:登錄到一個新組  
⑨chage命令:修改用戶賬號的各種期限;
         .   修改賬戶或口令的期限設定

【口令最短使用期限7天,最長使用期限30天,警告期3天,非活動期3天。          
     [root@localhost ~]# chage -m7 -M30 -W3 -I3 mageedu          
  修改口令最近一次修改時間,需轉換爲設定時間到1970年1月1日的天數          
     [root@localhost ~]# chage -d16860 mageedu          
  設置賬戶過期時間,需轉換爲設定時間到1970年1月1日的天數。          
     [root@localhost ~]# chage -E16920 mageedu】

chsh:更換登入系統時使用的shell,

chfn:提供使用者更改個人資訊,

finger:使用者查詢一些其他使用者的資料,

pwck : 檢查密碼文件的完整性,

grpck:檢查組文件的完整性


三,與用戶賬號有關的系統文件

  1、/etc/passwd文件是用戶管理工作涉及的最重要的一個文件。

# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:

/etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號(:)分隔爲7個字段:

用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登錄Shell
系統中有一類用戶稱爲僞用戶(psuedo users)。
這些用戶在/etc/passwd文件中也佔有一條記錄,但是不能登錄,
因爲它們的登錄Shell爲空。它們的存在主要是方便系統管理,滿足相應的系統進程對文件屬主的要求。
僞 用 戶 含 義 
bin 擁有可執行的用戶命令文件 
sys 擁有系統文件 
adm 擁有帳戶文件 
uucp UUCP使用 
lp lp或lpd子系統使用 
nobody NFS使用

2./etc/shadow文件用於單獨存放加密後的口令字,只有超級用戶才擁有該文件讀權限

【注意:/etc/shadow中的記錄行與/etc/passwd中的一一對應,它由pwconv命令根據/etc/passwd中的數據自動產生】

它的文件格式與/etc/passwd類似,由若干個字段組成,字段之間用":"隔開。這些字段是:

登錄名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
"登錄名":/etc/passwd文件中的登錄名相一致的用戶賬號
"口令":字段存放的是加密後的用戶口令字,長度爲13個字符。如果爲空,則對應用戶沒有口令,登錄時不需要口令;如果含有不屬於集合 { ./0-9A-Za-z }中的字符,則對應的用戶不能登錄。
"最後一次修改時間":表示的是從某個時刻起,到用戶最後一次修改口令時的天數。時間起點對不同的系統可能不一樣。例如在SCO Linux 中,這個時間起點是1970年1月1日。
"最小時間間隔":指的是兩次修改口令之間所需的最小天數。
"最大時間間隔":指的是口令保持有效的最大天數。
"警告時間":字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
"不活動時間":表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數。
"失效時間":字段給出的是一個絕對的天數,如果使用了這個字段,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是一個合法的賬號,也就不能再用來登錄了。
# cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::

3、用戶組的所有信息都存放在/etc/group文件中。

當一個用戶同時是多個組中的成員時,在/etc/passwd文件中記錄的是用戶所屬的主組,也就是登錄時所屬的默認組,而其他組稱爲附加組。

用戶要訪問屬於附加組的文件時,必須首先使用newgrp命令使自己成爲所要訪問的組中的成員。

用戶組的所有信息都存放在/etc/group文件中。此文件的格式也類似於/etc/passwd文件,由冒號(:)隔開若干個字段,這些字段有:

組名:口令:組標識號:組內用戶列表
"組名":是用戶組的名稱,由字母或數字構成。與/etc/passwd中的登錄名一樣,組名不應重複。
"口令":字段存放的是用戶組加密後的口令字。一般Linux 系統的用戶組都沒有口令,即這個字段一般爲空,或者是*。
"組標識號":與用戶標識號類似,也是一個整數,被系統內部用來標識組。
"組內用戶列表":是屬於這個組的所有用戶的列表/b],不同用戶之間用逗號(,)分隔。這個用戶組可能是用戶的主組,也可能是附加組
/etc/group文件的一個例子如下:
root::0:root
bin::2:root,bin


四,用戶和用戶組權限管理

例:[root@localhost~]# ls -l  total 120     # 顯示文件名與相關屬性命令
    drwxr-xr-x  2 root root 4096 Dec 10 07:57 07:57:04

(1) 類型和權限(permission):十位分四段表示

https://s3.51cto.com/wyfs02/M02/77/D3/wKiom1Zu6xXjI7XJAAD2erMsi7I430.jpg

【顯示格式】:

         總用量:

          類型和權限  連接數  所有者   用戶組   文件大小  修改日期   文件名

(2)權限組合機制:(8bites 二進制)

      第二道十個字符:每三個爲一組,均爲'rwx'三個參數組合

       rwxrwxrwx每個位置固定不定,若無則爲空,用'-'符號表示

 r:readable, 讀;w:writable, 寫;x:excutable,執行

  r=4    w-2   x=1 -=0


(3)文件權限系統主要分爲3類用戶:

 屬主:owner,u          屬組:group,g       其他:other,o

其與之對應的權限:               rwx                    rwx                             rwx

(4)文件和目錄的權限管理:

wKiom1bekO6ABPxFAADvfKht6GI893.png

       ①對於文件的含義

 r:可獲取文件的數據;可以使用類似於cat命令查看文件內容

 w: 可修改文件的數據;可以編或者刪除此文件

 x:可將此文件運行爲進程;可以在命令提示符下當做命令提交給內核運行

②對於目錄的含義

 r:可使用ls命令獲取其下的所有文件列表;

 w: 可修改此目錄下的文件列表;即創建或刪除文件;

 x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;


五,權限管理命令

  1.chmod:更改文件目錄權限

用戶類型:u:屬主   g:屬組   o:其它    a: 所有

(1)chmod [OPTION]...  MODE[,MODE]... FILE…
  1)賦權表示法:直接操作一類用戶的所有權限位rwx.
用等號表示:[u|g|o|a]=rwx中的一位或者多位
  2)授權表示法:直接操作一類用戶的一個權限位r,w,x
用加減號表示:[u|g|o|a][+|-]rwx
(2)chmod [OPTION]...  OCTAL-MODE FILE…
直接使用三位數字的方式給文件目錄增加權限,分別表示所有者、所屬組、其他人的權限
數字的表示方法同上:8bites 二進制表示權限的組合機制
r=4   
w-2   x=1  -=0三位相加
(3)chmod [OPTION]...  --reference=RFILE FILE…   參照某個文件的權限來進行授權操作
  -R,
--recursive:遞歸修改
【注意:普通用戶僅能修改屬主爲自己的那些文件的權限;root可以更改所有用戶】

2.chown:更改文件目錄的所有者,也可以更改所屬組

 僅更改用戶的所有者 
  所有者:所屬組,可以同時更改
 【PS:所有者.所屬組,也可以上述操作,但小心文件名中有.系統識別錯誤】

3..chgrp:更改文件目錄的所屬組

(1)chgrp [OPTION]... GROUPFILE… 更改所屬組
(2)chgrp [OPTION]... --reference=RFILE FILE…

【注意:僅管理員有權限

                改屬主:chown
                改屬組:chgrp】


4.install:複製和設置屬性權限

(1)單源複製:
        install[OPTION]... [-T] SOURCE DEST
       
(2)多源複製:
       install [OPTION]... SOURCE... DIRECTORY
        install [OPTION]... -t DIRECTORY SOURCE…
       
(3)創建目錄:
       install [OPTION]... -d DIRECTORY...
(4)OPTIONS:
      -m, --mode=MODE:設定目標文件權限,默認爲755;
        -o, --owner=OWNER:設定目標文件屬主;
        -g, --group=GROUP:設定目標文件屬組;

5.umask:文件的權限反向掩碼,遮罩碼

(1)umask:查看當前umask
系統默認爲:0022表示特殊權限、所有者權限、所有組權限、其他人權限 
更改默認設置位置:/etc/login.defs
(2)對文件目錄的umask操作 
    ①文件:666-umask ,文件默認不能擁有執行權限
            如果減得的結果中有執行權限,則需要將其加1
    ②目錄:777-umask

6.mktemp:建立暫存文件

mktemp [OPTION]... [TEMPLATE]
    模板文件名:filename.XXX
   至少三個X;
   使用方式:用變量保存生成的文件路徑;
   myfile=$(mktemp /tmp/myfile.XXXX)
   -d:創建臨時目錄而非文件;
    -p DIR, --tmpdir[=DIR]:設定臨時文件所在的目錄;默認爲當前目錄,或爲TMPDIR環境變量設定的路徑;


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