Недавно я обновил Ubuntu Server 20.04 до Ubuntu Server 22.04. Это сервер LEMP, на котором запущена последняя версия Mainline Nginx. После обновления, когда я пытаюсь изменить файл /etc/nginx/nginx.conf с помощью редактора nano, nano показывает предупреждение красным цветом, в котором говорится:
/etc/nginx/nginx.conf предназначен только для чтения
Что это за ошибка, и с каких пор мой файл nginx.conf должен быть доступен только для чтения? Это проблема nginx, nano, файловой системы или всего вышеперечисленного? Что я могу сделать, чтобы исправить эту ошибку? Пожалуйста, посмотрите на скриншот ниже.
решение1
Это не настоящая ошибка, вы все равно можете записывать данные в файл.
nano
проверяет, установлен ли для файла бит разрешения u+w
, g+w
, или o+w
. Если ни один из этих битов не установлен, никому в системе явно не предоставлен доступ на запись в файл. Однако пользователь root (которого вы могли повысить до sudo
) отменяет это и может неявно записывать в любой файл.
Другими словами, предупреждение гласит: вы можете записывать данные в этот файл, поскольку являетесь пользователем root, но технически ни у одного пользователя нет прав на запись в этот файл.
Новое поведение возникло в результате запроса на улучшение, поданного какошибка #58685объясняя обоснование:
В настоящее время nano с успехом записывает данные в файл с правами доступа 444 [
r--r--r--
].Часто такие файлы по какой-то причине доступны только для чтения, и было бы неплохо предупредить пользователя и спросить, действительно ли он хочет это сделать.
Чтобы ответить на этот вопрос, я посмотрелкод для nano
gnu.org. (Если вам действительно нужен точный код, который поставляется в репозиториях Ubuntu, посмотритеСтартовая площадка.) В src/files.c
я нашел сообщение:
#elif defined(HAVE_GETEUID)
if (new_one && !(fileinfo.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) &&
geteuid() == ROOT_UID)
statusline(ALERT, _("%s is meant to be read-only"), realname);
#endif
Для git blame
этих строк указывает нам на необходимость совершить180a53cc0:
файлы: предупреждать пользователя root, если отсутствуют все биты записи
Root имеет карт-бланш как на чтение нечитаемых файлов, так и на запись непереписываемых файлов — файловая система этому не препятствует. Поэтому оповещайте root при открытии файла, предназначенного только для чтения.