免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wingger
打印 上一主题 下一主题

类UNIX系统基础:文件安全与权限 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2005-02-17 09:05 |只看该作者

类UNIX系统基础:文件安全与权限

我很菜,可是愿意学

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
62 [报告]
发表于 2005-02-17 14:20 |只看该作者

类UNIX系统基础:文件安全与权限

關於 permission mode, 我這裡想補充一下:

permission mode 是存在於 inode block 裡的 12 個 bit.
當 bit 為 0 時表示關, 1 表示開, 如:
110111101101

若這 12 bit 分開4組的話, 分別為如下內容:
1) suid, sgid, sticky_bit
2) owner_read, owner_write, owner_exectue
3) group_read, group_write, group_exectue
4) others_read, others_write, others_exectue
按前例來算的, 被打開的 permission 有:
suid, sgid (110)
owner_read, owner_write, owner_exectue (111)
group_read, group_exectue (101)
others_read, others_exectue (101)

不過, 在操作上, 我們不不會用 2 進位啦, 一般(視程式而別)可使用 8 進位或 text mode :

110111101101換算為 8 進位就是 6755 了.
這個相對簡單多了, 我們可用 bc 來算算看:
echo "obase=8;ibase=2;110111101101" | bc
echo "obase=2;ibase=8;6755" | bc
如果手頭上沒有 bc 或其它工具可用, 那也可用如下的換算表來對照:
000|0
001|1
010|2
011|3
100|4
101|5
110|6
111|7
分別將 12 bit 拆四組來算就是了...(考筆試時最好用了!)

然而, 換算成 text mode 就沒那麼輕鬆了.
是因為 text mode 上只能用 9 個字母去表示 12 個 bit .
需花些心思還是可以的.
可先從最簡單的右邊 9 個 bit 來算起:
111101101
rwxr-xr-x
不難發現每組都是 rwx , 1 對著就寫相應的 text, 0 就寫 - 了.
再下來分別找到那三個 x 的位置, 因為:
suid 若為 1 會修改 owner_x: 以 s 代替 x, 以 S 代替 - .
sgid 若為 1 會修改 group_x: 以 s 代替 x, 以 S 代替 - .
sticky_bit 若為 1 會改 others_x: 以 t 代替 x, 以 T 代替 - .
簡單來說, 若原來的 x 為 1 , 就是小寫, 為 0 則是大寫.
以上例來說, 最後結果將是:
110111101101
rwsr-sr-x

至於 umask 運算, 也是可從 permission bit 來運算的.
先抓出 directory 的 default mode: 0777
及 file 的 default mode: 0666
然後將 umask bit 的 1 所對的位置設為 0 就是了.
以 umask 0123 為例吧, 換為 2 進為就是:
000001010011
對應 new file 的 0666:
000110110110
結果, 凡是 umask 1 的位置都設為 0, 得:
000110100100
再轉回 8 進位就是:
0644

若你簡單用減法來算的話, 是不對的:
0666
-0123
-------
0543 (000101100011)

真的公式可參考這個:
(bitwise_NOT umask) AND default_mode = new_permission
上例:
(bitwise_NOT 0123) AND 0666 = 0644

計算過程如下:
000001010011
bitwise_NOT 得:
111110101100
AND
000110110110
得:
000110100100
換算為 8 進位, 就是:
0644

用 2 進位來算是最接近電腦思維的方法, 也是最準確的.
只是人們一般不習慣 2 進位思維而已, 一旦熟悉之後就萬變不離其宗了!

至於 file 與 directory 在 rwx 及 suid,sgid, sitcky_bit 上的差異,
可先參考前面 wingger 版主與相關資料.
若還是理解不來的話, 我們日後再來慢慢討論好了.

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
63 [报告]
发表于 2005-02-20 17:33 |只看该作者

类UNIX系统基础:文件安全与权限

[quote]原帖由 "wingger"]文件的属主组并不一定就是所有者所在的缺省组,而可以是任何一个跟该文件所有者无关的用户组。为了方便,还是统称属主,属组和其它[/quote 发表:

有点迷糊,能不能详细些?

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
64 [报告]
发表于 2005-02-20 17:38 |只看该作者

类UNIX系统基础:文件安全与权限

[quote]原帖由 "wingger"]文件的所有者组并非是文件所有者所在的缺省组,而可以是任何一个跟该文件所有者无关的用户组。[/quote 发表:

这个也不太清楚,望高手给解释一下,多谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
65 [报告]
发表于 2005-02-20 17:47 |只看该作者

类UNIX系统基础:文件安全与权限

原帖由 "剑心通明" 发表:

这个也不太清楚,望高手给解释一下,多谢!


如下面的文件,文件属主是root,文件属组是admin,root和admin中没有必然的联系,也就是root可以属于admin组,也可以不属于admin组
  1. -rwxrw-r-- 1 root admin 34890 10月 19 20:17 httpd.conf
复制代码

论坛徽章:
0
66 [报告]
发表于 2005-02-20 18:00 |只看该作者

类UNIX系统基础:文件安全与权限

i am a liunx beginner,24044461

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
67 [报告]
发表于 2005-02-20 18:49 |只看该作者

类UNIX系统基础:文件安全与权限

明白了,谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
68 [报告]
发表于 2005-02-20 21:03 |只看该作者

类UNIX系统基础:文件安全与权限

我的理解是:
user(owner), group, others 這三組 permission ,
是三選一的關系, 優先次順從左至右.

簡單來說, 可用如下兩個命令來比對 file 的 owner 與 group:
whoami
groups

若 whoami 的結果與 file 的 onwer 一至, 那就屬 user permission.
若不一至, 再看 groups 的結果, 只要其一與 file 的 group 一至, 那就屬 group permission.
若前兩者都不是, 那就屬 others permission .

p.s.
root 其實是不受 permission 限制的(file execute 例外).

论坛徽章:
0
69 [报告]
发表于 2005-03-19 10:05 |只看该作者

类UNIX系统基础:文件安全与权限

这个帖子真好,看之后终于明白以前混淆的东西了

论坛徽章:
0
70 [报告]
发表于 2005-03-20 10:05 |只看该作者

类UNIX系统基础:文件安全与权限

很好,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP