Не может записать в файл с разрешением записи

И приземленный сценарий: выполнение Ctrl-Z, затем упущение об этом и выходить из системы и потеря процесса!=)

6
24.05.2013, 03:34
3 ответа
sed -i ... file

на самом деле делает что-то как:

sed ... file > some-temp-file &&
  mv some-temp-file file

Это длится mv делает a rename. Это sed -i не редактирует файл на месте, он заменяет его измененной копией себя.

Здесь это - переименовывание, которое заблокировано. Это не заблокировано из-за проблем разрешения (Вы добрались бы, разрешение отклонило сообщение об ошибке, если это было), но похоже, что существует некоторое административное ограничение любой для удаления связи с inode ~/.bash_profile (как некоторый тип SELinux мандатного управления доступом), или к пути к тому файлу (как некоторый AppArmor вводят MAC).

Можно, вероятно, найти больше подсказки где-нибудь в журналах.

getfattr -dm- ~/.bash_profile

перечислил бы все расширенные атрибуты (ACLs, контексты защиты) файла.

lsattr ~/.bash_profile

для потенциально большего количества атрибутов Linux.

3
27.01.2020, 20:28

'.' в конце ls вывод полномочий говорит, что существуют расширенные данные некоторого вида. chattr(1) дает список атрибутов для расширения? файловые системы, lsattr(1) перечисляет текущие. Также проверьте tha ACL на файл (getfacl(1)). Политика безопасности (как SELinux) могла также запретить некоторые операции на файле.

3
27.01.2020, 20:28

Вероятно, у Вас нет разрешения записи родительского dir (который является странным потому что его Ваш дом),

Так или иначе можете Вы делать:

$ ls -la ~
0
27.01.2020, 20:28
  • 1
    Если бы он не сделал, sed не смог бы создать./sedxkZezg файл. И ошибка была бы EACCESS, не EPERM. Больше походит на некоторую проблему SELinux. –  Stéphane Chazelas 23.05.2013, 12:35

Теги

Похожие вопросы