Мое понимание разрешений сегодня нарушено.
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 и mine
, и у меня есть разрешение на запись для обоих.
evaben@evaben /t/test> mv mine theirs/
mv: cannot move 'mine' to 'theirs/mine': Permission denied
Конечно, я не могу переместить свой каталог в их;У меня нет разрешения на запись в theirs
.
evaben@evaben /t/test [1]> mv theirs/ mine/
mv: cannot move 'theirs/' to 'mine/theirs': Permission denied
Почему я не могу переместить theirs
в mine
?Я могу написать CWD, И Dest (mine
).Я не изменяю theirs
никаким образом.
evaben@evaben /t/test [1]> sudo chmod o+w theirs/
evaben@evaben /t/test> mv theirs/ mine/
(works)
Я могу mv, если у меня есть разрешение на запись для них.
Объяснение из Википедии гласит:
При установке для каталога это (запись) разрешение дает возможность изменять записи в каталоге, включая создание файлов, удаление файлов и переименование файлов.
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
РЕДАКТИРОВАТЬ:
Я пытался использовать переименовать (2) напрямую.
rename("theirs", "mine");
Работает IFF mine
пусто.- фактически моя заменена моей.Если у меня есть файлы;ENOTEMPTY 39 Directory not empty
.
rename("theirs", "mine/theirs");
Дает EACCES 13 Permission denied
.И это то, что я хочу сделать, и то, что дает mv
- так что, очевидно, не ошибка в mv
(все еще ошибка в моем понимании).