shell修改文件夾許可權
A. 編寫的shell程序運行前必須賦予該腳本文件什麼許可權
題主你好,
linux系統下, 如果想執行一個文件,必須要給該文件賦予可執行許可權, 而賦予許可權的命令為:
chmod +x 文件名
舉例來說, 下圖為我編寫的輸出文本 hello world 的shell腳本內容,腳本名為ok.sh:
通過上圖可以看出, 在使用chmod命令給ok.sh文件加上可執行許可權後, 對其執行, 終端成功輸出了我們想要的結果: hello world
-----
希望可以幫到題主, 歡迎追問.
B. 編寫的shell程序運行前必須賦予該腳本文件什麼許可權
程序要運行,就必須有執行許可權。用代碼表示為:chmod +x script.sh
有三種許可權更改方式: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可以成功添加用戶