linxu權限管理(第七章)

1. linux安全性
 linux的安全性主要經過3A安全機制來實現,分別爲authentication(認證)、authorization(受權)、audition(審計)。
1.1 /etc/passwd 文件
 passwd文件主要用來存放帳戶的特定信息,如下爲示例:
 [root@localhost ~]# tail -1 /etc/passwd
 test:x:500:500::/home/test:/bin/bash
 解析:上述爲passwd文件最後一條帳戶信息,沒個字段以:進行分割,含義爲:
  test:用戶名
  x:密碼,爲了確保安全,實際密碼經過加密的方式存儲於 /etc/shadow中
  500:用戶UID編號,在centos6及如下linux系統中,1-499爲系統帳戶UID,500以上爲用戶UID,centos7及一下1-999爲系統UID,1000及以上爲用戶UID
  500:用戶組GID編號,編號規則等同於UID。
  空格:這個字段爲用戶信息字段,用於存放用戶的地址、電話等備註信息
  /home/test:爲用戶的家目錄路徑
  /bin/bash:用戶的默認shelllinux

1.2 /etc/shadow 文件
 shadow文件爲passwd文件的一個補充,主要用於存放帳戶密碼,有效期,過時時間等一些信息,僅供指定程序訪問。如下爲示例:
 [root@localhost ~]# head -1 /etc/shadow
 root:$6$Y9zrpEAs$Gom54hm/CfGzTO07.2RmxeKGk4TwClaNRER9y6WM:17326:0:99999:7:::
 解析:上述爲shadow文件第一行root用戶的帳戶密碼相關信息,以:進行分割,含義依次爲:
  root:用戶名
  $開頭的字符串:加密的密碼
  17326:自上次修改密碼後過去的天數(自1970年1月1日開始計算)
  0:多少天后才能更改密碼,0表示能夠當即更改
  99999:多少天后必須更改密碼,表示密碼的有效期
  7:密碼過時前7天提醒用戶更改密碼
  空格:密碼過時多少天后禁用帳戶
  空格:用戶帳戶被禁用的日期(自1970年1月1日至當天的日期數表示)
  空格:預留字段給未來用
 單向加密機制:提取數據指紋
  md5:128bits
  sha1:安全哈希算法,160bits
  sha224:224bits
  sha256:256bits
  sha384:384bits
  sha512:512bits
  
1.3 linux安全上下文
 進程運行時會以發起者的身份運行,進程全部訪問的資源取決於發起者的權限。算法

2. linux用戶管理和組管理
2.1 用戶管理
 useradd命令
 說明:添加用戶可使用useradd命令來添加,useradd命令添加命令時會讀取/etc/default/useradd文件來設定用戶默認值。
 
 /etc/default/useradd 文件解析:(能夠經過cat文件或useradd -D來查看默認參數)
 [root@localhost ~]# cat /etc/default/useradd  
 # useradd defaults file    
 GROUP=100        #新用戶會被添加到GID爲100的公共組
 HOME=/home     #新用戶的家目錄會放置於/home下
 INACTIVE=-1     #新用戶帳戶過時後不會被禁用
 EXPIRE=      #新用戶未設置過時日期
 SHELL=/bin/bash    #新用戶默認的shell
 SKEL=/etc/skel    #在建立新用戶時,系統會將/etc/skel目錄複製到新用戶家目錄下
 CREATE_MAIL_SPOOL=yes #在建立新用戶時,系統會在mail用戶下建立一個接受郵件的文件。
 
 參數:
  -c 「COMMENT」:給用戶添加註釋信息
  -d home_dir:爲用戶指定一個用戶家目錄,通常不想使用默認時可使用此選項
  -e YYYY-MM-DD:爲用戶指定帳戶過時日期
  -f inactive_days:指定帳戶密碼過時後多少天帳戶會被禁用,0表示過時當即禁用,1表示禁止此功能
  -g GID:指定用戶所屬基本組,可爲組名,也可爲GID
  -G GROUP1,GROUP2,GROUP3......爲用戶指明附加組,附加組必須事先存在
  -u UID:爲用戶指定UID
  -s SHELL:指定用戶默認的shell,可用列表在/etc/shells文件中
  -r:建立系統用戶,centos6 ID號小於500,centos7 ID號小於1000
 
 練習:建立用戶test,附加組爲test1和test2,默認shell爲/bin/csh,註釋信息爲「This is test」
  [root@localhost ~]# groupadd test1;groupadd test2
  [root@localhost ~]# useradd test -G test1,test2 -s /bin/csh -c "This is test"
 
 修改用戶
  usermod命令:修改用戶指定字段和所屬組和附加組等passwd文件中的大部分字段。
  參數:
   -u UID:指定新的UID
   -g GID:指定新的基本組
   -G GROUP1,GROUP2,GROUP3......:指定新的附加組,原來的福建組將被覆蓋,若是要保留需同時使用-a選項,表示append
   -s SHELL:新的默認SEHLL
   -c 「COMMENT」:指定新的註釋信息
   -d HOME_DIR:指定新的家目錄,原家目錄文件不會移動到新的家目錄中,若要移動,則同時使用-m選項
   -l login_name:指定新的登陸名
   -e YYYY-MM-DD:修改過時日期
   -L:鎖定指定用戶
   -U:解鎖指定用戶
   -p:修改指定帳戶密碼
   -f INACTIVE:設定帳戶非活動期限
  
  passwd:passwd user能夠用來修改指定帳戶的密碼,直接使用passwd能夠修改當前登陸的帳戶的密碼。
  用法:
   passwd USER_NAME:用於修改指定帳戶的密碼
   passwd:用於修改當前登陸帳戶的密碼
  
  chpasswd:這個命令主要用於批量修改密碼,它可使用重定向命令將含有userid:passwd對的文件做爲參數傳遞給它實現批量修改的目的。
  用法:
   chpasswd < users.txt
  
  chsh:修改指定用戶的默認登陸shell
   用法:
    chsh -s /bin/bash test:修改test的默認shell爲bash
  
  chfn:用於修改passwd文件中的註釋字段
   用法:
    chfn:依次修改當前用戶的註釋字段
    chfn USER_NAME:依次修改指定用戶的註釋字段
  
  finger:查看用戶的註釋字段,通常系統爲了安全不自帶該命令,可自行安裝。
  
  chage:管理用戶的有效期
   參數:
    -d:設置上次修改密碼到如今的天數
    -E:設置密碼過時的日期
    -I:設定密碼過時鎖定帳戶的天數
    -m:設置修改密碼之間須要多少天
    -W:設置密碼過時前多久開始提醒
    設置時間的兩種方式:
     從1970年1月1日開始多少天
     YYYY-MM-DD格式的日期
 
 刪除用戶:
  userdel USER_NAME:刪除用戶
  userdel -r USER_NAME:刪除用戶的同時刪除用戶的家目錄和郵件目錄
  
2.2 組管理
 組的類別:
  用戶的基本組稱爲主組
  用戶的額外組稱爲附加組
 
 /etc/group文件
  示例:
   [root@localhost ~]# tail -1 /etc/group
   test:x:502:
   解析:
    test:組名
    x:組密碼,加密存放至gshadow文件中
    502:GID
    空:屬於該組的用戶列表
    
 建立組:groupadd命令
  groupadd GROUP_NAME:新建組
  usermod GROUP_NAME USER_NAME:將指定用戶添加到指定組中
 
 修改組:groupmod命令
  groupmod -g GID GROUP_NAME:修改組GID
  groupmod -n OLD_GROUP_NAME NEW_GROUP_NAME:修改組名
  groupmod -r :建立系統組,centos6 GID<500,centos7 GID<1000
 
 刪除組:groupdel GROUP_NAME
 
 組密碼管理:gpasswd
  格式:gpasswd [option] GROUP
  參數:
   -a user:將user添加到自動組中
   -d user:刪除用戶user的以當前組爲組名的附加組
   -A user1,user2......:這是有管理權限的用戶列表
 
 臨時切換基本組:newgrp命令
  若是用戶不屬於此組需臨時切換到該組則須要密碼
 
2.3 其餘用戶和組相關知識
 查看用戶相關信息:id命令
  id USER_NAME:查看用戶相關的信息
 
 切換用戶或其餘用戶身份執行命令:su
  su USER_NAME:非登陸切換,即不會讀取目標用戶的配置文件
  su - USER_NAME:登陸切換,會讀取目標用戶的配置文件,屬於徹底切換
   root使用su切換到其餘用戶無需密碼,非root用戶切換時須要輸入密碼
  su [-] USER_NAME -c 'COMMAND':使用USER_NAME的身份來執行COMMAND
  su -l USER_NAME:和su - USER_NAME功能同樣。shell

3. 權限管理
 文件權限解析:
  文件權限對象定義:
   owner:屬主,u
   group:屬組,g
   other:其餘,o
  文件權限定義:
   r:可讀
   w:可寫
   x:可執行
  目錄權限定義:
   r:可查看目錄的文件列表
   w:可在目錄中新建、添加或刪除文件
   x:可查看文件列表,也可以使用cd命令進入此文件
  文件權限對應的數字編號
  ---:0
  --x:1
  -w-:2
  r--:4
  r-x:5
  rw-:6
  rwx:7
 ls -l 文件列表解析示例:
  [root@localhost ~]# ls -l
  total 52
  -rw-------. 1 root root  2392 Oct 27  2014 anaconda-ks.cfg
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Desktop
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Documents
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Downloads
  -rw-r--r--. 1 root root 12581 Oct 27  2014 install.log.syslog
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Music
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Pictures
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Public
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Templates
  drwxr-xr-x. 2 root root  4096 Oct 27  2014 Videos
  以ls -l的結果第二行爲例解析:
   第一字段-:
    d:目錄
    -:文本文件
    l:軟鏈接文件
    c:字符設備文件
    t:套接字文件
    b:塊設備文件
    n:網絡設備文件
   rwx:屬主權限,對應數字編號7,可列列表,可cd,可修改
   r-x:屬組權限,對應數字編號5,可讀列表,可cd,不可修改
   r-x:其餘用戶權限,對應數字編號5,可讀列表,可cd,不可修改
   1:硬連接次數
   root:所屬用戶爲root
   root:所屬組爲root
   2392:容量大小,以bit爲單位
   Oct 27 2014:最後一次修改時間
   Desktop:文件夾名
 默認權限:umask
  示例詳解:
  [root@localhost ~]# umask
  0022
  由上能夠看出直接輸入umask命令可查看當前建立文件夾和文件時的默認權限
   文件夾權限:
    0:粘着位
    022:表明初始文件夾的權限,文件夾的滿權限爲rwxrwxrwx,對應數字爲777,777-022=755,755對應權限爲rwxr-xr-xr-x,因此默認文件夾權限爲755
     [root@localhost ~]# mkdir test1
     [root@localhost ~]# ls -ld test1
     drwxr-xr-x. 2 root root 4096 Jun 16 05:24 test1
   
   文件權限:因爲系統考慮到有些風險須要去除,因此滿權限爲rw-rw-rw-,對應數字爲666
    0:粘着位
    022:666-022=644,對應權限爲rw-r--r--
     [root@localhost ~]# touch test1
     [root@localhost ~]# ls -l test1
     -rw-r--r--. 1 root root 0 Jun 16 05:29 test1
  umask 026:從新設置默認權限爲0026,對應默認建立文件權限爲640,對應默認建立文件夾權限爲751
  
4. 改變安全性設置
4.1 改變權限
 chmod:改變目錄和文件的安全性設置
 格式:chmod [OPTION] ... MODE,MODE ...FILE...
 使用方式:
  八進制:
   [root@localhost ~]# ls -l test1
   -rw-r--r--. 1 root root 0 Jun 16 05:43 test1
   [root@localhost ~]# chmod 777 test1
   [root@localhost ~]# ls -l test1
   -rwxrwxrwx. 1 root root 0 Jun 16 05:43 test1
   經過上述示例可看出可直接經過修改權限的八進制來修改權限。
  增長或刪除某一類或幾類用戶權限:
   [root@localhost ~]# ls -l test1
   -rwxrwxrwx. 1 root root 0 Jun 16 05:43 test1
   [root@localhost ~]# chmod o-wx test1
   [root@localhost ~]# ls -l test1
   -rwxrwxr--. 1 root root 0 Jun 16 05:43 test1
   經過上述示例能夠看出經過o-wx參數來取消了其餘用戶對此文件的寫和執行權限,也能夠經過o+來增長權限,以此類推。
  指定或修改某一類或幾類用戶的權限
   [root@localhost ~]# ls -l test1
   -rwxrwxr--. 1 root root 0 Jun 16 05:43 test1
   [root@localhost ~]# chmod ug=rw test1
   [root@localhost ~]# ls -l test1
   -rw-rw-r--. 1 root root 0 Jun 16 05:43 test1
   經過上述示例可看到能夠經過u=,g=,o=或ug=,uo=,go=或a=來指定權限。centos

4.2 改變屬主和屬組
 chown:改變文件的屬主和屬組
  chown OWNER FILE_NAME:改變文件的屬主
  chown .GROUP FILE_NAME:改變文件的屬組
  chown OWNER.GROUP FILE_NAME:改變文件的屬主和屬組
 參數:
  -R:可配合通配符遞歸修改匹配文件的權限
  -h:能夠修改文件所屬符號鏈接文件的所屬關係
 
 chgrp:能夠修改文件的默認屬組
  參數:
   -R:遞歸安全

5. 特殊權限設置
 SUID:SUID僅對於二進制可執行文件生效,當用戶啓動此可執行文件爲進程時,改進程的屬主爲原程序文件的屬主。用戶對SUID生效有如下限制與功能:
  文件爲可執行的二進制文件;
  執行者對文件有可執行權限;
  執行者在執行此二進制程序文件時具有該文件owner權限;
  該權限僅只此二進制程序執行時有效;
 權限設定:
   chmod u+s FILE......:爲該文件增長S權限
   chmod u-s FILE......:去掉該文件的S權限
 
 SGID:SGID可針對於文件和目錄生效,具有一下限制條件和功能:
  文件:
   文件需爲二進制可執行文件;
   執行者需具有可執行權限;
   執行者在運行此二進制文件爲進程時具有了該文件屬組的權限;
   該執行權限僅此二進制程序執行時生效;
  目錄:
   執行者必須具有此文件夾的rx權限;
   若是執行者對該目錄有w權限時,在此目錄下建立的文件夾或目錄的屬組爲該目錄的屬組
 權限設定:
  chmod g+s DIR......:爲該文件夾增長S權限
  chmod g-s DIR......:爲該文件夾去除S權限
 
 Sticky:設置了sticky的文件夾,用戶僅能刪除、移動、重命名本身建立的文件夾
  Sticky使用時的限制條件和功能:
   用戶對該目錄需有wx權限;
   僅管理員和用戶本身能夠刪除、移動、重命名本身建立的文件和目錄;
 權限設定:
  chmod o+s DIR......:爲文件夾增長S權限
  chmod g-s DIR......:爲該文件夾去除S權限
   
 限位映射:
  SUID:user,佔據屬主的執行權限位
   s:屬主擁有x權限
   S:屬主沒有x權限
  SGID:group,佔據group的執行權限位
   s:group擁有x權限
   S:group沒有x權限
  Sticky:other,佔據other的執行權限位
   t:other擁有x權限
   T:other沒有x權限bash

相關文章
相關標籤/搜索