1. 程式人生 > >Linux 文件基本屬性: chown修改所屬組 和 chmod修改文件屬性命令

Linux 文件基本屬性: chown修改所屬組 和 chmod修改文件屬性命令

只讀 多個 user 文件的 blog OS roo ble 語法

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
-rwxrwxr-x   4 root root 4096 Apr 19  2012 main.c

  • 當為[ d ]則是目錄
  • 當為[ - ]則是文件;
  • 若是[ l ]則表示為鏈接文檔(link file);
  • 若是[ b ]則表示為裝置文件裏面的可供儲存的接口設備(可隨機存取裝置);
  • 若是[ c ]則表示為裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)。

技術分享圖片

第0位確定文件類型,

第1-3位確定屬主(該文件的所有者)擁有該文件的權限。

第4-6位確定屬組(所有者的同組用戶)擁有該文件的權限,

第7-9位確定其他用戶擁有該文件的權限。

第1、4、7位表示讀權限

第2、5、8位表示寫權限

第3、6、9位表示可執行權限

在Linux系統中,用戶是按組分類的,一個用戶屬於一個或多個組。

[root@www /]# ls -l
total 64
d rwx r-x r-x 2 root  root  4096 Feb 15 14:46 cron
d  rwx  r-x  r-x 3 mysql mysql 4096 Apr 21  2014 mysql

就是說root用戶組 其他用戶組的不可以修改

在以上實例中,mysql 文件是一個目錄文件,屬主和屬組都為 mysql,

屬主有可讀、可寫、可執行的權限;

與屬主同組的其他用戶有可讀和可執行的權限;其他用戶也有可讀和可執行的權限。

對於 root 用戶來說,一般情況下,文件的權限對其不起作用。

更改文件屬性

1、chgrp:更改文件屬組

語法:

chgrp [-R] 屬組名文件名

參數選項

  • -R:遞歸更改文件屬組,就是在更改某個目錄文件的屬組時,如果加上-R的參數,那麽該目錄下的所有文件的屬組都會更改。

如:

chgrp -R daokr test 更改 test的 目錄屬於組daokr 但是daokr用戶無法修改該目錄文件

2、chown:更改文件屬主,也可以同時更改文件屬組

語法:

chown [–R] 屬主名 文件名
chown [-R] 屬主名:屬組名 文件名



daokr@daokr-sys:/home$ chown -R daokr:daokr test
chown: 正在更改test/tt/m.c 的所有者: 不允許的操作
chown: 正在更改test/tt 的所有者: 不允許的操作
chown: 正在更改test 的所有者: 不允許的操

必須用root用戶操作修改權限組和屬性主

root@daokr-sys:/home# ls -l
總用量 12
drwxr-xr-x 20 daokr daokr 4096 3月  27 14:41 daokr
-rw-r--r--  1 root  root    19 3月  27 14:23 maintest.c
drwxr-xr-x  3 daokr daokr 4096 3月  27 14:35 test

3、chmod:更改文件9個屬性 更改文件 只讀 只寫 可執行的屬性

Linux文件屬性有兩種設置方法,一種是數字,一種是符號。

Linux文件的基本權限就有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限。讀寫執行權限

先復習一下剛剛上面提到的數據:文件的權限字符為:『-rwxrwxrwx』, 這九個權限是三個三個一組的!其中,我們可以使用數字來代表各個權限,各權限的分數對照表如下:


第一種案例:數字更改

數字來代表各個權限,各權限的分數對照表如下:

  • r:4
  • w:2
  • x:1

每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,例如當權限為: [-rwxrwx---] 分數則是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以等一下我們設定權限的變更時,該文件的權限數字就是770啦!變更權限的指令chmod的語法是這樣的:

 chmod [-R] xyz 文件或目錄

選項與參數:

  • xyz : 就是剛剛提到的數字類型的權限屬性,為 rwx 屬性數值的相加。
  • -R : 進行遞歸(recursive)的持續變更,亦即連同次目錄下的所有文件都會變更

舉例來說,如果要將.bashrc這個文件所有的權限都設定啟用,那麽命令如下:

改下m.c 文件的屬性 為 rwx rwx ---  意思是 主用戶權限是 rwx=7 root用戶是 rwx=7 其他用戶 無權限

daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-rw-r--r-- 1 daokr daokr 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ chmod 770 m.c 
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-rwxrwx--- 1 daokr daokr 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ sudo chown daokr:root m.c
[sudo] daokr 的密碼: 
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-r--rwx--- 1 daokr root 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ vim m.c 
daokr@daokr-sys:/home/test/tt$ chmod 440 m.c

上面的 把 m.c 修改了權限組root 和 文件屬性 440;說明 daokr用戶和root用戶都無法修改該文件;因為是只讀文件

第二種案例:通過字符更改

基本上就九個權限分別是(1)user (2)group (3)others三種身份啦!
那麽我們就可以藉由u, g, o來代表三種身份的權限!



此外, a 則代表 all 亦即全部的身份!那麽讀寫的權限就可以寫成r, w, x!也就是可以使用底下的方式來看:

chmod u
g
o
a
+(加入)
-(除去)
=(設定)
r
w
x
文件或目錄

如果我們需要將文件權限設置為 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 來設定:

daokr@daokr-sys:/home/test/tt$ chmod u=rwx,g=rwx,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-rwxrwx--- 1 daokr root 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=r-x,g=-wx,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-r-------- 1 daokr root 32 3月  27 15:35 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=r-x,g=r,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-r--r----- 1 daokr root 32 3月  27 15:35 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=r-x,g=rw,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-r--rw---- 1 daokr root 32 3月  27 15:35 m.c

 

而如果是要將權限去掉而不改變其他已存在的權限呢?例如要拿掉全部人的可執行權限,則:


#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

然後

daokr@daokr-sys:/home/test/tt$ chmod a-x m.c
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-r--rw---- 1 daokr root 32 3月 27 15:35 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=rwx,g=rwx,o=r m.c
daokr@daokr-sys:/home/test/tt$ ls -l
總用量 4
-rwxrwxr-- 1 daokr root 32 3月 27 15:35 m.c




Linux 文件基本屬性: chown修改所屬組 和 chmod修改文件屬性命令