
Может ли Linux принимать условные решения для вставки контента в определенную строку?
Например, я хотел бы добавить пользователя «test» в /etc/sudoers, чтобы он мог переключиться на root:
1 #
2 # This file MUST be edited with the 'visudo' command as root.
3 #
4 # Please consider adding local content in /etc/sudoers.d/ instead of
5 # directly modifying this file.
6 #
7 # See the man page for details on how to write a sudoers file.
8 #
9 Defaults env_reset
10 Defaults mail_badpass
11 Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
12
13 # Host alias specification
14
15 # User alias specification
16
17 # Cmnd alias specification
18
19 # User privilege specification
20 root ALL=(ALL:ALL) ALL
21
22 # Members of the admin group may gain root privileges
23 %admin ALL=(ALL) ALL
24
25 # Allow members of group sudo to execute any command
26 %sudo ALL=(ALL:ALL) ALL
27
28 # See sudoers(5) for more information on "#include" directives:
29
30 #includedir /etc/sudoers.d
Я хочу, чтобы моя команда нашла строку 20 (если root ALL=(ALL:ALL) ALL), а затем добавила следующее содержимое в строку 21
test ALL=(ALL:ALL) ALL
Можно ли это сделать с помощью команд Linux или это можно сделать только с помощью программирования на Perl или Python?
Я совсем новичок в Linux, любая помощь будет оценена по достоинству!
решение1
Неважно, куда вы добавляете строку, sudo не важен порядок.
Просто добавьте это в конец:
echo 'test ALL=(ALL:ALL) ALL' | sudo tee -a /etc/sudoers
Или, что еще лучше, используйте для этого каталог include:
echo 'test ALL=(ALL:ALL) ALL' | sudo tee /etc/sudoers.d/test
Таким образом, вам не придется вручную обновлять файл sudoers, если он изменяется во время обновления пакетов.