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

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

$ 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::--- $ 

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 ~ 
  • Как я могу постоянно устанавливать разрешения на rw на Raspbian?
  • Могут ли файлы создаваться с разрешениями, установленными в командной строке?
  • выпуск разрешения файла по умолчанию для пользователя rhel 6
  • Не удается переименовать каталог, который у меня есть.
  • `ls` не работает для каталога, скопированного из Win и OSX
  • Храните файл для всех пользователей в группе.
  • Должен ли я развертываться с тем же пользователем, который запускает веб-сайт?
  • Минимальные права доступа к файлу для удаления файла
  • Защита файлов из rm -rf в каталоге для записи
  • SMB Mount To Windows Server появляется для блокировки. Есть идеи?
  • 403 Запрещено на подпапки
  • Если пользователь может читать и писать только файлы, достаточно ли предотвратить выполнение?
  • Interesting Posts

    Почему cp не устанавливает атрибуты источника и не работает с -p?

    Как запретить Google Chrome обойти настройки браузера по умолчанию?

    Объедините две команды в .bash_profile

    Как печатать 1-ю и 4-ю переменные только в том случае, если 4-я переменная равна или равна 25

    Изменить идентификатор пользователя и идентификатор группы файлов в архиве?

    Как перечислить и фильтровать пользователей Samba, которым требуется смена пароля?

    Как избежать кавычек в оболочке как при использовании ssh, так и sudo?

    Мне нужно найти 1 простой руткит для проверки chkrootkit в centos?

    Указание шрифтов в xterm

    Почему мой сеанс winscp не отображается в Linux?

    iptables – разрешить трафик из туннеля GRE с опцией reject-with

    Не допускайте множественные нажатия клавиш после префикса в tmux

    Невозможно запустить сервер Glassfish на CentOS 5: предполагается, что порт используется, но это действительно не так.

    Есть ли способ перенаправить файл, который написан

    Сортировка блоков линий

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