Файл sudoers имеет следующую строку:
root ALL=(ALL) ALL
Я прочитал, что первым полем является пользователь. Затем сначала ALL
– все терминалы, а (ALL)
означает как любой пользователь, а последний ALL
означает любые команды.
Что происходит, когда у нас нет этой строки в файле sudoers? Тогда корень не мог ничего сделать?
username ALL= /bin/passwd
как это, можно ли его интерпретировать как «имя пользователя», может запускать passwd из всех терминалов
Какие значения могут быть заданы вместо первого ALL
?
Файл sudoers
управляет только тем, что возможны sudo
вызовы. Строка, позволяющая root
делать что-либо с помощью sudo
, не всегда полезна, потому что root никогда не нуждается в sudo
для чего-либо. Это более удобно: таким образом вы можете писать сценарии, которые могут быть вызваны равнодушными с помощью root или других sudoers и которые вызывают sudo
для повышения привилегий.
username ALL = /bin/passwd
позволяет пользователю запускать команду passwd
на любой машине (и на любом терминале – sudo не заботится об этом). Sudo позволяет использовать имена машин в файле sudoers
чтобы вы могли развернуть файл sudoers
без изменений на всех компьютерах вашей сети и все еще иметь некоторые правила, которые применяются только к некоторым машинам.
Во второй позиции вы можете иметь список хостов ( Host_List
в руководстве sudoers
). Это список имен хостов, разделенных запятыми. Вместо имени хоста вы можете иметь псевдоним (см. Руководство для деталей), IP-адрес или различные способы указания подсети (подробнее см. Руководство).
Руководство sudoers
нелегко прочитать, но у него есть хороший список примеров к концу. Я предлагаю вам сначала прочитать эту часть.
У sudo
нет прав на пользователя root. В этой строке есть вероятность того, что root выполнит команду с префиксом sudo
. Это правило позволяет root сделать это.
Это действительно больше защита, поэтому root не блокируется в случаях, когда скрипт может иметь внутри себя команду с префиксом sudo
.
Кстати, вы читаете правило следующим образом:
root ALL=(ALL) ALL
что означает: пусть root запускает любую команду на любом хосте, как любой пользователь. Поэтому в некотором смысле это правило переносимо, если вы должны перенести его из одной системы в другую, поскольку в ней ничего не говорится об ограничении root конкретным хостом, или этот корень ограничен любым способом через sudo.