Devo dizer que nunca gostei de sudo (especialmente suas configurações). Simples velho su :
su -c 'command' - user
Executado a partir do root, ele não solicitará senha.
Do usuário root, como posso dar permissões a outro usuário para executar o arquivo /root/script.sh?
A ideia é executar o script como sudo -u user1 /root/script.sh
Devo dizer que nunca gostei de sudo (especialmente suas configurações). Simples velho su :
su -c 'command' - user
Executado a partir do root, ele não solicitará senha.
O usuário deve ter
permissão de execução para todo o caminho do diretório (aqui /root only)
executar permissão para o arquivo
permissão de leitura para o arquivo
Pode ser uma boa ideia deixar /root intocado e criar (ou usar) um diretório diferente para essa finalidade (por exemplo, /usr/local/bin ). Você pode tornar user1 o único usuário com permissão para executar o script, tornando-o o proprietário do arquivo ou deixando root como proprietário e grupo, defina as permissões de acesso simples ( chmod ) como 770 e adicione user1 com ACLs ( setfacl ).
Se o seu script estiver localizado no diretório raiz,
$ LC_ALL=C ls -ld /root
drwx------ 17 root root 4096 Mar 5 20:14 /root
user1 só pode ser raiz.
Sua entrada /etc/sudoers será parecida com
Cmnd_Alias SCRIPT=/root/script.sh
# user who is allowed executing /root/script.sh
%user ALL = (ALL) SCRIPT
Você normalmente editaria o arquivo com visudo
Você também não precisa colocar -u root em seu comando sudo .
O % significa o grupo de usuários. Quando você o deixa de fora, somente o usuário tem permissão para executar o comando. Se você quiser que um grupo de usuários o execute, então deixe como está.
Tags root privileges