歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Shell基礎:Linux權限管理

Shell基礎:Linux權限管理

日期:2017/2/28 13:48:57   编辑:SHELL編程

Linux權限基本概念

查看系統(文件夾/文件)權限: ls -l =>d/- xxx xxx xxx. num owner group size date filename

  • d代表目錄,-代表文件
  • 第一個xxx 表示所有者的權限; 第二個xxx表示所在組的權限; 第三個xxx表示其他用戶的權限
  • 為了保護系統,創建完文件以後,某個文件的默認權限為-rw-r--r--. 所有者有讀寫權限,其他用戶只有讀的權限
  • num表示文件數目,創建的是文件,num=1,創建的是文件夾,num表示文件夾中含有的文件數
  • owner 表示創建者
  • group 表述文件所屬組
  • size 表示文件大小
  • date 表�%@4�日期
  • filename 表示文件或者文件夾名字

Linux 系統權限分類

  • rwx(r--讀,w--寫,x--執行)
  • augo(a--所有,u--所有者,g---所屬組,o--其他)

Linux用戶管理

  • 查看用戶詳情 id user
    • 示例: id root => uid=0(root) gid=0(root) groups=0(root)
    • 示例: id sr => uid=500(sr) gid=500(sr) groups=500(sr)
    • 顯示root/user用戶的uid, gid組id, 所屬組
  • 新建用戶 useradd user/passwd user
    • 示例:useradd user1 => id user1 => uid=501(user1) gid=501(user1) groups=501(user1)
    • 示例:passwd user1,系統會彈出提示讓輸入密碼,passwd+user可以用來創建或者更改密碼
    • 創建新用戶時默認會為該用戶分配id, 創建相應組,分配組id, id從500開始依次往下
    • 創建完新用戶系統會把新用戶的配置信息添加到/etc/passwd 文件中
    • 為新用戶添加完密碼系統會把相應的密碼信息添加到/etc/shadow 文件中
    • 創建完新用戶會默認為新用戶添加一個組,並把組的信息添加到/etc/group
    • 創建完新用戶,home家目錄下會自動為新建用戶分配一個文件夾,表示用戶的根目錄/home/user1
  • 刪除用戶userdel -r user
    • r參數非常重要,每次添加user用戶時,為該用戶添加和修改了很多文件,加了-r才能徹底的把這些文件都刪除干淨,不然系統仍然保存著user的信息,無法再添加同名用戶。
    • 刪除時忘了r參數,需要去更改非常多的文件(/etc/passwd&shadow&group ; /home/user; /var/spool/mail/user)
  • 給用戶添加組 gpasswd -a sr root
    • gpasswd是操作/etc/group的administrator,可以對組添加或刪除member,增加密碼等等
    • 把用戶sr添加到root組中,添加完運行id sr=>uid=500(sr) gid=500(sr) groups=500(sr),0(root)
    • -a, append
  • 從組中刪除用戶gpasswd -d sr root
    • 把用戶sr從root組中刪除

Linux 有三種權限更改方式:chmod/acl/sudo

  • 前兩者用來更改文件權限,sudo用來更改應用程序或者是命令的執行權限
  • chmod的局限是無法實現多種權限分配(用戶群體只有三種),面對多權限時需要用ACL進行設置

Chmod

chmod (agou)(+-)(rwx) filename

  • agou 表示文件權限更改影響的范圍,分別代表all, group, others, user
  • +-表示增加或者刪除權限
  • rwx表示具體的權限類型
  • chmod a+x test.txt 表示給test.txt的所有使用者增加執行權限
  • chmod a-x,a-w test.txt 表示去除所有人執行和更改test.txt的權限

chmod XXX filename

  • 三類用戶一起設置,第一個X代表所有者,第二個X代表所屬組,第三個X代表其他
  • r(4) w(2) x(1): chmod 755 test.txt 給test.txt的owner設置rwx的權限,給其他所有用戶設置rx權限因為要計算每一種用戶的權限,多用於批量處理權限。對用戶單獨設置權限多用英文,而非數字

權限細化的問題,chmod最多只有三個權限組,當有多個用戶,並且每個用戶的權限都不一樣時,chmod有局限性。

ACL(setfacl/getfacl)

文件和文件夾的權限:

  • 如果有多個用戶組,權限設置是很復雜的事情,需要仔細規劃(ACL和Chmod混合使用容易產生一些權限問題,建議單獨使用)
  • 文件夾的讀權限:可以列出目錄下內容
  • 文件夾執行權限:可以進入到文件夾中,執行切換目錄等操作
  • 文件夾的寫權限:可以在文件夾中增刪文件
  • 用戶對某個文件有了rwx權限,不代表用戶有權刪除該文件,只代表對文件內容有了刪除權限,要能對文件級別進行操作,需要設置相應的文件夾的w權限。

getfacl filename/filedirectory

  • 查看文件/文件夾 權限:結果會展示user,group和other的整體權限,以及特殊用戶的權限

setfacl -m u:username:rwx filename

  • 給某個用戶添加對某個文件或者文件夾的特殊權限
  • 給普通用戶添加完相應權限以後,root也會有相應的權限(理論上root擁有最多的權限)

setfacl -x u:username filename

  • 刪除用戶對某個文件或者是文件夾的特殊權限

SUDO

簡介

  • 不同於chmod/acl 設置某個文件的權限,sudo主要是為非root用戶增加系統的處理和執行權限。比如只有root有useradd權限,通過sudo,可以為普通用戶增加useradd權限。
  • 為普通用戶增加權限有兩種方式:帶密碼驗證和不帶密碼驗證,並且可以指定sudo可運行的機器。
  • 使用sudo有兩個步驟:1. visudo編輯權限 2. 普通用戶在使用命令前添加sudo

創建無密碼sudo(執行腳本時通常采用無密碼sudo)

  • 編輯visudo: 運行visudo, 采用Vim編輯器編輯添加 sr localhost=NOPASSWD:/usr/sbin/useradd,給用戶sr添加“添加用戶”的超級權限
  • 切換到sr用戶
  • sudo useradd testadd,在sr模式下添加新的用戶

創建有密碼sudo(可以確保有密碼用戶才使用此命令)

  • 編輯visudo: 運行visudo, 采用Vim編輯器編輯添加 sr localhost=/usr/sbin/useradd,給用戶sr添加“添加用戶”的超級權限
  • 切換到sr用戶
  • sudo useradd testadd,系統會彈出命令提示,驗證完命令以後sr可以成功添加用戶
Copyright © Linux教程網 All Rights Reserved