
O Linux pode fazer julgamento condicional para inserir o conteúdo em uma determinada linha no Linux?
Por exemplo, eu gostaria de adicionar o usuário "test" a /etc/sudoers para permitir que ele mude para 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
Quero que meu comando encontre a linha 20 (se root ALL=(ALL:ALL) ALL) e adicione o conteúdo abaixo na linha 21
test ALL=(ALL:ALL) ALL
O comando do Linux pode fazer isso ou só posso fazer isso codificando como Perl ou Python?
Sou muito novo no Linux, qualquer ajuda será apreciada!
Responder1
Não importa onde você adiciona a linha, o sudo não se importa com a ordem.
Basta anexá-lo ao final:
echo 'test ALL=(ALL:ALL) ALL' | sudo tee -a /etc/sudoers
Ou, melhor ainda, use o diretório include para isso:
echo 'test ALL=(ALL:ALL) ALL' | sudo tee /etc/sudoers.d/test
Dessa forma, você não precisa atualizar manualmente o arquivo sudoers quando ele for alterado durante as atualizações do pacote.