Владелец файла изменяет после редактирования группы доступный для редактирования файл

В моем ~/.inputrc, Я добавил editing_mode (vi) вначале вчера для создания программ, полагающихся readline, позволил мне использовать привязки клавиш vi-стиля. Извините я не упоминал это; это даже не зарегистрировалось как возможная причина, потому что я все еще не вижу, почему это завинтило бы вещи, но это сделало.

Это, возможно, завинтило вещи, потому что я также имею set -o vi в моем ~/.bashrc но в конечном счете я понятия не имею. Все, что я знаю, комментирует ту строку, зафиксировал его.

3
21.03.2015, 05:40
2 ответа

в Unix, только CORT может изменить владельца файлов. Как следствие, мы можем сделать вывод, что владелец файла не , меняется, когда вы его редактируете. Вместо этого следует делать то, что ваш редактор записывает отредактированное содержимое в новый файл и замена старого файла новым. Поскольку это совершенно новый файл, файл заканчивается с метким вами, являющимся владельцем.

Это некоторые преимущества для обновления файлов таким образом:

  • Это атомное: читатели всегда видят старую версию или новую версию, никогда не частично написанную новую версию.
  • Легче оправи от ошибок. Если возникает ошибка, такая как диск, просто удалите новый временный файл (прежде чем переименовать его сверху старой версии), чтобы откатить. Если вы обновили файл на месте, вы можете остаться неспособным завершить и обновлять, а также не удалось откатывать.
  • Вы можете «обновить» файл, который у вас нет доступа к записи (потому что вы никогда не пишете старый файл).
  • Любые пользователи, которые все еще имеют открытую файл, могут продолжать использовать старую версию, если им нужно, поэтому они не нарушены. Полезно для исполняемых файлов!

Есть также недостатки:

  • Вам требуется разрешение на запись в каталог, в котором содержится файл (или, по крайней мере, где-то еще на той же файловой системе), чтобы создать новый временный файл, а затем переименовать, что временный файл.
  • Вы не можете сохранить владельца файла, и вы можете или не сможете сохранить свою группу.
  • Существует длинный список белья других вещей, которые вы можете сохранить, реплицируя их в новом временном файле, прежде чем перемещать его на месте, например, разрешения, расширенные атрибуты, независимо от того, является ли файл Symlink к фактическому Файл в другом месте, ресурсные вилки (MacOS) и т. Д. ... Если вы не очень осторожны и очень исчерпываете, трудно не пропустить один или несколько из них.

Так что это компромисс.

Автоматизированные задачи, такие как фоновые скрипты, установка программного обеспечения и тому подобное, обычно выбирают для замены старой версии с совершенно новым файлом, особенно из-за атомарности.

Текстовые редакторы и другие человеческие задачи обычно выбирают для редактирования файла на месте.

Я незнаком с вашим редактором, но, похоже, делает противоположный выбор, что большинство других редакторов делают. Вам нужно будет посмотреть, сможете настроить его, чтобы перестать делать это.


Кстати, на самом деле это намного лучше, если владелец файлов внутри вашего корня документов принадлежит вам, а не пользователем Apache. Он обеспечивает лучшую уверенность в том, что веб-сервер (если он скомпрометируется, например) не может редактировать файлы. Таким образом, вы можете подумать о том, чтобы игнорировать эту конкретную «проблему» и считая это хорошо.

4
27.01.2020, 21:14

Да, некоторые редакторы в основном удаляют старый файл с новым отредактированным файлом. Таким образом, владелец - это тот, кто сделал редактирование, а группа будет вашей основной группой.

Однако, вы навязываете эту группу файлам, находящимся под директорией, изменяя права доступа к директории с помощью chmod g+s . .... это приведет к тому, что любой вновь созданный файл будет находиться в той же группе, что и каталог, даже если он НЕ является Вашей основной группой.

Еще один недостаток использования групповых прав на запись заключается в том, что вы должны изменить маску umask как минимум на 002, чтобы она создавала групповые файлы для записи.

2
27.01.2020, 21:14

Теги

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