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