Nota: estou respondendo a 1. , pois Ignacio já respondeu a 2 ..
Na sudoentrada a seguir :
superadm ALL=(ALL) ALL
existem quatro campos:
- O primeiro especifica um usuário que receberá privilégios para alguns comandos.
- O segundo é raramente usado. É uma lista de nomes de host nos quais essa entrada sudo será eficaz. Nas configurações padrão, apenas um host é relevante (host local); portanto, esse campo geralmente é deixado como
ALL.
- O quarto campo é a lista de comandos
superadmcapazes de executar com privilégios elevados. ALLsignifica todos os comandos. Caso contrário, use uma lista de comandos separados por vírgula.
- O terceiro campo (aquele
(…)que é opcional) especifica quais usuários (e grupos) o superadmusuário poderá executar os seguintes comandos como. ALLsignifica que eles podem escolher qualquer coisa (sem restrições). Se este campo for omitido, significa o mesmo que (root).
Exemplo:
alan ALL = (root, bin : operator, system) /bin/ls, /bin/kill
Aqui, alané permitido executar os dois comandos /bin/lse /bin/killcomo root(ou bin), possivelmente com privilégios adicionais operatorou de systemgrupos.
Portanto, alanpode optar por executar lscomo binusuário e com operatorprivilégios de grupo como este:
sudo -u bin -g operator /bin/ls /whatever/directory
Se -ufor omitido, é o mesmo que -u root. Se -gfor omitido, nenhum privilégio de grupo adicional será concedido.