Как root может записывать данные в файл sudoers с правами доступа 440?

Как root может записывать данные в файл sudoers с правами доступа 440?

Итак, когда я смотрю на права доступа к файлу /etc/sudoers, то вижу следующее:

-r--r----- 1 root root 705 Nov  2 19:57 /etc/sudoers

Теперь, не означает ли это, что он недоступен для записи? Так как же пользователь root может записывать в него?

решение1

Пользователь root всегда имеет полный доступ на запись к любому файлу, независимо от его режима.

Возможно, лучшим примером является /etc/shadow, который имеет режим 000, но, конечно, может быть изменен пользователем root:

[root@centos7 ~]# ls -pl /etc/shadow
----------. 1 root root 1353 Oct 26 07:40 /etc/shadow

решение2

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

Владелец файла всегда может изменить права доступа к любому файлу, которым он владеет (тогда как root может сделать это для всех существующих файлов).

Если вы обычный пользователь, то все зависит от того, каким образом вы пытаетесь изменить файл, доступный только для чтения:

  • откройте файл с помощью vi и измените его -> вы можете записать изменения с помощью ":w!"
  • попробуйте #echo "test" >> read-only-file, доступ запрещен.

Если вы являетесь пользователем root, вы можете перезаписывать и изменять любой файл, но программа vi учтет права доступа «только для чтения» и запросит подтверждение.

Файл /etc/sudoers всегда следует изменять с помощью команды "visudo", которая открывает содержимое фактического файла во временном файле и выполняет некоторые проверки перед сохранением изменений. Как пользователь root, изменения могут быть записаны, несмотря на разрешения только для чтения.

решение3

Попробуйте использовать visudo вместо vi

sudo visudo

Связанный контент