Bash程式設計018 許可權管理

2021-09-10 02:36:21 字數 2749 閱讀 7619

linux是乙個支援多使用者的系統,為了區分管理不同使用者的檔案,linux設定了不同的訪問許可權區別不同的使用者。對乙個檔案而言,將訪問它的使用者分為三類:檔案擁有者,擁有者同組的成員,其他組的成員。

cd ~

ls -l

# 輸出如下:

總用量 64

drwxrwxr-x 2 ruo ruo 4096 1月 6 19:50 bin

drwxrwxr-x 4 ruo ruo 4096 1月 4 17:46 codes

drwxr-xr-x 3 ruo ruo 4096 1月 9 16:32 desktop

drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 documents

drwxr-xr-x 4 ruo ruo 4096 12月 21 23:14 downloads

-rw-rw-r-- 1 ruo ruo 151 12月 27 09:29 fault.c

drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 music

drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 pictures

-rw-rw-r-- 1 ruo ruo 9223 1月 4 18:07 ps.txt

drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 public

drwxr-xr-x 3 ruo ruo 4096 12月 22 21:58 snap

drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 templates

drwxrwxr-x 2 ruo ruo 4096 1月 6 19:59 test

drwxr-xr-x 2 ruo ruo 4096 12月 9 11:09 videos

如上所示,之前介紹過長格式中第乙個字元表示檔案的型別:d表示資料夾、-表示檔案、l表示鏈結檔案等。那麼後面9個字母即是針對上述三大類使用者的訪問許可權,訪問許可權分為:可讀、可寫、可執行或可搜尋(對目錄而言)(分別用字母r、w、x表示,-表示)。9個字母,每三個一組,分別為讀、寫、執行的許可權設定。

我們來新建乙個檔案演示具體許可權。

cd ~

touch test.txt

ls -l test.txt

# 輸出如下:

-rw-rw-r-- 1 ruo ruo 0 1月 10 19:10 test.txt

可以看出其為普通檔案,檔案持有者擁有讀寫許可權,檔案持有者同組成員也具有讀寫許可權,其他組的成員僅具有讀寫許可權(注:root使用者對所有檔案都具備許可權)。

chmod是coreutils中的乙個修改檔案模式位設定的程式,可以幫助我們設定檔案的許可權。檔案模式位可以採取符號表示或者八進位制數字表示,下面分別介紹它的用法。

格式:chmod [ugoa] [+-=] [rwx] filename

其中ugoa表示不同類別的使用者,u代表檔案持有者,g代表持有者同組的使用者,o代表其他使用者,a代表所有使用者。(這些使用者類別可以組合使用,若不給出指定使用者類別則預設為a,但是這會受到掩碼設定的影響)

+-= 表示對檔案進行何種方式的設定,+表示新增許可權,-表示減少許可權,=表示設定許可權為給定的值。

rwx表示具體許可權設定。r表示讀取許可權,w表示寫入許可權,x表示執行或搜尋的許可權。

# 示例,修改之前建立test.txt檔案的許可權

chmod a= test.txt

ls -l test.txt

# 輸出如下:可以看出所有使用者的許可權所有許可權都被取消了(管理員除外)

---------- 1 ruo ruo 0 1月 10 19:10 test.txt

# 若此時試圖檢視檔案,會得到許可權不夠的提示

cat test.txt

cat: test.txt: 許可權不夠

chmod u=rwx test.txt

ls -l test.txt

# 輸出如下:

-rwx------ 1 ruo ruo 0 1月 10 19:10 test.txt

chmod ugo=rwx test.txt

ls -l test.txt

# 輸出如下:

-rwxrwxrwx 1 ruo ruo 0 1月 10 19:10 test.txt

另一種表示許可權的方式是八進位制數字0~7,其中4表示讀許可權,2表示寫許可權,1表示執行或搜尋許可權(不同許可權值可以相加組合)。0表示無許可權,1表示執行或搜尋許可權,2表示寫許可權,3(1+2)表示寫許可權和執行或搜尋許可權,4表示讀許可權,5(4+1)表示執行或搜尋許可權和讀許可權,6表示讀寫許可權,7表示所有許可權。這樣,就可以用三個八進位制數字對檔案進行許可權管理,不需要再使用ugoa。

chmod =000 test.txt

ls -l test.txt

# 輸出如下:可以看出所有使用者的許可權所有許可權都被取消了(管理員除外)

---------- 1 ruo ruo 0 1月 10 19:10 test.txt

chmod 222 test.txt

ls -l test.xt

# 輸出如下:

--w--w--w- 1 ruo ruo 0 1月 10 19:10 test.txt

chmod +111 test.txt

ls -l test.txt

# 輸出如下:

--wx-wx-wx 1 ruo ruo 0 1月 10 19:10 test.txt

bash 許可權不夠

sudo ls test bash test 許可權不夠 其實需要重定向的不僅僅只有echo命令 眾所周知,使用 echo 並配合命令重定向是實現向檔案中寫入資訊的快捷方式。本文介紹如何將 echo 命令與 sudo 命令配合使用,實現向那些只有系統管理員才有許可權操作的檔案中寫入資訊。比如要向 t...

python 許可權管理 python程式設計 許可權管理

from django.db import models create your models here.class user models.model username models.charfield max length 32 pasword models.charfield max leng...

bash程式設計

sticky許可權 每個使用者只能刪除自己的檔案 sgid 其他使用者在該目錄創立檔案仍然是該目錄的屬組 suid 執行的程式是該程式使用者執行 suid s 沒x許可權 s 有x許可權 t other有x許可權 t 沒x bin bash if lt 1 then echo exit 1 fiif...