gpt4 book ai didi

linux - 为什么我不能 `mv` 没有额外写入权限的目录

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:48 25 4
gpt4 key购买 nike

今天我对权限的理解被打破了。

evaben@evaben /t/test> ll
total 16K
drwxr-xr-x 4 evaben evaben 4.0K Mar 13 12:44 ./
drwxrwxrwt 19 root root 4.0K Mar 13 12:43 ../
drwxr-xr-x 2 evaben evaben 4.0K Mar 13 12:44 mine/
drwxr-xr-x 2 root root 4.0K Mar 13 12:44 theirs/

我拥有 CWD 和我的,并且对两者都有写权限。

evaben@evaben /t/test> mv mine theirs/
mv: cannot move 'mine' to 'theirs/mine': Permission denied

当然,我不能将我的目录移到他们的目录中;我在他们的中没有写权限。

evaben@evaben /t/test [1]> mv theirs/ mine/
mv: cannot move 'theirs/' to 'mine/theirs': Permission denied

为什么我不能将他们的移到我的中?我可以编写 CWD 和 dest(我的)。我不会以任何方式修改他们的

evaben@evaben /t/test [1]> sudo chmod o+w theirs/
evaben@evaben /t/test> mv theirs/ mine/
(works)

如果我有他们的写权限,我可以 mv。

维基百科解释说:

When set for a directory, this (write) permission grants the ability to modify entries in the directory, which includes creating files, deleting files, and renaming files.

Arch wiki 状态相似,这似乎强化了我(显然是错误的)理解。

为了进一步混淆我的大脑,它按照我对文件的预期工作:

evaben@evaben /t/test> ll
total 12K
drwxr-xr-x 3 evaben evaben 4.0K Mar 13 13:04 ./
drwxrwxrwt 19 root root 4.0K Mar 13 12:43 ../
drwxr-xr-x 3 evaben evaben 4.0K Mar 13 13:03 mine/
-rw-r--r-- 1 root root 0 Mar 13 13:04 their_file
evaben@evaben /t/test> mv their_file mine/
(worked)

wiki archwiki

编辑:

我试过直接使用rename(2)。

rename("theirs", "mine");

Works IFF 我的 是空的。 - 实际上我的被他们的取代了。如果我的有文件; ENOTEMPTY 39 目录不为空

rename("theirs", "mine/theirs");

给出 EACCES 13 Permission denied。这既是我想做的,也是 mv 给出的 - 所以显然不是 mv 中的错误(在我的理解中仍然是错误)。

最佳答案

我认为 rename(2) 手册页有解释:

ERRORS
EACCES Write permission is denied for the directory containing oldpath or newpath, or, search per‐
mission is denied for one of the directories in the path prefix of oldpath or newpath, or
oldpath is a directory and does not allow write permission (needed to update the ..
entry). (See also path_resolution(7).)

显然,为了将 theirs 移动到 mine 中,您需要具有更新 theirs 上的 .. 链接的权限

关于linux - 为什么我不能 `mv` 没有额外写入权限的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com