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

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

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

решение1

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

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

решение2

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

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

chown -R user:group dirname

Связанный контент