Возможности файла Linux теряются при изменении файла. Это ожидаемое поведение?

Когда я изменяю файл, возможности файла, которые я установил ранее, теряются. Это ожидаемое поведение?

Я сначала установил возможность файла:

$ setcap CAP_NET_RAW+ep ./test.txt $ getcap ./test.txt ./test.txt = cap_net_raw+ep 

Как и ожидалось, я обнаружил, что установлен файл.

Затем я изменяю файл.

 $ echo hello >> ./test.txt 

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

 $ getcap ./test.txt 

  • Автоматически устанавливать атрибуты файлов в заданном каталоге
  • найти файлы с расширенными атрибутами
  • Мне нужно сделать файл undeleteable, но разрешить его модификацию и переименование
  • Нормально ли, что мне нужно u + w для установки расширенных атрибутов файловой системы?
  • Неизменяемый бит в AIX?
  • Как клонировать / копировать все атрибуты файла / каталога в другой файл / каталог?
  • Не понимаю, почему getfattr -d ничего не показывает
  • Расширенный атрибут по символической ссылке
  • One Solution collect form web for “Возможности файла Linux теряются при изменении файла. Это ожидаемое поведение?”

    Да, это ожидаемое поведение. У меня нет документа, который говорит об этом, но вы можете увидеть в этом патче с 2007 года

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

    Этот патч представляет security_inode_killpriv (). В настоящее время это определено только для возможностей и вызывается, когда индекс inode изменен, чтобы сообщить модулю безопасности, что он может захотеть удалить любую привилегию, прикрепленную к этому inode. Модуль возможностей проверяет, определены ли какие-либо возможности файла для inode, и, если это так, очищает их.

    security_inode_killpriv() все еще находится в ядре сегодня, вызывается из notify_change (), когда inode изменяется в «response to write or truncate»: см. dentry_needs_remove_privs ()

      /* Return mask of changes for notify_change() that need to be done as a * response to write or truncate... */ int dentry_needs_remove_privs(struct dentry *dentry) 
    Interesting Posts

    Как избавиться от горизонтального разделения в dwm

    Почему в моей системе отображается только 3,2 гигабайта ОЗУ, когда у меня определенно есть 4,0 ГБ

    Как монтировать mdf-образ, iso9660 doens't для этого?

    Можно ли выполнить поиск ключевых слов всех существующих каналов всех сетей irc из командной строки?

    переносная команда для распаковки и распаковки без GNU и старого unix

    Как псевдоним cp с cp -i по умолчанию

    Почему мой SSH-аутентификационный сокет отличается от man-страниц?

    Файлы Cp в подкаталог с find -exec

    Как добавить текст в начало строки?

    Мой grep (GNU grep) 2.5.1 не подчиняется символу обратной косой черты и специальному выражению

    Как эмулировать сеть Windows для `ntlm_auth`?

    Почему существуют два последовательных процесса экрана?

    Почему запись в / dev / random не делает параллельное чтение из / dev / random быстрее?

    echo показывает 1 4 5 6 … почему?

    Почему проверка SHA256 контрольной суммы с `sha256sum` терпит неудачу на Debian и работает на Ubuntu?

    Linux и Unix - лучшая ОС в мире.