Outro benefício de usar visudo -f
como mencionado em algumas respostas é que existe uma opção correspondente -c
ou --check
que verifica se você não possui informações inválidas em um arquivo sudoers.d ou em qualquer outro arquivo que você queira colocar em sudoers.d. Isso é MUITO útil nos casos mencionados com ferramentas automatizadas, pois você pode executar, por exemplo,
sudo visudo -c -q -f /home/myuser/mysudoers && \
sudo chmod 600 /home/myuser/mysudoers && \
sudo cp /home/myuser/mysudoers /etc/sudoers.d/mysudoers
Isso verifica silenciosamente o arquivo (sem saída devido a -q) e somente se isso NÃO retornar um erro (saída 1 significa um arquivo de sudoers inválido), ele copiará o arquivo para sudoers.d, dessa forma, você poderá criar o arquivo e trabalhe nele sem precisar sudo visudo -f /etc/sudoers.d/myfile
corrigi- lo da primeira vez (o uso deve ser bem-sucedido ou ele descarta o conteúdo se você não o corrigir).
Além disso, uma palavra de cautela sobre essas declarações das outras respostas.
Minha experiência foi de que as regras nos arquivos deste diretório são mais flexíveis que as do / etc / sudoers. Isso inclui:
Erros no arquivo não causaram falha no sudo. No entanto, o arquivo foi ignorado. As regras de permissão parecem menos rigorosas. Eu permito que o grupo aplicável leia o arquivo. Eu não acredito que isso seja possível com o / etc / sudo.
Os arquivos em /etc/sudoers.d precisam seguir a mesma sintaxe que os / etc / sudoers, porque, por baixo das coberturas, o sistema simplesmente concatena todos os arquivos com o último em "vitória" se houver várias entradas para a mesma cenário singular.
Se as permissões estiverem horrivelmente incorretas (graváveis em todo o mundo) nos arquivos em /etc/sudoers.d/, elas serão ignoradas. Isso pode ter causado o esquecimento dos arquivos inválidos; caso contrário, você poderá violar seriamente o sudo
comando com um sudoers inválido. d arquivo com permissões corretas.
Você pode permitir que os arquivos do sudoers sejam legíveis mundialmente, se você acidentalmente permitir 'other' a permissão de gravação necessária para sudo como outro usuário ou a partir de um terminal raiz, execute este comando. Isso também pode ser interrompido se o arquivo pertencer a alguém que não seja root: root.
sudo chmod 644 /etc/sudoers.d/mysudoers
sudo chown root:root /etc/sudoers.d/mysudoers
Acabei de confirmar que, se eu executar, chmod o+w /etc/sudoers.d/vagrant
não posso mais usar o sudo como usuário vagante, ele solicita minha senha e falha.
Quando corri sudo -l
para exibir as permissões de comando aplicadas como outro usuário sudo válido, também recebi um aviso sobre as permissões de arquivo. Este é o mesmo comando que eu usei para confirmar que o usuário 'vagrant' perdeu o sudo quando apliquei o+w
permissões ao arquivo, concedendo a ele permissões de sudo.