找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 8464|回复: 1

【转】linux的档案权限属性

[复制链接]
发表于 2009-11-29 02:15:01 | 显示全部楼层 |阅读模式 IP:江苏扬州
使用 ls 命令之後﹐您會看到目錄內容會以行列的形式列出來﹐不過﹐除非您原先就知道它們是什麼﹐否則您也看不出究竟哪一個是目錄﹐哪一個是檔案(不過﹐現在的 Linux 會用不同的顏色來表示不同的檔案﹐這樣也直觀多了)。如果您需要更詳細的信息﹐可以加上 -l 的參數﹕ ls -l

這時後﹐您會看到這樣的結果﹕ -rw-r--r--   1 root  root   103 Oct 27 22:09 test.ls-rw-r--r--   1 root  root   103 Oct 27 22:37 test.ls.copylrwxrwxrwx   1 root  root     7 Oct 27 22:37 test.ls.ln -> test.lsdrwxr-xr-x   2 root  root   024 Oct 27 22:37 test1-1


這裡﹐我們得到的信息明顯多了許多。首先讓我們看看第一列的意思﹕在句子開頭共有10 字母空位可提供檔案的一些屬性信息。第一個如果是‘-’的話﹐表示這是一個常規檔案﹐如果是‘d’的話表示這是一個目錄﹐如果是‘l’的話﹐表示這是一個 link﹔接著其後的 9 個字母﹐分為三組﹕分別是分配給‘user (擁有者)’﹑‘group (群組)’﹑和‘others (其他使用者)’這三個不同使用者群的權限﹔而其中每一組使用者可以擁有這些權限﹕‘r’表示 readable (可讀)﹑‘w’表示 writable (可寫)﹑和‘x’表示 executable (可執行)。
跟著是一個數字﹐是關於這個檔案的 hard link 數目。目前為 1 ﹐也就是說它只有一個 hard link 而已﹐也就是最後一個。如果這個檔案被刪除掉﹐那麼它所佔據的磁碟空間就會釋放出來。
接下來我們看到 root root 這兩列﹐分別表示‘user’和‘group’是誰。user 會是系統的其中一個使用者﹐通常是建立這個檔案的使用者﹐而 group 則是該 user 所屬的群組。通常﹐一個 group 可以包括好些 user 在內﹐同時﹐一個 user 也可以從屬於好幾個 group 之中。無論是 user 或 group﹐都必須由系統管理員來建立或刪除。
至於再後面數列﹐是檔案的一些資料﹕大小和修改日期﹐最後則是檔案名稱。
那麼﹐我們看看第一行﹕

http://hi.baidu.com/xxjyz/blog/item/file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg

我們可以獲得這樣的信息﹕首先﹐這是一個檔案﹐它的擁有者 root 對這個檔案具備‘讀(r)’和‘寫(w)’的權限﹐而屬於 root 這個群組的組員﹐都只具備‘讀(r)’的權限﹐其他的使用者也只具備‘讀(r)’的權限。
當您得到一個檔案的時候﹐會根據您目前的身份(可以用 id 命令查詢)來判定您對該檔案擁有的權限。如果您就是該檔案的擁有者﹐那您就獲得 user 相關的權限﹔如果您不是它的 user﹐那麼看您是否屬於這個 group 裡面﹐然則您就獲得 group 的權限﹔如果您既不是 user﹐也不在 group 裡面﹐那您就獲得 others 的權限了。
我們這裡看到的權限設定為內建值﹐也就是該檔案被建立起的時候就是這樣設定的了。不過﹐我們可以改變這些設定哦~~~﹐下面讓我們輸入這幾個命令﹕ chmod u+x test.ls
chmod g+wx test.ls
chmod o+x test.ls

或是合為一句﹕
chmod u+x,g+wx,o+x test.ls

這個 chmod 命令是 change mode 的意思﹐第一行是為 user 增加 x 權限﹐第二行是為 group 增加 w 和 x 權限﹐而第三行則是為 others 增加 x 權限﹐如果您這時候再使用 ls -l 的話﹐您會看到 test.ls 的權限會變成﹕rwxrwxr-x 這樣的權限值了。我們使用“+”來增加權限﹐如果使用“-”是刪除權限﹐如果使用“=”則是指定權限值。不過﹐您是否覺得這樣輸入命令很麻煩呢﹖有沒用更 方便的辦法啊﹖答案是﹕有的﹗現在﹐請您輸入這樣的命令﹕ chmod 777 test.ls

您會看到test.ls的權限會變成﹕rwxrwxrwx﹐也就是所有使用者都具備所有權限了﹐因為我們給每一個使用者群 都賦予‘7’這個數值﹐它分別是﹕1(x)+2(w)+4(r)的總和﹐如果是‘0’的話﹐就表示沒用任何權限。但事實上﹐權限值並的真正計算方法是以二 進位進行的﹕
先讓我們看看 x,r,w 的 bit 位元表示方式﹕
x: 001w: 010r: 100
如果將全部位元做 OR 運算就是最終 permission﹕rwx 的位置都是 111 ﹐換成十進位就是 7 了。
下面您如果輸入﹕ chmod 750 test.ls

您會發現權限會變成﹕rwxr-x---﹐至於為什麼會如此﹐不妨算算看﹕
1) 將 750 換成二進位﹐就是﹕111,101,0002) 分別將 rwx 的位置代入得﹕rwx,r-x,---(方法﹕1 對應著的權限就打開﹐0 對應的就關閉)
就這麼簡單 ^_^
好了﹐我們剛纔已經會得計算自己對一個檔案擁有什麼樣的權限﹐也知道如何改變檔案的權限設定。但是﹐檔案被建立的時候﹐預設會獲得怎樣的權限呢﹖這個值就要靠 umask 來決定了。如果您現在輸入 umask﹐會得到 022 的值﹐這個值決定了檔案在建立的時候﹐要拿掉什麼樣的權限。在沒有使用 umask 的時候﹐所建立的檔案都是 777 這個值的﹐但當運用了 umask 之後呢﹐目錄會變為 755﹐而檔案則為 644 。那是怎麼得出來的呢﹖還是回到二進位吧﹐然後將完整權限和 umask 進行 NOT 和 AND 運算﹐就是最後的權限值。
在建立目錄的時候﹕1) 首先﹐我們先對 unmask 進行 NOT 運算﹕000,010,010 的 NOT 運算結果是﹕111,101,101 ﹔2) 然後再和 777﹐也就是﹕111,111,111 進行 AND 運算﹔3) 最後﹐我們會得到這樣的結果﹕111,101,101 ﹔換成十進位就是 755。而至於檔案的建立﹕預設會把它的 x (001) 拿掉﹐其實也是先進行 NOT + AND 運算﹕1) 先對 x 做 NOT 運算﹕001 NOT ==> 1102) 然後和 111 做 AND 運算﹕111,111,111110,110,110  AND-----------------110,110,110      ===> 也就是 666﹐ 然後再和 umask 022 做 NOT 跟 AND 運算﹕111,101,101  AND-----------------110,100,100      ===> 換成十進位是 644 ﹐這才是真正的結果。
我們的 umask 值是登入的時候﹐由 shell 的 profile 分配的(一般規則是:user 與 group 同名為 022﹐否則是 002)﹐我們可以在任何時候改變這個值﹕用 umask 命令以新的值作參數就可以了﹐如﹕umask 002 ﹐然後新建立的檔案就變成 664 的權限了。
tips﹕如果您不習慣用二進位進行計算﹐只能用十進位來算的話﹐可以簡單的這樣算﹕
目錄是用 777 扣掉 umask 的值﹔
檔案是用 666 扣掉 umask 的值。

没有全部转完,我觉得这部分是最值得去理解的,原文地址http://www.study-area.org/linux/linuxfr1.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 03:34 , Processed in 0.201214 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表