junyks 回复于:2004-03-23 15:04:46 |
谢谢你的勤劳! |
maldinihjw 回复于:2004-03-23 15:28:44 |
好东西,一直不太清楚umask |
tc 回复于:2004-03-23 15:36:49 |
今天下午闲着没事,就写了一点东西,希望大家喜欢~~~ |
sxsfxx 回复于:2004-03-23 17:23:57 |
看了这名话 umask的值+chmod文件的值=666 umask的值+chmod文件夹的值=777 让我想起了某介说员的一句名言,说他统计了一下,总球数和总失球居然相等!! 文件权限可以看做是一个3位的8进制数,chmod时用这个3位8进制数,这样比用那些字母方便,呵呵! |
tc 回复于:2004-03-23 17:29:31 |
[quote="sxsfxx"]看了这名话 umask的值+chmod文件的值=666 umask的值+chmod文件夹的值=777 让我想起了某介说员的一句名言,说他统计了一下,总球数和总失球居然相等!! 比如现在我的umask为022,然后我新建了一个文件,他的权限就是644,可能是我没有说的很清除,每一位相加减~ |
sxsfxx 回复于:2004-03-23 17:38:03 |
[quote:3751895af7="tc"]xsfxx"]看了这名话 umask的值+chmod文件的值=666 umask的值+chmod文件夹的值=777 让我想起了某介说员的一句名言,说他统计了一下,总球数和总失球居然相等!! 比如现在我的umask为022,然后我新建了一个文件?.........[/quote:3751895af7] 这是肯定的了,新建的文件或目录的权限就是把掩码和666或777与运算一下得到的 :m01: |
tc 回复于:2004-03-23 19:09:13 |
sxsfxx兄,关于那个t位的说法我想和你探讨一下。 有的书闪说t位是一个可执行应用程序在执行完毕以后将自己保留在内存中,有的说凡是加上了t位的文件就不能删除(但是在有的时候可以删除,在tmp下好像不行。)。 请问你那里有没有其他的说法?? |
tc 回复于:2004-03-23 19:46:43 |
欢迎大家来讨论权限问题呀~ |
 .netocool 回复于:2004-03-23 20:17:43 |
正好这几天在研究LINUX权限的问题 我理解Linux里面的权限分配跟WINDOWS下不同的是,LINUX不能把文件夹的权限对应地分给每个用户,只能用组的方法间接地把权限分配给用户 |
wd 回复于:2004-03-23 20:19:58 |
所以你要是想把全县分配给某几个用户,必须为他们建立一个组。 |
netocool 回复于:2004-03-23 20:22:04 |
可是在LINUX下一个用户最多只能同属于32个组,这也许是个缺点 |
tc 回复于:2004-03-24 08:50:59 |
[quote:0efeca19be="netocool"]可是在LINUX下一个用户最多只能同属于32个组,这也许是个缺点[/quote:0efeca19be] 假设一下,如果次要组的权限发生冲突,那么如何区别? |
tanxiaoming 回复于:2004-03-24 08:57:08 |
s权限是一个比较搞的东西,按楼主所说,s权限就是一个带x属性的file,只要某用户首次执行了它,则该用户及改用户所在的组就有了对这个file的权限,是这样吗? |
好好先生 回复于:2004-03-24 09:08:44 |
精华贴分类索引中有这方面的贴子,对s,S,T,t讲的都比较详细。 |
tc 回复于:2004-03-24 09:12:17 |
[quote:ffa5577b65="tanxiaoming"]s权限是一个比较搞的东西,按楼主所说,s权限就是一个带x属性的file,只要某用户首次执行了它,则该用户及改用户所在的组就有了对这个file的权限,是这样吗?[/quote:ffa5577b65] S权限分为SUID和SGID,也就是说当一个用户执行一个可执行程序的时候拥有用户属主或者属主所在的组的权限。 这是有区别的。 :D |
tc 回复于:2004-03-24 12:41:31 |
一直有一个问题,再使用mc是看到权限位之前的文件类型标识位使用什么方法修改? 这个问题困扰了我很长时间了! |
netocool 回复于:2004-03-24 13:59:54 |
up |
sakulagi 回复于:2004-03-24 14:12:27 |
好像只有t是可以设置的吧,试一下 权限位实际上是4位数字,试试chmod 7777 test_file_name |
tc 回复于:2004-03-25 09:43:52 |
[quote:07179d2205="sakulagi"]好像只有t是可以设置的吧,试一下 权限位实际上是4位数字,试试chmod 7777 test_file_name[/quote:07179d2205] 谢谢你的回复,我的意思不是说设置T,SUID,SGID位,而是说,在console下使用mc的时候,可以看到除了这些位以外的文件类型标识位。 比如: - 普通文件,类型位是10 d 目录,类型位是4 s 可执行文件,类型位是14 c 字符设备,类型位是2 b 块设备,类型位是6 p 管道文件,类型位是1 我的意思是这些文件实际上在linux中是以类型位来确定文件类型,如何来直接修改这些类型位? |
tc 回复于:2004-03-25 12:47:00 |
问题还没有解决,我自己顶上去! |
tc 回复于:2004-03-25 18:37:02 |
各位DX,快来帮帮忙看看先~ |
netocool 回复于:2004-03-25 19:27:35 |
up |
sakulagi 回复于:2004-03-25 19:53:38 |
这样修改应该是不允许的吧?如果我把一个目录的类型强行修改成一个block device,那么这个目录里的所有的文件的将如何访问呢?其他的程序在处理这个目录的时候该如何处理它呢? |
網中人 回复于:2004-03-26 00:11:19 |
樓主有試過 033 的 umask 嗎? ^_^ |
wd 回复于:2004-03-26 11:12:28 |
y代表SUID,SGID,T位,其中SUID=4,SGID=2,T位=1 这个是用来干吗的? 每次设置权限我都没有包括他,呵呵。。。 |
tc 回复于:2004-03-26 13:11:09 |
[quote:3fac3677b6="sakulagi"]这样修改应该是不允许的吧?如果我把一个目录的类型强行修改成一个block device,那么这个目录里的所有的文件的将如何访问呢?其他的程序在处理这个目录的时候该如何处理它呢?[/quote:3fac3677b6] 谢谢你的回复,你的这种回答我也觉得是比较合理的解释。谢谢~ 在这里也感谢其他几位回复的网友,虽然他们都误解文件标识位是umask了:) :m01: |
magretg 回复于:2004-03-26 14:11:04 |
好贴呀. |
ohsnoopy 回复于:2004-03-26 15:21:52 |
好,仔细看看记下来 :em22: ! |
tc 回复于:2004-03-26 19:26:27 |
[quote:6ba6de6c07="wd"]y代表SUID,SGID,T位,其中SUID=4,SGID=2,T位=1 这个是用来干吗的? 每次设置权限我都没有包括他,呵呵。。。[/quote:6ba6de6c07] 在上面我已经说了D,SUID代表在执行一个程序的时候拥有属主的身份,SGID师拥有属主所在的组的身份,t位不让删除~ |
網中人 回复于:2004-03-26 20:52:36 |
嗯?樓主還沒回答我 umask 033 的問題呢~~~ ^_^ 關於 suid, sgid, sticky bit ,對於 file 與 directory 來說,意議都不相同的。 樓主諸位先進,似乎說的都還不是很完整... 不知有多少人先看過精華區裡的舊文章了呢? |
sxsfxx 回复于:2004-03-27 10:43:26 |
看来我以前也是一知半解呀,谢谢tc! “UNIX环境高级编程”的第四章有详细的介绍,大家可以看一下! 好铁,建议板主固精! |
tc 回复于:2004-03-27 10:47:47 |
[quote:473f344905="網中人"]嗯?樓主還沒回答我 umask 033 的問題呢~~~ ^_^ 關於 suid, sgid, sticky bit ,對於 file 與 directory 來說,意議都不相同的。 樓主諸位先進,似乎說的都還不是很完整... 不知有多少人先看過精華區裡的舊文章?.........[/quote:473f344905] 现在我的手上没有linux的机器,我就在我的HPUX上操作了一下,验证我的看法。 当文件umask位是033的时候同umask022是一样的情况,新建文件的权限是-rw-r--r--,新建目录的权限是-rw-r--r--,这同umask022的时候是一样的情况。 同时也谢谢你的回复,我去看了看以前的帖子,可能是我才上cu时间不长的关系,手里的链接不是很丰富,如果楼上有相关的链接,请贴出来大家分享,谢谢~ |
tc 回复于:2004-03-27 11:07:27 |
[quote:9762927544="sxsfxx"]看来我以前也是一知半解呀,谢谢tc! “UNIX环境高级编程”的第四章有详细的介绍,大家可以看一下! 好铁,建议板主固精![/quote:9762927544] 谢谢~ 也感谢你的恢复,大家一起探讨才能更加有效的进步~~ |
justboy2000 回复于:2004-03-27 16:40:46 |
好,好,好,高,实在是高!!!!!强烈建议固精!!!!! |
網中人 回复于:2004-03-27 17:24:11 |
[quote:c7d4e0bad2="tc"]现在我的手上没有linux的机器,我就在我的HPUX上操作了一下,验证我的看法。 当文件umask位是033的时候同umask022是一样的情况,新建文件的权限是-rw-r--r--,新建目录的权限是-rw-r--r--,这同umask022的时候是..........[/quote:c7d4e0bad2] 是的,確是如此... 不過,有去想想這樣的結過為何與之前介紹的公式不一樣呢? new_perm + umask = 666 假如大家找不到相關資料的話,答案我會稍後跟大家說... 嗯,不是不說,或賣甚麼關子啦,我只是希望大家先"活動一下腦力", 這樣的話,之後出來的效果會更深刻哦... 當然,若在我說出答案之前,就能找到原因,那更是值得慶賀的事情﹗ ^_^ |
tc 回复于:2004-03-27 19:16:09 |
[quote:824e1cb87f="網中人"] 是的,確是如此... 不過,有去想想這樣的結過為何與之前介紹的公式不一樣呢? new_perm + umask = 666 假如大家找不到相關資料的話,答案我會稍後跟大家說... 嗯,不是不說,或賣甚麼關子啦,我只是希望大..........[/quote:824e1cb87f] 网兄,这是我在我的电脑上做的试验的全过程。 # umask 022 # umask 022 # mkdir 022d # touch 022 # ll 022 -rw-r--r-- 1 root sys 0 Mar 17 11:03 022 # ll -d 022d drwxr-xr-x 2 root sys 96 Mar 17 11:03 022d # umask 033 # umask 033 # mkdir 033d # touch 033 # ll 033 -rw-r--r-- 1 root sys 0 Mar 17 11:04 033 # ll -d 033d drwxr--r-- 2 root sys 96 Mar 17 11:04 033d 结论是:umask 033和022在创建文件的时候是一致的,但是在目录的时候却出现不同~并且,当我使用普通用户无法登陆003d目录,因为没有x权限。如下: # su user $ ls 022 SD_CDROM dev lib opt tmp 022d TT_DB etc lost+found root usr 033 bin export mnt sbin var 033d cdrom home nohup.out stand vml $ lsf 022 SD_CDROM/ dev/ lib/ opt/ tmp/ 022d/ TT_DB/ etc/ lost+found/ root/ usr/ 033 bin/ export/ mnt/ sbin/ var/ 033d/ cdrom/ home/ nohup.out stand/ vml $ cd 033d sh: 033d: Permission denied. |
網中人 回复于:2004-03-27 20:37:15 |
嗯... 還不是我要的哦... 你提到的是"結果",我要的是"原因"... 繼續加油,快到了﹗ ^_^ |
tc 回复于:2004-03-28 10:06:29 |
[quote:ab6a03cfd5="網中人"]嗯... 還不是我要的哦... 你提到的是"結果",我要的是"原因"... 繼續加油,快到了﹗ ^_^[/quote:ab6a03cfd5] 网兄,你看这样理解咋样? umask 022 033 F 644 644 D 655 755 现在问题的关键不是在目录上的权限异常,而是根据上面我说的公式 umask+XXX=666(file时) umask+XXX=777(Dri时) 分析出来的结果应该是当umask=033的时候,f的权限应该是633。 那么633同644有什么差别?我当时在想是不是存在这样一种情况,当一个文件具有写和执行的权限的时候,这个文件是可读的,于是我做了一下试验,试验结果如下: # touch tttt # chmod 333 ttt chmod: can't aclearcase/" target="_blank" >ccess ttt # chmod 333 tttt # more tttt # cat >tttt jkadnbflke skdjfbnlskr klsdjfglakjer # cat tttt jkadnbflke skdjfbnlskr klsdjfglakjer 证明当一个文件具有写和执行的权限的时候,这个文件是可读的。 ^_^,希望这是你要的答案! ps:同你讨论技术,感觉可以学习很多东西:) |
網中人 回复于:2004-03-29 00:41:57 |
嗯... 好像還是差那麼一點點... ^_^ 好吧,我這裡就我對 Linux File Permission 的部份發表一下個人意見, 不見得完全正確,只希望提出來給大家一些參考。 ----------------------------- 1) Permission Mode 首先,File Permission Mode 是存在 inode 中的資訊, 一共有 12 個 bit (0與1):0 是關閉、1是打開。 其中每一個 bit 所代表的意思分別如下: suid, sgid, sticky_bit, user_read, user_write, user_execute, group_read, group_write, group_execute, others_read, others_write, others_execute。 舉例: 100111101101 (binary mode) 但在系統應用及管理上,我們一般不是採用 binary mode(二進位), 而是使用 octal mode(八進位) 或 text mode(文字) 。 其中的 octal mode 就是單純將 binary 換算過來就可以了。 你可試試 linux 的 bc 命令來算一算: $ echo "obase=8;ibase=2;100111101101" | bc 4755 不過,若你手邊沒有 bc 命令或計算器可用的話,那用手工來算也不難: 先列一個 3bit 的對照表: 000 : 0 001 : 1 010 : 2 011 : 3 100 : 4 101 : 5 110 : 6 111 : 7 然後,將 12bit 分成 4 組: 100,111,101,101 再跟據上表就能輕送換算出: 4,7,5,5 不過,在 text mode 的表示上,則有些複雜,因為需將 12 個字母壓縮為 9 個。 不過其原理也不難: * 將第一組的 bit 分散在後三組的 x 位置上: suid 蓋掉 ux 然後用 s 或S 表示 sgid 蓋掉 gx 然後用 s 或S 表示 stickbit 蓋掉 ox 然後用 t或T 表示 * 若 x 有設則用小寫;若 x 沒設則為大寫 * 若某一 bit 在打開狀態下用文字表示(rwxst)關閉狀態下則用 - 表示(或S,T)。 下面是前例的對照: [code:1:45bf2e0c43]binary: 100 111 101 101 text: rws r-x r-x octal: 4 7 5 5 [/code:1:45bf2e0c43] 下面是另兩例: [code:1:45bf2e0c43]binary: 010 111 111 101 001 111 111 111 text: rwx rws r-x rwx rwx rwt octal: 2 7 7 5 1 7 7 7[/code:1:45bf2e0c43] 2) ugo 利用 ls -l 命令,可獲得每一個文件的如下資訊: file_type&permission_mode, link_count, user, group, size, modification_time, file_name 我們可以從最左邊的欄位看到十個字母, 第一個為: file type 其餘九個為 permission mode ,又分為三組:user, gorup, others 。 對每一個使用者來說,ugo 這三組只能選其一: * 若 uid 與 file uid 一致,則取 user 而忽略 group & others 。 * 若 uid 與 file uid 不一致,則再看 gid(s) 若與 file gid 一致。取 group 而忽略 user & others 。 * 若 uid 與 gid 與 file 都不一致,則取 others 而忽略 user & group。 (註:你可在任何時候輸入 id 這個命令得知你所使用的 uid 與 gid(s)。) 3) rwx 一旦使用者所參考的 ugo permission 能確定下來之後, 接下來就來看其取的的 permission 代表的意思了。 事實上rwx 對下面兩種 file type 來說是不一樣的: *以 - 開頭為 file: r: 可讀取該檔的內容 w: 可修改該檔的內容 x: 可執行該檔(executable)並產生 process * 以 d 開頭為 directory: r: 可讀取該目錄底下的內容(即列出 file 及 sub dir) w: 可修改該目錄底下的內容(即增減 file 及 sub dir) x: 可進入該目錄底下(即 access ,如門禁卡一般) 其中 directory 的 x 最不好理解: 就算你對 dir 有 rw ,若沒 x 的話,那也跑不進去做事情, 就好像你是自己套房的主人,卻進不了公寓大門一樣。 然而,當你對一個 directory 有了 rwx 權限之後, 裡面或許有些 file/dir 你是沒有 rwx 權限的, 就好比套房裡放了一些不屬於你的物品: * 你沒辦法打開一看究竟(沒 r) * 你沒辦法偷龍轉鳳動手腳(沒 w) * 你只能乾瞪眼卻無福消受(沒 x) 但,你卻可以將之仍進垃圾桶... 因為你在套房: * 可以看到所有物品(r) * 可以搬進搬出或 DIY 物品(w) * 你有鑰匙入門(x) 4) suid, sgid, sticky bit SUID/SGID 對 executable file 而言, 會影響所產生的 process 用哪個 uid/gid: 若有設,從 file 本身的 uid/gid 繼承。 若沒設,從 parrent process 繼承(通常是 shell)。 sticky_bit 在現代的 Linux 系統中,對 file 來說是沒任何意意的。 但 SUID 對 directory 沒啥意義(有設沒設都一樣), 不過, SGID 對 directory 來說, 會影響該目錄下新建的 file/dir 的 gid : 若有設,gid 從 dir 繼承(若是 new dir,其 SGID 也會繼承)。 若沒設,那 gid 從產生 new file/dir 的 process 繼承。 至於 directory 的 sticky bit ,則起到保護文件的作用: 若沒有設,使用者只要對 dir 有 w permission ,就能刪除 dir 裡的文件(請參考前述)。 若有設,使用者除了要有 w permsissin 之外,還需符合如下兩個條件之一: * 使用者之 uid 必須與文件所在目錄一致,或: * 使用者之 uid 必須被刪文件一致。 5) umask umask 的作用,就是在新建文件或目錄時,需要取消的 permission 。 其運算法則為: new dir: (NOT umask) AND 0777 (000,111,111,111) new file: (NOT umask) AND 0666 (000,110,110,110) 其中的 NOT(bitwise) 與 AND 是羅輯運算: NOT : 1 變 0, 0 變 1 AND: 1&&1=1, 0&&0=0, 1&&0=0, 0&&1=0 以 0033 的 umask 為例子來算: new dir: * 0033 換為 bit :000,000,011,011 * NOT 0033 得:111,111,100,100 * 與目錄 0777 :000,111,111,111 * 做 AND 運算得:000,111,100,100 * 轉為 octal 就是:0, 7, 4, 4 new file: * 0033 換為 bit :000,000,011,011 * NOT 0033 得:111,111,100,100 * 與目錄 0666 :000,110,110,110 * 做 AND 運算得:000,111,100,100 * 轉為 octal 就是:0, 6, 4, 4 要用減法的話,對 new file 恐怕會不準。 用 666-033=633 但事實上:(NOT 033) AND 666 = 644 --------------------------- okay,Linux File Permission 的確是非常重要的基礎, 應該花多一點時間將其中的原理弄清楚,這對日後的管理工作有很大幫助。 |
Nigel 回复于:2004-03-29 03:19:41 |
good,值得收藏 |
tc 回复于:2004-03-29 13:01:27 |
[quote:2fe103b149="網中人"] 2) ugo 利用 ls -l 命令,可獲得每一個文件的如下資訊: file_type&permission_mode, link_count, user, group, size, modification_time, file_name 我們可以從最左邊的欄位看到十個字母, 第一個為: fi..........[/quote:2fe103b149] 好贴~~~ 谢谢:) |
Coolin 回复于:2004-04-09 17:16:25 |
我想问一下 如果是 用mount挂栽上去的分区呢? 我挂载的是 FAT32格式的分区 可以改变它的权限吗? 怎么修改? |
Coolin 回复于:2004-04-10 10:52:55 |
真的就没人重视 这个问题吗? 等待中 |
sakulagi 回复于:2004-04-10 11:43:52 |
不能,已经讨论过很多次了。 |