Не удается записать файл с разрешением на запись

У меня есть этот файл:

$ ls -lrta ~/.bash_profile -rwxr-x---. 1 xxx xxx 904 May 23 15:36 /home/xxx/.bash_profile $ 

Я являюсь владельцем файла, и у меня есть разрешение на запись. Когда я пытаюсь отредактировать (например, удалить последнюю строку), у файла возникла ошибка,

 $ sed -i '$ d' .bash_profile sed: cannot rename ./sedxkZezg: Operation not permitted $ 

Добавление текста с помощью cat может успешно записываться в файл.

 $ cat >> .bash_profile writing ^D $ 

Я просмотрел прилагаемый текст,

 $ cat .bash_profile ... <some text> ... writing $ 

Ошибка также возникает, когда я редактирую файл с помощью текстового редактора (vi).

Может ли кто-нибудь объяснить, почему я не могу написать файл, хотя у меня есть разрешение на запись?

Вот некоторая информация о системе, которую я использую:

 $ uname -svr Linux 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 

ОБНОВЛЕНИЕ :

Вот что я пробовал до сих пор:

 $ sed -i '$ d' .bash_profile > file && mv file .bash_profile sed: cannot rename ./sedm89Ym2: Operation not permitted $ lsattr ~/.bash_profile lsattr: Inappropriate ioctl for device While reading flags on /home/xxx/.bash_profile $ getfact ~/.bash_profile getfacl: Removing leading '/' from absolute path names # file: xxx/xxx/.bash_profile # owner: xxx # group: xxx user::rwx group::rx other::--- $ 

  • Восстановить права доступа к системному файлу
  • Добавление имени dir в список файлов
  • Корень не может удалить файл на ext4
  • Как удалить файл без каких-либо разрешений?
  • Как работают разрешения / атрибуты файлов? Уровень ядра, уровень FS или оба?
  • Как написать в каталоге вне дома?
  • Как я могу создать монтировку unionfs-fuse, которая читается всеми?
  • Владелец файла должен принадлежать группе файлов?
  • 3 Solutions collect form web for “Не удается записать файл с разрешением на запись”

     sed -i ... file 

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

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

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

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

    Вероятно, вы можете найти больше информации где-нибудь в журналах.

     getfattr -dm- ~/.bash_profile 

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

     lsattr ~/.bash_profile 

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

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

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

    В любом случае, можете ли вы сделать:

     $ ls -la ~ 
    Interesting Posts

    Показывать IP-адреса последних 20 пользователей для входа на мой сервер

    Получение фатальных ошибок PHP в vTiger при входе в систему от обычных пользователей

    Почему команда rename не работает так, как ожидалось?

    Как установить или обновить пакет с yum с нулевым кодом выхода?

    Токсизировать строку из $ REPLY в скрипте bash

    Gmail блокирует mutt

    Проблемы с подключением дисплея Dell к Lenovo P50 Запуск Fedora 24

    Как система chroot взаимодействует с ядром

    Regex: соответствие 2-го и 3-го символов

    Может ли seccomp использоваться для обеспечения детерминированного исполнения?

    Как запустить gdb на одном компьютере и запустить ядро ​​kgdb на другом компьютере?

    Удаление всех файлов, кроме папок в каталоге

    Создать каталог из файлов и переместить файлы

    Не удалось выполнить команду «lsscsi»

    Ubuntu 14.04 с использованием пространства подкачки на 100%, с более чем 40 ГБ свободной памяти, почему?

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