Linux показывает, что у меня есть разрешение на запись, но я не могу удалить этот файл. Я уже проверил, и у меня есть разрешение на выполнение для каждого родительского каталога. Есть идеи, как это могло произойти?

deployer@my-web:/usr/local/bin$ ls -la
total 10656
drwxr-xr-x  2 root     root        4096 Feb 11 21:25 .
drwxr-xr-x 10 root     root        4096 Feb  3 13:21 ..
-rwxr-xr-x  1 deployer deployer 1836198 Mar 18 19:05 composer

deployer@my-web:/usr/local/bin$ rm composer
rm: cannot remove ‘composer’: Permission denied

2 ответа2

2

Короткий ответ: вам нужны не только разрешения для файла, но и разрешения для каталога, в котором находится файл. В классической UNIX каталог - это действительно особый тип файла, который содержит указатели на файлы внутри него. Вот почему вам нужен доступ для записи (w) в каталог.

В этом случае вам необходимо изменить (или изменить привилегированного владельца) разрешения на /usr /local /bin.

0

Разрешения для каталогов не совсем такие же, как для файлов.
Разрешение на запись позволяет пользователю создавать, удалять или изменять любые файлы или подкаталоги, даже если файл или подкаталог принадлежит другому пользователю.

В случае с каталогом ничего особенного не меняется, так как используется та же команда. Однако, поскольку каталоги обычно содержат файлы, которые также должны быть назначены новому пользователю или группе, мы используем флаг ' -R ', который обозначает ' рекурсивный ' - другими словами, все подкаталоги и их файлы:

chown -R user:group dirname

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .