技术解析

关于目录内 RWX 权限的学习疑问
0
2021-06-23 12:07:30
idczone
V 站各位大神好,首先很感谢各位大神百忙抽空看小弟的发帖,小弟目前学习到权限部分遇到疑问了,长话短说吧。

我按照书上的理解,目录的 w 权限是跟目录内文档的变动有关系,比如:移动,删除,建立新的文档,等等。
有一点我就不明白了,比如复制一个目录内的文档到另一个目录内,用 cp 命令,目录的权限没有 w,的情况下照样可以复制里面的文档?我也谷歌百度过了,复制操作是只属于 r 权限,不需要用到 w,但不是说好目录内文档的变更是也关 w 的事吗?到这里就有点乱了。
这个写估计不是重写了文件吧,只是重置了索引?非专业人士不负责猜测

就跟 git 的一些机制类似?求大佬解答。你可以试试移动文件,看是否可行

恩,谢谢,google 了一堆 copy is only read permission,我感觉我是不是自己把简单的问题复杂化了。

应该是没有权限写入文件到没有 w 权限的目录的 权限对 root 相当于都不生效 你是不是用 root 操作的?

你源和目标混淆了吧
另外,新创建的目录和文件也都有个默认权限的概念

用账户跟 root 都做了一遍,root 就不用说了,它想干啥都行,登陆其中一个账户做的时候,只是不明白为什么目录不需要 w 权限就可以对里面的文档进行复制,仅仅有 r 权限就可以。

刚试了一下,我的答案纯属放屁,如果目录只有读权限,被拒绝了。4、5 楼成功

这个和文件系统的存储有关 目录是是占用 block 的 里面存的是目录下所有文件名 一个文件名最长 255 字节 超过一个 block 大小自动扩展
目录的写权限 也就是你可以写东西到这个目录 block 里面(类比这个目录就是一个文件 你可以写这个文件即添加一个文件名 删除一个文件名)
目录的读权限也就是你可以读取目录 block 里面的内容 可以看到目录里面的文件名 具体操作权限还看目录下文件设置的权限
你如果从一个只有 rx 权限的目录里面复制一个文件到另一个目录里面 只有你对文件有权限操作就可以

我再次用非 root 账户进行了操作,命令确实可以执行,不会报错,但是文件并没有被真正的复制到只有读权限的文件夹中。系统是 ubuntu 16.04.4

我越来越糊涂了,第一回你说的是往只有 r 权限的目录里面复制一个文件。
第二回好像是从只有 r 权限的目录往外复制文件。
第三回附言是只有执行权限。


"为什么目录可以只用 excute 权限就对里面的文档进行复制操作"
还是表述很混乱啊...
是把此目录里的文档复制到此目录外面?在此目录之下进行原地文件复制黏贴 /就地生成副本?
在此目录之下将某文档复制黏贴进此目录下的某个子目录?在此目录之下的子目录里进行文件的原地生成副本?
这些状况都是很不同的好嘛。是否能写入某处,只和某处目录本身的权限有关,具备 W 权限即可。

源目录具备 rx 权限,源文件具备 r 权限,即可满足最低读取源的需求。
目标目录具备 wx 权限,目标文件具备 w 权限 (若覆盖的话),即可满足最低写入需求。

我统一回复一下回答的各位吧,真的真的很谢谢大家的回复,我已经感受到 V 站满满的热情了。果然光靠文字是很难将东西讲清楚,也许我的文字功底不好,也许我没有把思路理顺再问问题,也许我今天有点不在状态,总之种种原因吧,我直觉告诉我,其实这问题应该没有想象中那么复杂的,V 站发帖不允许发图片,那我就直接把《鸟哥 linux 私房菜》里的一段话全部完整复制过来,问题应该就清晰了,我也知道贴这么一大段话,大家会没耐心看,那我告诉大家直接看表格的最后一行就可以了,那一行就是我的问题了,也就是为什么 /dir1 将 file1 复制到 /dir2 的时候只需要,只需要用到“ x ”权限呢?而不需要也用上‘ w ’权限呢?好吧,以下是完全是书里的内容:
/*
·使用者操作功能與權限
剛剛講這樣如果你還是搞不懂~沒關係,我們來處理個特殊的案例!假設兩個檔名,分別是底下這樣:
/dir1/file1
/dir2
假設你現在在系統使用 dmtsai 這個帳號,那麼這個帳號針對 /dir1, /dir1/file1, /dir2 這三個檔名來說,分別需要『哪些最小的權限』才能達成各項任務? 鳥哥彙整如下,如果你看得懂,恭喜你,如果妳看不懂~沒關係~未來再來繼續學!
操作動作 /dir1 /dir1/file1 /dir2 重點
讀取 file1 內容 x r - 要能夠進入 /dir1 才能讀到裡面的文件資料!
修改 file1 內容 x rw - 能夠進入 /dir1 且修改 file1 才行!
執行 file1 內容 x rx - 能夠進入 /dir1 且 file1 能運作才行!
刪除 file1 檔案 wx - - 能夠進入 /dir1 具有目錄修改的權限即可!
將 file1 複製到 /dir2 x r wx 要能夠讀 file1 且能夠修改 /dir2 內的資料
你可能會問,上面的表格當中,很多時候 /dir1 都不必有 r 耶!為啥?我們知道 /dir1 是個目錄,也是個抽屜!那個抽屜的 r 代表『這個抽屜裡面有燈光』, 所以你能看到的抽屜內的所有資料夾名稱 (非內容)。但你已經知道裡面的資料夾放在哪個地方,那,有沒有燈光有差嘛?你還是可以摸黑拿到該資料夾的!對吧! 因此,上面很多動作中,你只要具有 x 即可! r 是非必備的!只是,沒有 r 的話,使用 [tab] 時,他就無法自動幫你補齊檔名了!這樣理解乎?
*/

最后一段做了解释,作为仅有执行权限的目录,系统并不能读取然后知道里面的文件名,它对系统就是个黑盒子,但是由于你事先知道了该目录下存在 file1,即你已经知道了路径,而该文件你有读权限,且是对该文件进行复制操作,显然可以成功。如果你复制该目录,应该会提示失败。
我知道那个箱子就在那里,箱子不透明,但是我知道里面有一个唯一的球,可能还有三角板,还有把尺(但是三角形和长条形的东西多了去了),那我就用手放进去摸一摸,找到一样的。
win 的权限管理不一样,但感觉类似隐藏的文件夹,看不到,但是我知道路径的话可以打开。
最后是我自己的理解,不用过于纠结 711 还是 755。这个读的权限对目录来说仅作用于目录内的文件和目录的名称。对文件而言仅作用于文件内的内容。也就是说对于一个只读的目录我可以修改目录名,对于一个只读的文件我可以修改文件名。

谢谢,解释得很生动形象,该文件有读取权限,对它进行复制操作显然可以成功,当初我就觉得这个目录一定要有‘ w ’,( d-wx------),才可以对里面的文档进行复制操作,因为目录的这个 w 权限涉及太多关于目录下文档的一些操作,比如新建文档,删除文档,更名文档,诸如此类的操作,所以我才觉得复制文档这个操作也是属于目录的‘ w ’的权限,所以才感到奇怪为什么目录没有加‘ w ’也可以复制它里头的文档呢?这样的想法,现在,感觉还好,似乎理解了,当初只是对目录的这个 w 能干些什么,而不理解。

我的解释可能也不是很对,可能还与文件类型有关。
更复杂的情况暂时不想试了,还有实际执行中会提权什么的(是么?)

别纠结了,可能涉及到规定和最开始的设计。一米为什么那么长啊,一千克为什么那么重啊。。。或者以后会有答案,我搜的一哥们的:


账户可能有特权,例如 root。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服