2

Во-первых, почему я не могу это сделать?

% id -un
me
% ls -l
-rw-rw-r--+ bob bob 100 today foo
% chmod +x foo
chmod: changing permissions of `foo': Operation not permitted
% getfacl foo
# file: foo
# owner: bob
# group: bob
user::rw-
user:me:rwx
user:bob:rwx
group::rwx
mask::rw-
other::r--

У меня есть возможность, но chmod просто не хочет этого делать. Это работает, например:

% cp foo bar
% mv bar foo
% chmod +x foo
(success!)

С дополнительным побочным эффектом, что владелец файла теперь me . (Который является файлом.) Это действительно самый короткий способ сделать это?

(Немного более короткая версия,

% cp foo foo

взять на себя ответственность также не работает. Если я абсолютно не могу chmod для файла, который мне не принадлежит, есть ли способ "взять на себя ответственность", который не требует полного ввода-вывода файла?)

1 ответ1

2

Все просто: модель безопасности не позволяет этого. если ваша операционная система не имеет разрешения change_acl, только владелец файла или суперпользователь может вносить изменения в acl. Обходной путь, если у вас есть разрешения, - это взять на себя ответственность за файл, изменить разрешения и вернуть файл обратно. как правило, в системах Unix единственным, кто может передать или получить право собственности на файл, является root, но, поскольку вы нашли способ получить право собственности на файл, это скопировать файл, так что вы владеете копией и заменяете оригинал. с вашей копией. но теперь это твое. также посмотрите на sudo, это прекрасно работает для этого.

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