One place for hosting & domains

      Sudoers

      Cómo editar el archivo sudoers


      [*]

      Introducción

      La separación de privilegios es uno de los paradigmas de seguridad fundamentales implementados en Linux y en los sistemas operativos tipo Unix. Los usuarios regulares operan con privilegios limitados para reducir el alcance de su influencia en su propio entorno, y no en el sistema operativo en general.

      Un usuario especial, llamado root, tiene privilegios de superusuario. Esta es una cuenta administrativa sin las restricciones que tienen los usuarios normales. Los usuarios pueden ejecutar comandos con privilegios de superusuario o root de varias maneras.

      En este artículo, explicaremos cómo obtener privilegios root de forma correcta y segura, con un enfoque especial en la edición del archivo /etc/sudoers.

      Completaremos estos pasos en un servidor de Ubuntu 20.04, pero la mayoría de las distribuciones de Linux modernas, como Debian y CentOS, deberían funcionar de manera similar.

      Esta guía asume que usted ya ha completado la configuración inicial del servidor que se mencionó aquí. Inicie sesión en su servidor como usuario no root regular y continúe como se indica abajo.

      Nota: Este tutorial profundiza sobre la escalada de privilegios y el archivo sudoers. Si solo desea añadir privilegios sudo a un usuario, consulte nuestros tutoriales de inicio rápido Cómo crear un nuevo usuario habilitado para sudo en Ubuntu y CentOS.

      Cómo obtener privilegios root

      Existen tres formas básicas de obtener privilegios root, que varían en su nivel de sofisticación.

      Inicio de sesión como root

      El método más sencillo y directo para obtener privilegios root es iniciar sesión directamente en su servidor como usuario root.

      Si está iniciando sesión en una máquina local (o usando una función de consola fuera de banda en un servidor virtual), introduzca root como su nombre de usuario en mensaje de inicio de sesión e ingrese la contraseña root cuando se le solicite.

      Si está iniciando sesión a través de SSH, especifique el usuario root antes de la dirección IP o el nombre de dominio en su cadena de conexión SSH:

      • ssh root@server_domain_or_ip

      Si no ha configurado las claves SSH para el usuario root, ingrese la contraseña root cuando se le solicite.

      Utilice su para convertirse en root

      Iniciar sesión directamente como root normalmente no suele ser recomendable, ya que es fácil comenzar a utilizar el sistema para tareas no administrativas, lo cual es peligroso.

      La siguiente forma de obtener privilegios de superusuario le permite convertirse en usuario root en cualquier momento, cuando lo necesite.

      Podemos hacerlo invocando el comando su, que significa “usuario sustituto”. Para obtener privilegios root, escriba lo siguiente:

      Se le solicitará la contraseña del usuario root, después de lo cual, iniciará una sesión de shell root.

      Cuando haya terminado las tareas que requieren privilegios root, vuelva a su shell normal escribiendo lo siguiente:

      Utilice sudo para ejecutar comandos como root

      La última forma de obtener privilegios root que explicaremos es con el comando sudo.

      El comando sudo permite ejecutar comandos irrepetibles con privilegios root, sin necesidad de generar una shell nueva. Se ejecuta así:

      A diferencia de su, el comando sudo solicitará la contraseña del usuario actual, y no la contraseña root.

      Debido a sus implicaciones de seguridad, no se concede acceso sudo a los usuarios de manera predeterminada, y debe configurarse antes de que funcione correctamente. Consulte nuestros tutoriales de inicio rápido Cómo crear un nuevo usuario habilitado para sudo en Ubuntu y CentOS para aprender a configurar un usuario habilitado para sudo.

      En la siguiente sección, explicaremos en mayor detalle cómo modificar la configuración sudo.

      ¿Qué es Visudo?

      El comando sudo se configura a través de un archivo ubicado en /etc/sudoers.

      Advertencia: Nunca edite este archivo con un editor de texto normal. ¡Siempre utilice el comando visudo en su lugar!

      Dado que una sintaxis inadecuada en el archivo /etc/sudoers puede generar un sistema fallido, en el que es imposible obtener privilegios elevados, es importante utilizar el comando visudo para editar el archivo.

      El comando visudo abre un editor de texto igual al normal, pero valida la sintaxis del archivo al guardarlo. Esto evita que los errores de configuración bloqueen las operaciones sudo, que pueden ser su única forma de obtener privilegios root.

      Tradicionalmente, visudo abre el archivo /etc/sudoers con el editor de texto vi. Sin embargo, Ubuntu, ha configurado visudo para utilizar el editor de texto nano en su lugar.

      Si desea cambiarlo de nuevo a vi, emita el siguiente comando:

      • sudo update-alternatives --config editor

      Output

      There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press <enter> to keep the current choice[*], or type selection number:

      Seleccione el número que coincida con la elección que desea realizar.

      En CentOS, puede cambiar este valor añadiendo la siguiente línea a su ~/.bashrc:

      • export EDITOR=`which name_of_editor`

      Obtenga el archivo para implementar los cambios:

      Después de configurar visudo, ejecute el comando para acceder al archivo /etc/sudoers:

      Cómo modificar el archivo sudoers

      El archivo /etc/sudoers aparecerá en su editor de texto seleccionado.

      He copiado y pegado el archivo de Ubuntu 18.04, con los comentarios eliminados. El archivo /etc/sudoers de CentOS tiene muchas más líneas, algunas de las que no explicaremos en esta guía.

      /etc/sudoers

      Defaults        env_reset
      Defaults        mail_badpass
      Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
      
      root    ALL=(ALL:ALL) ALL
      
      %admin ALL=(ALL) ALL
      %sudo   ALL=(ALL:ALL) ALL
      
      #includedir /etc/sudoers.d
      

      Veamos qué hacen estas líneas.

      Líneas predeterminadas

      La primera línea, “Defaults env_reset”, reinicia el entorno de la terminal para eliminar cualquier variable de usuario. Esta es una medida de seguridad que se utiliza para eliminar las variables de entorno potencialmente dañinas de la sesión sudo.

      La segunda línea, Defaults mail_badpass, indica al sistema que envíe notificaciones por correo de intentos de contraseñas erróneas de sudo al usuario mailto configurado. De manera predeterminada, esta es la cuenta root.

      La tercera línea, que comienza con “Defaults secure_path=…”, especifica el PATH (las ubicaciones del sistema de archivos en los que el sistema operativo buscará aplicaciones) que se utilizarán para las operaciones sudo. Esto evita el uso de rutas de usuario que puedan ser perjudiciales.

      Líneas de privilegio de usuario

      La cuarta línea, que dicta los privilegios sudo del usuario root, es diferente de las líneas anteriores. Veamos qué significan los diferentes campos:

      • root ALL=(ALL:ALL) ALL El primer campo indica el nombre de usuario al que se aplicará la regla (root).

      • root ALL=(ALL:ALL) ALL El primer “ALL” indica que esta regla se aplica a todos los hosts.

      • root ALL=(ALL:ALL) ALL Este “ALL” indica que el usuario root puede ejecutar comandos como todos los usuarios.

      • root ALL=(ALL:ALL) ALL Este “ALL” indica que el usuario root puede ejecutar comandos como todos los grupos.

      • root ALL=(ALL:ALL) ALL El último “ALL” indica que estas reglas se aplican a todos los comandos.

      Esto significa que nuestro usuario root puede ejecutar cualquier comando usando sudo, siempre que proporcione su contraseña.

      Líneas de privilegio de grupo

      Las siguientes dos líneas son similares a las líneas de privilegios de usuario, pero especifican reglas sudo para los grupos.

      Los nombres que comienzan con un % indican los nombres de grupo.

      Aquí, vemos que el grupo admin puede ejecutar cualquier comando como cualquier usuario en cualquier host. De manera similar, el grupo sudo tiene los mismos privilegios, pero también puede ejecutarse como cualquier grupo.

      Línea /etc/sudoers.d incluida

      La última línea puede parecer un comentario a primera vista:

      /etc/sudoers

      . . .
      
      #includedir /etc/sudoers.d
      

      **Comienza con un #, que normalmente indica un comentario. Sin embargo, esta línea en realidad indica que los archivos dentro del directorio /etc/sudoers.d también se consultarán y aplicarán.

      Los archivos dentro de ese directorio siguen las mismas reglas que el archivo /etc/sudoers. Cualquier archivo que no termine en ~ y que no tenga un . se leerá y anexará a la configuración sudo.

      Esto está pensado principalmente para que las aplicaciones alteren los privilegios sudo después de instalarse. Poner todas las reglas asociadas dentro de un solo archivo en el directorio /etc/sudoers.d puede facilitar la tarea de ver qué privilegios están asociados con qué cuentas y revertir las credenciales fácilmente sin tener que manipular el archivo /etc/sudoers directamente.

      Al igual que con el archivo /etc/sudoers, siempre debe editar los archivos dentro del directorio /etc/sudoers.d con visudo. La sintaxis para editar estos archivos sería la siguiente:

      • sudo visudo -f /etc/sudoers.d/file_to_edit

      Cómo conceder privilegios sudo a un usuario

      La operación más común que los usuarios desean lograr al administrar los permisos sudo es conceder a un nuevo usuario acceso sudo general. Esto resulta útil si desea dar a una cuenta acceso administrativo completo al sistema.

      La forma más sencilla de hacerlo en un sistema configurado con un grupo de administración de uso general, como el sistema Ubuntu en esta guía, es en realidad añadir el usuario en cuestión a ese grupo.

      Por ejemplo, en Ubuntu 20.04, el grupo sudo tiene privilegios completos de administrador. Podemos conceder a un usuario estos mismos privilegios añadiéndolo al grupo de la siguiente manera:

      • sudo usermod -aG sudo username

      También se puede usar el comando gpasswd:

      • sudo gpasswd -a username sudo

      Ambos lograrán lo mismo.

      En CentOS, normalmente es el grupo wheel, en lugar del grupo sudo:

      • sudo usermod -aG wheel username

      O usando gpasswd:

      • sudo gpasswd -a username wheel

      En CentOS, si añadir el usuario al grupo no funciona inmediatamente, es posible que tenga que editar el archivo /etc/sudoers para eliminar los comentarios del nombre del grupo:

      /etc/sudoers

      . . .
      %wheel ALL=(ALL) ALL
      . . .
      

      Cómo configurar reglas personalizadas

      Ahora que nos familiarizamos con la sintaxis general del archivo, crearemos algunas reglas nuevas.

      Cómo crear alias

      El archivo sudoers puede organizarse más fácilmente agrupando las cosas con varios tipos de “alias”.

      Por ejemplo, podemos crear tres grupos diferentes de usuarios, con miembros superpuestos:

      /etc/sudoers

      . . .
      User_Alias      GROUPONE = abby, brent, carl
      User_Alias      GROUPTWO = brent, doris, eric,
      User_Alias      GROUPTHREE = doris, felicia, grant
      . . .
      

      Los nombres de los grupos deben comenzar con una letra mayúscula. Luego, podemos permitir que los miembros de GROUPTWO actualicen la base de datos apt creando una regla como esta:

      /etc/sudoers

      . . .
      GROUPTWO    ALL = /usr/bin/apt-get update
      . . .
      

      Si no especificamos un usuario/grupo para ejecutarse, como en el caso anterior, sudo será el usuario root de manera predeterminada.

      Podemos permitir que los miembros de GROUPTHREE apaguen y reinicien la máquina creando un “alias de comando” y usando eso en una regla para GROUPTHREE:

      /etc/sudoers

      . . .
      Cmnd_Alias      POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
      GROUPTHREE  ALL = POWER
      . . .
      

      Creamos un alias de comando llamado POWER que contiene comandos para apagar y reiniciar la máquina. Luego, permitimos que los miembros de GROUPTHREE ejecuten estos comandos.

      También podemos crear los alias “Ejecutar como”, que pueden sustituir la parte de la regla que especifica el usuario con el que se ejecuta el siguiente comando:

      /etc/sudoers

      . . .
      Runas_Alias     WEB = www-data, apache
      GROUPONE    ALL = (WEB) ALL
      . . .
      

      Eso permitirá que cualquier miembro del GROUPONE ejecute comandos como usuario www-data o como usuario apache.

      Solo tenga en cuenta que las reglas posteriores anularán las reglas anteriores cuando haya un conflicto entre ambas.

      Cómo bloquear reglas

      Existen varias formas en las que se puede obtener más control sobre cómo sudo reacciona a una llamada.

      El comando updatedb asociado con el paquete mlocate es relativamente inofensivo en un sistema de un solo usuario. Si queremos que los usuarios lo ejecuten con privilegios root sin necesidad de escribir una contraseña, podemos crear una regla como la siguiente:

      /etc/sudoers

      . . .
      GROUPONE    ALL = NOPASSWD: /usr/bin/updatedb
      . . .
      

      NOPASSWD es un “etiqueta” que significa que no se solicitará ninguna contraseña. Tiene un comando compañero llamado PASSWD, que es el comportamiento predeterminado. Una etiqueta es importante para el resto de la regla a menos que su etiqueta “gemela” la anule más adelante en la línea.

      Por ejemplo, podemos tener una línea como la siguiente:

      /etc/sudoers

      . . .
      GROUPTWO    ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
      . . .
      

      Otra etiqueta útil es NOEXEC, que puede usarse para evitar algunos comportamientos peligrosos en ciertos programas.

      Por ejemplo, algunos programas, como less, pueden generar otros comandos escribiendo esto desde su interfaz:

      !command_to_run
      

      Esto básicamente ejecuta cualquier comando que el usuario proporcione con los mismos permisos con los que se está ejecutando less, lo que puede ser bastante peligroso.

      Para restringir esto, podríamos usar una línea como la siguiente:

      /etc/sudoers

      . . .
      username  ALL = NOEXEC: /usr/bin/less
      . . .
      

      Otra información

      Existen algunos otros datos que pueden ser útiles cuando se trata de sudo.

      Si especificó un usuario o un grupo para “ejecutar como” en el archivo de configuración, puede ejecutar comandos como esos usuarios usando los indicadores -u y -g, respectivamente:

      • sudo -u run_as_user command
      • sudo -g run_as_group command

      Por conveniencia y de manera predeterminada, sudo guardará sus detalles de autenticación durante un tiempo determinado en un solo terminal. Esto significa que no tendrá que escribir su contraseña de nuevo hasta que se agote el tiempo del temporizador.

      Para cuestiones de seguridad, si desea eliminar dicho temporizador cuando haya terminado de ejecutar comandos administrativos, puede ejecutar:

      Si, por otro lado, desea “imprimir” el comando sudo para que no se le solicite más adelante o para renovar su concesión sudo, siempre puede escribir lo siguiente:

      Se le solicitará su contraseña, que se almacenará en caché para usos de sudo posteriores hasta que el plazo de sudo expire.

      Si simplemente se pregunta qué tipo de privilegios están definidos para su nombre de usuario, puede escribir lo siguiente:

      Esto generará una lista de todas las reglas en el archivo /etc/sudoers que se aplican a su usuario. Eso le dará una buena idea de lo que se podrá hacer o no con sudo como cualquier usuario.

      Habrá muchas veces en las que se ejecutará un comando y fallará porque se olvidó precederlo con sudo. Para evitar tener que volver a escribir el comando, puede aprovechar una funcionalidad de bash que significa “repetir el último comando”:

      El doble signo de exclamación repetirá el último comando. Lo precedemos con sudo para cambiar rápidamente de un comando sin privilegios a un comando con privilegios.

      Para divertirse, puede añadir la siguiente línea a su archivo /etc/sudoers con visudo:

      /etc/sudoers

      . . .
      Defaults    insults
      . . .
      

      Esto hará que sudo devuelva un insulto tonto cuando un usuario escriba una contraseña incorrecta para sudo. Podemos usar sudo -k para eliminar la contraseña anterior sudo del caché para probarla:

      Output

      [sudo] password for demo: # enter an incorrect password here to see the results Your mind just hasn't been the same since the electro-shock, has it? [sudo] password for demo: My mind is going. I can feel it.

      Conclusión

      Ahora, debería tener una compresión básica sobre cómo leer y modificar el archivo sudoers, y una comprensión de los diferentes métodos que puede usar para obtener privilegios root.

      Recuerde que los privilegios de superusuario no se dan a los usuarios regulares por un motivo. Es fundamental que entienda qué hace cada comando que ejecuta con privilegios root. No tome esa responsabilidad a la ligera. Aprenda la mejor forma de utilizar estas herramientas para su caso de uso, y bloquee cualquier funcionalidad que no necesite.

      [*]
      [*]Source link

      Comment modifier le fichier Sudoers


      [*]

      Introduction

      La séparation de privilèges est l’un des paradigmes fondamentaux de la sécurité intégrée dans les systèmes d’exploitation de type Linux et Unix. Les utilisateurs réguliers utilisent des privilèges limités afin de réduire la portée de leur influence à leur propre environnement et non pas au système d’exploitation plus large.

      Un utilisateur spécial, appelé root, dispose de privilèges de super-utilisateur. Il s’agit d’un compte administratif qui n’intègre pas les restrictions auxquelles sont soumis les utilisateurs normaux. Les utilisateurs peuvent exécuter des commandes avec des privilèges de super-utilisateur ou root de plusieurs manières différentes.

      Tout au long de cet article, nous allons voir comment obtenir des privilèges root correctement et en toute sécurité, en mettant tout particulièrement l’accent sur la modification du fichier /etc/sudoers.

      Nous procéderons à ces étapes sur un serveur Ubuntu 20.04. Cependant, notez que la plupart des distributions Linux modernes comme Debian et CentOS devraient fonctionner de manière similaire.

      Ce guide suppose que vous avez déjà procédé à la configuration initiale du serveur mentionnée ici. Connectez-vous à votre serveur en tant que non-root user et continuez de la manière indiquée ci-dessous.

      Remarque : ce tutoriel traite de l’escalade des privilèges et du fichier sudoer plus en détails. Pour ajouter des privilèges sudo à un utilisateur, consultez nos tutoriels de démarrage rapide Comment créer un nouvel utilisateur actif Sudo pour Ubuntu et CentOS.

      Vous disposez de trois méthodes de base pour obtenir des privilèges root, qui diffèrent en termes de sophistication.

      Se connecter en tant que root

      Pour obtenir des privilèges root, la méthode la plus directe et la plus simple consiste à se connecter directement à votre serveur en tant que le root user.

      Si vous vous connectez à une machine locale (ou en utilisant une fonction de console hors-bande sur un serveur virtuel), lorsque vous serez invité à vous connecter, saisissez root pour votre nom d’utilisateur et le mot de passe root.

      Si vous vous connectez via SSH, spécifiez le root user avant l’adresse IP ou le nom de domaine dans votre chaîne de connexion SSH :

      • ssh root@server_domain_or_ip

      Si vous n’avez pas configuré de clés SSH pour l’utilisateur root, saisissez le mot de passe root lorsque vous y serez invité.

      Utiliser su pour devenir root

      En règle générale, il n’est pas recommandé de vous connecter directement en root. En effet, même si cela vous permet de commencer à utiliser le système facilement pour effectuer des tâches non administratives, cette pratique reste dangereuse.

      La prochaine méthode que nous allons vous présenter pour obtenir des privilèges de super-utilisateur vous permet de devenir l’utilisateur root à tout moment, à chaque fois que vous en aurez besoin.

      Pour cela, vous pouvez invoquer la commande su, qui signifie « utilisateur de remplacement ». Pour obtenir des privilèges root, tapez :

      Vous serez invité à saisir le mot de passe du root user, quite à quoi vous serez dirigé vers une session de shell root.

      Une fois que vous en aurez terminé avec les tâches qui nécessitent des privilèges root, retournez à votre shell normal en saisissant :

      Utiliser sudo pour exécuter des commandes en tant que root

      La dernière méthode qui permet d'obtenir des privilèges root que nous allons aborder est celle qui utilise la commande sudo.

      La commande sudo vous permet d'exécuter des commandes uniques avec des privilèges root, sans avoir à générer un nouveau shell. Elle s'exécute de la manière suivante :

      Contrairement à su, la commande sudo vous demandera de saisir le mot de passe de l'utilisateur actuel, pas le mot de passe root.

      En raison de ses implications en termes de sécurité, les utilisateurs ne se voient pas attribuer l'accès sudo par défaut qui doit être préalablement configuré avant de pouvoir fonctionner correctement. Consultez nos tutoriels de démarrage rapide Comment créer un nouvel utilisateur Sudo dans Ubuntu et CentOS pour en apprendre davantage sur la configuration d'un utilisateur sudo.

      Dans la section suivante, nous allons voir comment modifier la configuration sudo plus en détail.

      Qu'est-ce que Visudo ?

      La configuration de la commande sudo se fait par le biais d'un fichier situé dans /etc/sudoers.

      Avertissement : ne modifiez jamais ce fichier en utilisant un éditeur de texte normal ! À la place, utilisez toujours la commande visudo !

      Étant donné que l'utilisation d'une mauvaise syntaxe dans le fichier /etc/sudoers vous laissera créer un système défaillant dans lequel il sera impossible d'obtenir des privilèges élevés, il est important d'utiliser la commande visudo pour modifier le fichier.

      La commande visudo ouvre un éditeur de texte normalement, mais valide la syntaxe du fichier au moment de la sauvegarde. Cela empêche les erreurs de configuration de venir bloquer les opérations sudo, qui est votre seule façon d'obtenir des privilèges root.

      Traditionnellement, visudo ouvre le fichier /etc/sudoers avec l'éditeur de texte vi. Cependant, en Ubuntu, visudo est configuré pour utiliser l'éditeur de texte nano à la place.

      Si vous souhaitez le reconfigurer sur vi, vous devez lancer la commande suivante :

      • sudo update-alternatives --config editor

      Output

      There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press <enter> to keep the current choice[*], or type selection number:

      Sélectionnez le numéro qui correspond au choix que vous souhaitez appliquer.

      Sur CentOS, vous pouvez modifier cette valeur en ajoutant la ligne suivante à votre ~/.bashrc :

      • export EDITOR=`which name_of_editor`

      Créez le fichier pour implémenter les changements :

      Une fois que vous aurez configuré visudo, exécutez la commande pour accéder au fichier /etc/sudoers :

      Nous allons vous présenter le fichier /etc/sudoers dans l'éditeur de texte que vous avez sélectionné.

      J'ai copié et collé le fichier à partir d'Ubuntu 18.04 en supprimant les commentaires. Le fichier /etc/sudoers de CentOS dispose de bien plus de lignes, dont certaines ne seront pas abordées dans ce guide.

      /etc/sudoers

      Defaults        env_reset
      Defaults        mail_badpass
      Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
      
      root    ALL=(ALL:ALL) ALL
      
      %admin ALL=(ALL) ALL
      %sudo   ALL=(ALL:ALL) ALL
      
      #includedir /etc/sudoers.d
      

      Voyons ce que font ces lignes.

      Lignes par défaut

      La première ligne, « Defaults env_reset », réinitialise l'environnement du terminal afin de supprimer toute variable d'utilisateur. Il s'agit d'une mesure de sécurité utilisée pour effacer les variables d'environnement potentiellement néfastes de la session sudo.

      La deuxième ligne, Defaults mail_badpass, indique au système d'envoyer des notifications par mail des tentatives de saisie erronée de mot de passe sudo à l'utilisateur mailto configuré. Il s'agit du compte root par défaut.

      La troisième ligne, qui commence par « Defaults secure_path=… », spécifie le PATH (les endroits du système de fichiers dans lesquels le système d'exploitation recherchera des applications) qui sera utilisé pour les opérations sudo. Cela empêche toute utilisation de chemins utilisateurs susceptibles d'être préjudiciables.

      Lignes de privilèges des utilisateurs

      La quatrième ligne, qui dicte les privilèges sudo du root user, est différente des lignes précédentes. Examinons à quoi correspondent les différents champs :

      • root ALL=(ALL:ALL) ALL Le premier champ indique le nom d'utilisateur que la règle appliquera à (root).

      • root ALL=(ALL:ALL) ALL Le premier « ALL » indique que cette règle s'applique à tous les hôtes.

      • root ALL=(ALL:ALL) ALL Ce « ALL » indique que le root user peut exécuter des commandes en tant que tous les utilisateurs.

      • root ALL=(ALL:ALL) ALL Ce « ALL » indique que root user peut exécuter des commandes en tant que tous les groupes.

      • root ALL=(ALL:ALL) ALL Le dernier « ALL » indique que ces règles s'appliquent à toutes les commandes.

      Cela signifie que notre root user peut exécuter toute commande en utilisant sudo, à condition qu'il fournisse son mot de passe.

      Lignes de privilèges de groupes

      Les deux lignes suivantes sont similaires celles des privilèges de l'utilisateur, mais les règles sudo spécifiées s'appliquent aux groupes.

      Les noms commençant par un % indiquent des noms de groupes.

      Ici, nous voyons que le groupe admin peut exécuter toute commande en tant que n'importe quel utilisateur, quel que soit l'hôte. De la même façon, le groupe sudo dispose des mêmes privilèges, mais peut également s'exécuter en tant que tout groupe également.

      Ligne /etc/sudoers.d incluse

      Au premier regard, la dernière ligne peut ressembler à un commentaire :

      /etc/sudoers

      . . .
      
      #includedir /etc/sudoers.d
      

      Elle commence par un #, ce qui indique généralement un commentaire. Cependant, en réalité, cette ligne indique que les fichiers dans le répertoire /etc/sudoers.d seront également sourcés et appliqués.

      Les fichiers qui se trouvent dans ce répertoire suivent les mêmes règles que le fichier /etc/sudoers en lui-même. Tout fichier qui ne finit pas par ~ et qui ne contient pas un . sera lu et annexé à la configuration de sudo.

      Cela est principalement destiné aux applications qui modifient les privilèges sudo lors de l'installation. En mettant toutes les règles associées dans un seul fichier du répertoire /etc/sudoers.d, vous pouvez facilement voir quels privilèges sont associés à quels comptes et inverser tout aussi aisément les identifiants sans avoir à tenter de manipuler le fichier /etc/sudoers.d directement.

      Comme pour le fichier /etc/sudoers en lui-même, vous devriez toujours modifier les fichiers du répertoire /etc/sudoers.d avec visudo. La syntaxe à utiliser pour modifier ces fichiers serait la suivante :

      • sudo visudo -f /etc/sudoers.d/file_to_edit

      Le plus souvent, dans le cadre de la gestion des autorisations sudo, les utilisateurs souhaitent accorder un accès sudo général à un nouvel utilisateur. Cette pratique est pratique pour octroyer un accès administratif complet au système.

      Sur un système configuré avec un groupe d'administration générale comme le système Ubuntu utilisé dans ce guide, le plus simple consiste à ajouter l'utilisateur en question à ce groupe.

      Par exemple, sur Ubuntu 20.04, le groupe sudo dispose de privilèges administratifs complets. Nous pouvons accorder ces mêmes privilèges à un utilisateur en les ajoutant au groupe de la manière suivante :

      • sudo usermod -aG sudo username

      Vous pouvez également utiliser la commande gpasswd :

      • sudo gpasswd -a username sudo

      Les deux méthodes vous donneront les mêmes résultats.

      En CentOS, on utilise généralement le groupe wheel au lieu du groupe sudo :

      • sudo usermod -aG wheel username

      Ou, on utilise gpasswd :

      • sudo gpasswd -a username wheel

      Sur CentOS, si vous n'arrivez pas à ajouter un utilisateur au groupe immédiatement, vous aurez éventuellement à modifier le fichier /etc/sudoers pour retirer les commentaires du nom du groupe :

      /etc/sudoers

      . . .
      %wheel ALL=(ALL) ALL
      . . .
      

      Maintenant que nous nous sommes familiarisés avec la syntaxe générale du fichier, créons quelques nouvelles règles.

      Le fichier sudoers peut être organisé plus efficacement en regroupant des éléments avec différents types de « alias ».

      Par exemple, nous pouvons créer trois groupes différents d'utilisateurs, en chevauchant l'appartenance :

      /etc/sudoers

      . . .
      User_Alias      GROUPONE = abby, brent, carl
      User_Alias      GROUPTWO = brent, doris, eric,
      User_Alias      GROUPTHREE = doris, felicia, grant
      . . .
      

      Les noms de groupes doivent commencer par une lettre majuscule. Nous pouvons ensuite autoriser les membres de GROUPTWO à mettre à jour la base de données apt en créant une règle similaire à celle-ci :

      /etc/sudoers

      . . .
      GROUPTWO    ALL = /usr/bin/apt-get update
      . . .
      

      Si nous ne spécifions pas l'utilisateur/groupe par lequel la commande est exécutée, sudo désigne le root user par défaut.

      Nous pouvons autoriser les membres de GROUPTHREE à arrêter et redémarrer la machine en créant un « alias de commande » et en l'utilisant dans une règle pour GROUPTHREE :

      /etc/sudoers

      . . .
      Cmnd_Alias      POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
      GROUPTHREE  ALL = POWER
      . . .
      

      Nous créons un alias de commandes appelé POWER, qui intègre des commandes qui permettent d'arrêter et de redémarrer la machine. Nous allons ensuite autoriser les membres de GROUPTHREE à exécuter ces commandes.

      Nous pouvons également créer des alias « Run as », qui peuvent remplacer la partie de la règle qui spécifie l'utilisateur par lequel la commande est exécutée :

      /etc/sudoers

      . . .
      Runas_Alias     WEB = www-data, apache
      GROUPONE    ALL = (WEB) ALL
      . . .
      

      Cela permettra à toute personne membre de GROUPONE d'exécuter des commandes en tant que l'utilisateur www-data ou apache user.

      Gardez juste à l'esprit, qu'en cas de conflit, les règles les plus récentes remplaceront les anciennes.

      Il existe plusieurs manières d'avoir un meilleur contrôle sur la façon dont sudo réagit à un appel.

      La commande updatedb associée au package mlocate est relativement sans danger sur un système à utilisateur unique. Si nous souhaitons autoriser les utilisateurs à l'exécuter avec des privilèges root sans avoir à saisir de mot de passe, nous pouvons créer une règle comme suit:

      /etc/sudoers

      . . .
      GROUPONE    ALL = NOPASSWD: /usr/bin/updatedb
      . . .
      

      NOPASSWD est une « balise » qui signifie qu'aucun mot de passe ne sera requis. Elle est accompagnée d'une commande appelée PASSWD qui indique le comportement par défaut. Une balise est pertinente pour le reste de la règle à moins qu'elle ne soit écrasée par une balise « jumelle » plus loin dans la ligne.

      Par exemple, nous pouvons avoir une ligne comme celle-ci :

      /etc/sudoers

      . . .
      GROUPTWO    ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
      . . .
      

      La balise NOEXEC est également une balise utile qui vous permettra d'empêcher certains comportements dangereux dans certains programmes.

      Par exemple, certains programmes, comme less, peuvent générer d'autres commandes si vous saisissez ce qui suit à partir de leur interface :

      !command_to_run
      

      Pour résumer, cela permet d'exécuter toute commande instruite par l'utilisateur avec les mêmes autorisations sous lesquelles less s'exécute, ce qui peut être assez dangereux.

      Pour restreindre ce phénomène, nous pouvons utiliser une ligne comme la suivante :

      /etc/sudoers

      . . .
      username  ALL = NOEXEC: /usr/bin/less
      . . .
      

      Informations diverses

      Il existe quelques autres éléments d'information qui pourront vous être d'une grande utilité lorsque vous utilisez sudo.

      Si, dans le fichier de configuration, vous avez configuré un utilisateur ou un groupe sur « run as », vous pouvez exécuter les commandes en tant que ces utilisateurs en utilisant respectivement les balises -u et -g :

      • sudo -u run_as_user command
      • sudo -g run_as_group command

      Pour plus de commodité, sudo enregistrera par défaut vos détails d'authentification pendant un certain temps sur un terminal. Cela signifie que vous n'aurez plus à saisir votre mot de passe à chaque fois jusqu'à expiration du minuteur.

      Pour des raisons de sécurité, si, une fois que vous aurez terminé d'exécuter des commandes administratives, vous souhaitez supprimer ce minuteur, vous pouvez exécuter la commande suivante :

      Si, en revanche, vous souhaitez « primer » la commande sudo afin de ne plus recevoir d'invitation par la suite ou de renouveler votre location sudo, vous pouvez toujours saisir la commande suivante :

      Vous serez invité à saisir votre mot de passe, invite qui sera mise en cache pour vos prochaines utilisations sudo jusqu'à expiration du délai de sudo.

      Si vous vous demandez tout simplement quel type de privilèges ont été définis pour votre nom d'utilisateur, vous pouvez saisir :

      Vous obtiendrez une liste de toutes les règles dans le fichier /etc/sudoers qui s'appliquent à votre utilisateur. Vous aurez ainsi une bonne idée de ce que vous serez autorisé à faire ou pas avec sudo en tant que tout utilisateur.

      Il vous arrivera souvent d'exécuter une commande qui ne fonctionnera pas, car vous aurez oublié de la préfacer avec sudo. Pour ne pas avoir à re-saisir la commande, vous pouvez tirer profit de la fonctionnalité de bash qui signifie « répéter la dernière commande » :

      Le double point d'exclamation répétera la dernière commande. Nous l'avons précédé de sudo afin de rapidement changer la commande sans privilège en commande avec privilège.

      Pour le plaisir, vous pouvez ajouter la ligne suivante à votre fichier /etc/sudoers avec visudo :

      /etc/sudoers

      . . .
      Defaults    insults
      . . .
      

      sudo renverra alors une insulte stupide à l'utilisateur si le mot de passe sudo qu'il a saisi est erroné. Nous pouvons utiliser sudo -k pour effacer l'ancien mot de passe en cache sudo pour l'essayer :

      Output

      [sudo] password for demo: # enter an incorrect password here to see the results Your mind just hasn't been the same since the electro-shock, has it? [sudo] password for demo: My mind is going. I can feel it.

      Conclusion

      Vous devriez maintenant avoir une compréhension de base sur la façon de lire et de modifier le fichier sudoers et des différentes méthodes disponibles pour obtenir des privilèges root.

      N'oubliez pas qu'il existe une raison pour laquelle les privilèges de super-utilisateurs ne sont pas octroyés aux utilisateurs réguliers. Il est essentiel que vous ayez une bonne compréhension de ce que fait chacune des actions que vous exécutez avec des privilèges root. Ne prenez pas cette responsabilité à la légère. Apprenez à utiliser ces outils pour votre cas d'utilisation et à verrouiller toute fonctionnalité inutile.

      [*]
      [*]Source link

      Como editar o arquivo sudoers


      [*]

      Introdução

      A separação de privilégios é um dos paradigmas de segurança fundamentais implementados em sistemas operacionais do tipo Linux e Unix. Os usuários regulares operam com privilégios limitados para reduzir o escopo de sua influência em seu próprio ambiente, e não no sistema operacional como um todo.

      Um usuário especial, chamado root, possui privilégios de superusuário. Essa é uma conta administrativa sem as restrições presentes em usuários normais. Os usuários podem executar comandos com privilégios de superusuário ou root de várias maneiras diferentes.

      Neste artigo, vamos discutir como obter privilégios de root de uma maneira correta e segura, dando um foco especial na edição do arquivo /etc/sudoers.

      Vamos completar esses passos em um servidor Ubuntu 20.04, mas a maioria das distribuições do Linux modernas, como o Debian e o CentOS, devem operar de maneira similar.

      Este guia considera que você já completou a configuração inicial de servidor discutida aqui. Faça login no seu servidor como um usuário não raiz e continue abaixo.

      Nota: este tutorial aborda com profundidade a escalação de privilégios e o arquivo sudoers. Se quiser apenas adicionar privilégios sudo a um usuário, verifique nossos tutoriais de início rápido Como criar um novo usuário habilitado para sudo para o Ubuntu e CentOS.

      Como obter privilégios de root

      Há três maneiras básicas de obter privilégios de root, que variam em seu nível de sofisticação.

      Faça login como root

      O método mais simples e direto de se obter privilégios de root é fazendo login diretamente em seu servidor como um usuário root.

      Se você estiver fazendo login em uma máquina local (ou usando uma característica de acesso de console fora de banda em um servidor virtual), digite root como seu nome de usuário no prompt de login e digite a senha root solicitada.

      Caso esteja fazendo login via SSH, especifique o usuário root antes do endereço IP ou nome de domínio em sua string de conexão via protocolo SSH:

      • ssh root@server_domain_or_ip

      Se você não tiver configurado chaves SSH para o usuário root, digite a senha de root solicitada.

      Use su para tornar-se root

      Fazer login diretamente como root não é recomendado, pois é fácil começar a usar o sistema para tarefas não administrativas, o que é uma atividade perigosa.

      A próxima maneira de obter privilégios de superusuário permite que você se torne um usuário root a qualquer momento, conforme necessário.

      Podemos fazer isso invocando o comando su, que significa “substituir usuário”. Para obter privilégios de root, digite:

      A senha do usuário root será solicitada e, depois disso, você será levado a uma sessão de shell root.

      Quando terminar as tarefas que necessitam de privilégios de root, retorne ao seu shell padrão digitando:

      Use o sudo para executar comandos como root

      A maneira final de obter privilégios de root que vamos discutir é com o comando sudo.

      O comando sudo permite que sejam executados comandos únicos com privilégios de root, sem a necessidade de gerar um novo shell. Ele é executado desta forma:

      Ao contrário do su, o comando sudo solicitará a senha do usuário atual, não a senha do root.

      Devido às suas implicações de segurança, o acesso sudo não é concedido a usuários por padrão e deve ser configurado antes de funcionar corretamente. Verifique nossos tutoriais de início rápido Como criar um novo usuário habilitado para sudo para o Ubuntu e CentOS para aprender como configurar um usuário habilitado para sudo.

      Na seção seguinte, vamos discutir como modificar a configuração do sudo mais detalhadamente.

      O que é o Visudo?

      O comando sudo é configurado através de um arquivo localizado em /etc/sudoers.

      Aviso: nunca edite este arquivo com um editor de texto normal! Use sempre o comando visudo em vez disso!

      Considerando que uma sintaxe inadequada no arquivo /etc/sudoers pode tornar o seu sistema defeituoso, onde é impossível obter privilégios elevados, é importante usar o comando visudo para editar o arquivo.

      O comando visudo abre um editor de texto aparentemente normal, com a diferença que ele valida a sintaxe do arquivo no momento de salvar. Isso impede que erros de configuração bloqueiem as operações do sudo, que pode ser a única maneira disponível para obter privilégios de root.

      Tradicionalmente, o visudo abre o arquivo /etc/sudoers com o editor de texto vi. No entanto, o Ubuntu configurou o visudo para usar o editor de texto nano ao invés disso.

      Se quiser alterá-lo de volta para o vi, emita o seguinte comando:

      • sudo update-alternatives --config editor

      Output

      There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press <enter> to keep the current choice[*], or type selection number:

      Selecione o número que corresponde à escolha que deseja fazer.

      No CentOS, é possível alterar esse valor adicionando a seguinte linha ao seu ~/.bashrc:

      • export EDITOR=`which name_of_editor`

      Habilite o arquivo para implementar as alterações:

      Após ter configurado o visudo, execute o comando para acessar o arquivo /etc/sudoers:

      Como modificar o arquivo sudoers

      O arquivo /etc/sudoers será apresentado no seu editor de texto selecionado.

      O arquivo foi copiado e colado do Ubuntu 18.04, com comentários removidos. O arquivo /etc/sudoers do CentOS possui muitas linhas a mais, algumas das quais não vamos discutir neste guia.

      /etc/sudoers

      Defaults        env_reset
      Defaults        mail_badpass
      Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
      
      root    ALL=(ALL:ALL) ALL
      
      %admin ALL=(ALL) ALL
      %sudo   ALL=(ALL:ALL) ALL
      
      #includedir /etc/sudoers.d
      

      Vamos dar uma olhada no que essas linhas fazem.

      Linhas padrão

      A primeira linha, “Defaults env_reset”, reinicia o ambiente de terminal para remover qualquer variável de usuário. Essa é uma medida de segurança usada para limpar variáveis de ambiente potencialmente nocivas na sessão sudo.

      A segunda linha, Defaults mail_badpass, diz ao sistema para enviar e-mails ao usuário mailto configurado informando sobre tentativas de senha incorretas do sudo. Por padrão, ela é a conta root.

      A terceira linha, que começa com “Defaults secure_path=…”, especifica o PATH (os lugares no sistema de arquivos em que o sistema operacional irá procurar aplicativos) que será usado para as operações sudo. Isso impede o uso de caminhos de usuário que possam ser nocivos.

      Linhas de privilégio de usuário

      A quarta linha, que dita os privilégios sudo do usuário root, é diferente das linhas anteriores. Vamos dar uma olhada no que os diferentes campos significam:

      • root ALL=(ALL:ALL) ALL O primeiro campo indica o nome do usuário ao qual a regra se aplicará (root).

      • root ALL=(ALL:ALL) ALL O primeiro “ALL” indica que essa regra se aplica a todos os hosts.

      • root ALL=(ALL:ALL) ALL Esse “ALL” indica que o usuário root pode executar comandos como todos os usuários.

      • root ALL=(ALL:ALL) ALL Esse “ALL” indica que o usuário root pode executar comandos como todos os grupos.

      • root ALL=(ALL:ALL) ALL O último “ALL” indica que essas regras se aplicam a todos os comandos.

      Isso significa que o usuário root pode executar qualquer comando usando o sudo, desde que forneçam sua senha.

      Linhas de privilégio de grupo

      As duas linhas seguintes são semelhantes às linhas de privilégio de usuário, mas especificam as regras sudo para grupos.

      Os nomes que começam com um % indicam nomes de grupo.

      Aqui, vemos que o grupo admin pode executar qualquer comando como qualquer usuário em qualquer host. De maneira similar, o grupo sudo possui os mesmos privilégios, mas também pode executar como qualquer grupo.

      Linha /etc/sudoers.d incluída

      A última linha aparentemente é um comentário à primeira vista:

      /etc/sudoers

      . . .
      
      #includedir /etc/sudoers.d
      

      Ele realmente começa com um #, que geralmente indica um comentário. No entanto, essa linha, na realidade, indica que os arquivos dentro do diretório /etc/sudoers.d também serão fornecidos e aplicados.

      Os arquivos dentro desse diretório seguem as mesmas regras do arquivo /etc/sudoers em si. Qualquer arquivo que não termine em ~, nem tenha um . nele será lido e anexado à configuração do sudo.

      Isso existe principalmente para os aplicativos alterarem privilégios sudo na instalação. Colocar todas as regras associadas dentro de um único arquivo no diretório /etc/sudoers.d pode facilitar a visualização de quais privilégios estão associados a quais contas e reverter credenciais facilmente sem precisar tentar manipular o arquivo /etc/sudoers diretamente.

      Assim como o arquivo /etc/sudoers, é recomendado sempre editar arquivos dentro do diretório /etc/sudoers.d com o visudo. A sintaxe para editar esses arquivos seria:

      • sudo visudo -f /etc/sudoers.d/file_to_edit

      Como conceder privilégios sudo a um usuário

      A operação mais comum requisitada pelos usuários ao gerenciar permissões sudo é conceder o acesso sudo geral a um novo usuário. Isso é útil se você quiser conceder a uma conta o acesso administrativo total ao sistema.

      A maneira mais fácil de fazer isso em um sistema configurado com um grupo de administração de fins gerais, como o sistema Ubuntu neste guia, é adicionando o usuário em questão a esse grupo.

      Por exemplo, no Ubuntu 20.04, o grupo sudo possui privilégios completos de administrador. Podemos conceder esses mesmos privilégios a um usuário adicionando ele ao grupo desta forma:

      • sudo usermod -aG sudo username

      O comando gpasswd também pode ser usado:

      • sudo gpasswd -a username sudo

      Ambos alcançarão o mesmo resultado.

      No CentOS, o grupo em questão é geralmente o wheel ao invés do grupo sudo:

      • sudo usermod -aG wheel username

      Ou, é possível usar o gpasswd:

      • sudo gpasswd -a username wheel

      No CentOS, se adicionar o usuário ao grupo não funcionar imediatamente, pode ser necessário editar o arquivo /etc/sudoers para descomentar o nome do grupo:

      /etc/sudoers

      . . .
      %wheel ALL=(ALL) ALL
      . . .
      

      Como configurar regras personalizadas

      Agora que nos familiarizamos com a sintaxe geral do arquivo, vamos criar algumas novas regras.

      Como criar pseudônimos

      O arquivo sudoers pode ser organizado mais facilmente agrupando coisas com vários tipos de “pseudônimos”, ou ”aliases”.

      Por exemplo, é possível criar três grupos diferentes de usuários, com associações coincidentes:

      /etc/sudoers

      . . .
      User_Alias      GROUPONE = abby, brent, carl
      User_Alias      GROUPTWO = brent, doris, eric,
      User_Alias      GROUPTHREE = doris, felicia, grant
      . . .
      

      Os nomes de grupo devem começar com uma letra maiúscula. Então, podemos permitir que membros do GROUPTWO atualizem o banco de dados apt criando uma regra como esta:

      /etc/sudoers

      . . .
      GROUPTWO    ALL = /usr/bin/apt-get update
      . . .
      

      Se não especificarmos um usuário/grupo para executar o comando, como acima, o sudo utiliza o usuário root como padrão.

      Podemos permitir que membros do GROUPTHREE desliguem e reinicializem a máquina criando um “pseudônimo de comando” e usando ele em uma regra para o GROUPTHREE:

      /etc/sudoers

      . . .
      Cmnd_Alias      POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
      GROUPTHREE  ALL = POWER
      . . .
      

      Criamos um pseudônimo de comando chamado POWER que contém comandos para desligar e reinicializar a máquina. Em seguida, permitimos que os membros do GROUPTHREE executem esses comandos.

      Também podemos criar pseudônimos “Executar como”, que podem substituir a parte da regra que especifica o usuário com o qual será executado o comando:

      /etc/sudoers

      . . .
      Runas_Alias     WEB = www-data, apache
      GROUPONE    ALL = (WEB) ALL
      . . .
      

      Isso permitirá que qualquer membro do GROUPONE execute comandos como o usuário www-data ou o usuário apache.

      Lembre-se apenas que as regras posteriores irão substituir regras mais antigas quando houver um conflito entre elas.

      Como bloquear regras

      Há várias maneiras de ganhar mais controle sobre como o sudo reage a uma chamada.

      O comando updatedb associado ao pacote mlocate é relativamente inofensivo em um sistema com um único usuário. Se quisermos permitir que os usuários o executem com privilégios de root sem precisar digitar uma senha, podemos criar uma regra como esta:

      /etc/sudoers

      . . .
      GROUPONE    ALL = NOPASSWD: /usr/bin/updatedb
      . . .
      

      O NOPASSWD é uma “etiqueta”, que significa que nenhuma senha será solicitada. Ele possui um comando companheiro chamado PASSWD, que é o comportamento padrão. Uma etiqueta é relevante para o resto da regra, a menos que seja anulada por sua etiqueta “gêmea” mais tarde no processo.

      Por exemplo, podemos ter uma linha como esta:

      /etc/sudoers

      . . .
      GROUPTWO    ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
      . . .
      

      Outra etiqueta útil é a NOEXEC, que pode ser usada para evitar um comportamento perigoso em certos programas.

      Por exemplo, alguns programas, como o less, podem gerar outros comandos digitando isto a partir de sua interface:

      !command_to_run
      

      Isso executa basicamente qualquer comando dado pelo usuário com as mesmas permissões nas quais less está sendo executado, o que pode ser bastante perigoso.

      Para restringir isso, poderíamos usar uma linha como esta:

      /etc/sudoers

      . . .
      username  ALL = NOEXEC: /usr/bin/less
      . . .
      

      Informações diversas

      Há mais algumas informações que podem ser úteis ao lidar com o sudo.

      Se você especificou um usuário ou grupo para “executar como” no arquivo de configuração, é possível executar comandos como esses usuários usando os sinalizadores -u e -g, respectivamente:

      • sudo -u run_as_user command
      • sudo -g run_as_group command

      Por conveniência, o sudo salvará por padrão seus detalhes de autenticação por uma certa quantidade de tempo em um terminal. Isso significa que não será necessário digitar sua senha novamente até que esse temporizador se esgote.

      Por fins de segurança, se quiser limpar esse temporizador quando terminar de executar comandos administrativos, execute:

      Se, por outro lado, quiser “preparar” o comando sudo para que você não seja solicitado mais tarde, ou renovar seu lease do sudo, digite:

      A sua senha será solicitada e então colocada em cache para utilização posterior do sudo, até que o intervalo de tempo do sudo expire.

      Se quiser apenas saber quais tipos de privilégios estão definidos para seu nome de usuário, digite:

      Isso irá listar todas as regras no arquivo /etc/sudoers que se aplicam ao seu usuário. Isso dá uma boa ideia do que será ou não permitido fazer com o sudo como qualquer usuário.

      Haverá muitas vezes em que você executará um comando e ele falhará por ter esquecido de iniciá-lo com o sudo. Para evitar ter que digitar novamente o comando, utilize uma funcionalidade bash que significa “repetir o último comando”:

      O ponto de exclamação duplo repetirá o último comando. Adicionamos o sudo no início para alterar rapidamente o comando não privilegiado para um comando privilegiado.

      Para se divertir um pouco, adicione a linha a seguir ao seu arquivo /etc/sudoers com o visudo:

      /etc/sudoers

      . . .
      Defaults    insults
      . . .
      

      Isso fará com que o sudo retorne um insulto bobo quando um usuário digitar uma senha incorreta para o sudo. Podemos usar o sudo -k para limpar a senha sudo anterior em cache para testar essa funcionalidade:

      Output

      [sudo] password for demo: # enter an incorrect password here to see the results Your mind just hasn't been the same since the electro-shock, has it? [sudo] password for demo: My mind is going. I can feel it.

      Conclusão

      Agora, você deve ter um conhecimento básico sobre como ler e modificar o arquivo sudoers, e uma noção acerca dos vários métodos que podem ser usados para se obter privilégios de root.

      Lembre-se: os privilégios de superusuário não são dados a usuários comuns por um motivo. É essencial que você compreenda o que cada comando que você executa com privilégios de root faz. Não deixe de levar a sério toda a responsabilidade existente. Aprenda a melhor maneira de usar essas ferramentas para o seu caso de uso e bloqueie todas as funcionalidades que não sejam necessárias.

      [*]
      [*]Source link