Nota: estoy respondiendo 1. , ya que Ignacio ya respondió 2 ..
En la siguiente sudoentrada:
superadm ALL=(ALL) ALL
hay cuatro campos:
- El primero especifica un usuario al que se le otorgarán privilegios para algunos comandos.
- El segundo rara vez se usa. Es una lista de nombres de host en los que esta entrada de sudo será efectiva. En configuraciones estándar, solo un host es relevante (localhost), por lo que este campo generalmente se deja como
ALL.
- El cuarto campo es la lista de comandos
superadmque se podrán ejecutar con privilegios elevados. ALLsignifica todos los comandos. De lo contrario, use una lista de comandos separados por comas.
- El tercer campo (el escrito
(…)que es opcional) especifica qué usuarios (y grupos) el superadmusuario podrá ejecutar los siguientes comandos como. ALLsignifica que pueden elegir cualquier cosa (sin restricciones). Si este campo se omite, significa lo mismo que (root).
Ejemplo:
alan ALL = (root, bin : operator, system) /bin/ls, /bin/kill
Aquí, alanse permite ejecutar los dos comandos /bin/lsy /bin/killcomo root(o bin), posiblemente con privilegios adicionales operatoro systemgrupales.
Por alanlo tanto, puede optar por ejecutarse lscomo el binusuario y con operatorlos privilegios de grupo como este:
sudo -u bin -g operator /bin/ls /whatever/directory
Si -use omite, es lo mismo que -u root. Si -gse omite, no se otorgan privilegios de grupo adicionales.