Linux 檔案和資料夾的操作許可權

2021-09-20 02:36:39 字數 4860 閱讀 5740

由於 linux 是多使用者作業系統,所以基於安全的考慮,需要具備保障個人隱私和系統安全的機制。因此在使用 linux 系統的時候,經常會出現許可權的問題(比如: 刪除檔案、安裝軟體、執行應用等等),期初遇到這些問題的時候,大部分都使用sudo或者是sudo chmod 777 file(後面會講解這個命令)來解決的。雖然這種方式可以解決問題,但是這樣是不安全的,特別是在伺服器上操作的時候,因為不是所有的檔案和資料夾都可以被其它使用者操作的,不是所有的使用者都有root許可權的,不是所有的應用都可以用root使用者啟動的。那麼我們要如何正確的處理這些許可權問題呢?那就讓我們來學習一下 linux 許可權相關的知識。

要確定乙個使用者對某個檔案或資料夾是否具有相應的操作許可權,先要明確該使用者與檔案或資料夾之間的關係。在 linux 系統中,定義了如下三種關係:

因為在 linux 下的檔案和資料夾都有讀取(r)寫入(w)執行(x)的操作,所以上面描述的每種關係的使用者分別都可以賦予這些操作許可權。操作許可權介紹:

許可權簡寫

對普通檔案的作用

對資料夾的作用讀取r

檢視檔案內容

列出資料夾中的檔案(ls)寫入w

修改檔案內容

在資料夾中刪除、新增或重新命名檔案(夾)執行x

檔案可以作為程式執行

cd 到資料夾

在 linux 使用ls -la命令可以檢視資料夾內檔案的屬性,下面是我電腦上某個資料夾下檔案的屬性:

$ ls -la

drwxr-xr-x 14 root root 4096 apr 3 18:47 .

drwxr-xr-x 23 root root 4096 mar 2 05:48 ..

drwxr-xr-x 2 root root 4096 apr 3 07:44 backups

drwxr-xr-x 17 root root 4096 jul 22 2014 cache

drwxr-xr-x 2 root root 4096 mar 2 04:26 docker-registry

lrwxrwxrwx 1 root root 9 feb 25 13:31 lock -> /run/lock

drwxrwxr-x 15 root syslog 4096 apr 3 07:44 log

-rw-r--r-- 1 root root 0 apr 3 18:47 test

-(常規檔案)、d(目錄)、l(符號鏈結)、c(字元特殊裝置)、b(模組特殊裝置)、p(fifo)、s(套接字)

在 linux 系統中還有三種與使用者身份無關的三個檔案許可權屬性。即suid、sgid和sticky

該屬性只對有執行許可權的檔案有效,對目錄無效。執行具有suid許可權的程式時,引發的程序的所有者是程式檔案的所有者,而不是啟動程式的使用者(除非二者是同乙個人)。比如,如果乙個程式的所有者是root且具有suid屬性,乙個普通使用者執行此程式時,如同root執行此程式一樣。(請注意該屬性對shell指令碼程式無效)該屬性為一些特殊程式(如lpr)的啟動帶來了方便。但有時也帶來了安全隱患:比如乙個具有suid屬性的程式如果在執行時執行了乙個shell,那麼使用者可以籍此得到系統的最高許可權。suid可用s表示,如:

$ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 47032 feb 16 2014 /usr/bin/passwd

對於可執行檔案,sgidsuid類似,引發的程序的所有組是程式檔案所屬的組。對於目錄,sgid屬性會使目錄中新建檔案的所屬組與該目錄相同。sgid也可以用s表示,如:

$ ls -l /var

drwxrwsr-x 2 root staff 4096 apr 10 2014 local

drwxrwxr-x 15 root syslog 4096 apr 4 19:57 log

僅對目錄有效。帶sticky屬性的目錄下的檔案或目錄可以被其擁有者刪除或改名。常利用sticky屬性建立這樣的目錄:組使用者可以在此目錄中建立新檔案、修改檔案內容,但只有檔案所有者才能對自己的檔案進行刪除或改名。如系統中的/tmp資料夾。在屬性字串中,通常用t表示。

$ ls -l /

drwxrwxrwt 8 root root 4096 apr 4 23:57 tmp

在 linux 系統中,可以使用chmod命令來修改檔案或資料夾對應使用者的操作許可權,chmod命令也有兩種方式修改,一種是使用代表相應操作許可權的字母簡寫表示,另一種是使用代表相應操作許可權的數字表示。

chmod語法引數格式: ugoa[rwxst]

第乙個字元是u、g、 o 或 a 中的乙個(分別表示使用者、組、其他人和所有人)。還可以選擇新增(+)、刪除(-)或設定(=)各種不同許可權。

$ sudo chmod u+x try
$ sudo chmod ug+rw try
$ sudo chmod ug-r try
為了簡化表述,也可使用八進位制數來表示許可權。即用乙個四位八進位制數來表示,其中最高位表示特殊許可權,隨後的三位依次是所有者許可權、組許可權和其他人許可權。每乙個八進位制位的許可權數值是檔案具有的相應許可權所對應的數值之後,如:

0755=rwxr-xr-x=0(4+2+1)(4+0+1)(4+0+1)
數值許可權的演算法,比如rw-其實就是110的二進位制,也就是0*2^0 + 1*2^1 + 1*2^2 = 6。有相應的許可權就用1表示,沒有相應的許可權就用0表示。不過這種演算法特殊許可權不包含在內。

使用chown可以修改檔案或資料夾的擁有者和所屬的組。

$ sudo groupadd  try
$ sudo groupadd -n rename-try try
$ sudo groupadd -n rename-try try
$ sudo groupdel  try2
$ sudo cat /etc/group

在 linux 系統上雖然可以使用useraddadduser來建立使用者,但是這兩個命令是有區別的。

使用useradd時,如果後面不新增任何引數選項,例如:$sudo useradd test建立出來的使用者將是預設「三無」使用者:一無home directory,二無密碼,三無系統shell。

使用adduser時,建立使用者的過程更像是一種人機對話,系統會提示你輸入各種資訊,然後會根據這些資訊幫你建立新使用者。

下面建立使用者使用的是adduser命令:

$ sudo adduser test

adding user `test' ...

adding new group `test' (1002) ...

adding new user `test' (1001) with group `test' ...

creating home directory `/home/test' ...

copying files from `/etc/skel' ...

enter new unix password:

retype new unix password:

passwd: password updated successfully

changing the user information for test

enter the new value, or press enter for the default

full name : test

room number :

work phone :

home phone :

other :

is the information correct? [y/n] y

了解 linux 使用者操作許可權,安全就掌握在手中。

Linux檔案和資料夾的操作

資料夾中存放的是檔案。1 新建 2 改名 3 檢視 4 刪除 5 拷貝 6 移動1 檔案的操作 檔案的新建 touch filename 檔案的改名 mv 檔案的檢視 ls 檔案內容的檢視 cat 檔案的刪除 rm r f 檔案的拷貝 cp r f p 檔案的移動 mvtouch命令 touch命令...

python檔案和資料夾操作

python中對檔案 資料夾 檔案操作函式 的操作需要涉及到os模組和shutil模組。得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 返回指定目錄下的所有檔案和目錄名 os.listdir 函式用來刪除乙個檔案 os.remove 刪除多個目錄 os.removedi...

Perl 檔案和資料夾操作

作為一門程式語言,perl有著強大的檔案和資料夾操作功能。perl利用檔案控制代碼 file handle 和資料夾控制代碼 dir handle 與作業系統進行輸入輸出連線。檔案和資料夾控制代碼一般使用大寫子母或指定標量以示特殊。檔案開啟語句及說明 一般加入die函式做開啟失敗的提示。my fil...