¿Cómo simular una request de Windows como contraseña de administrador en Linux?

Utilizo mucho la aplicación de mint install pero no creo que sea segura si dejo que el usuario normal que uso tenga todos los privilegios sobre ella. Me preguntaba si hay una forma de get acceso a esta aplicación solo cuando se ingresa la contraseña de root. Básicamente, podrá usar algo como la request de contraseña de administrador de Windows cuando instale una nueva aplicación en la terminal. Sé que puedo iniciar session en root con su, pero sé que definitivamente no es seguro. ¿Algunas ideas?

Editar: Nuevamente, no quiero dar privilegios al usuario normal usando sudo o chmod o cualquier otra cosa.

Si necesita hacer algo que requiera privilegios de administrador, debe usar algún método para get privilegios de administrador, que en la mayoría de los sistemas modernos significa su , sudo o un contenedor alnetworkingedor de uno de estos. Lo peligroso de ejecutar commands como root (ya sea con su o sudo ) es que te da muchas más forms de dañar tu sistema. Por lo tanto, solo debe ejecutar un command como root cuando el command realmente lo requiera.

La diferencia principal entre su y sudo en su configuration típica es que, para sudo , escribe la misma contraseña que cuando inicia session, mientras que su requiere una contraseña diferente (la contraseña del usuario root ). Para una máquina típica de un solo usuario, no hay una diferencia significativa entre los dos en términos de security. También es posible configurar sudo para que no requiera una contraseña.

Si estás trabajando en un terminal y quieres ejecutar un command como root, con su , ejecuta:

 su -c 'somecommand an_argument another_argument' 

Con sudo :

 sudo somecommand an_argument another_argument 

De cualquier manera, se le pedirá una contraseña (la contraseña de root para su , su propia contraseña para sudo ). Sudo puede recordar su contraseña y no volver a preguntar en los próximos minutos; con su , tendrá que escribirlo de nuevo cada vez.

También puede get un post gráfico para escribir su contraseña (con gksu , kdesu , …), pero si ya está trabajando en un terminal, eso es less conveniente.

Si bien se tiene en count que no hay comidas gratis, es posible minimizar el riesgo.

Si desea ejecutar su script como root e inmediatamente salir sin request de contraseña y exit command, entonces deberá comprometerse un poco.

La siguiente solución le permite almacenar su contraseña de root encriptada dos veces (o más) en cualquier lugar con los permissions de usuario actuales.

Nivel alto:

  1. Cifrar root contraseña de root en base64 dos veces una vez y colocar el file en cualquier lugar (puede ser 1234.txt, por ejemplo).

  2. Invocar script expect con argumento (la cadena de arriba decodificada)

  3. Expect ejecuta el script deseado y sale.

  4. El file de limpieza en /root invocado desde expect y elimina las bash_history de bash_history (del usuario común) que contiene la root , el file encriptado por contraseña y base64 . Para eliminar cualquier rastro, se invocó el guión (desde la perspectiva del usuario común). Solo el usuario root puede acceder a este script.

Entonces, sobre todo, parece que desde la perspectiva de los usuarios comunes, este script nunca se ejecutó y no contiene ninguna contraseña sensible.

Además, el doble encryption de base64 me parece inocente para mí (aunque no soy experto en security, no lo reconocería como 2x base64 ). Por ejemplo:

 V1c5MVFYSmxWMlZzWTI5dFpRbz0K decrypted to YouAreWelcome 

Codificando la contraseña dos veces en base64 una vez :

 $ cat pass.txt | base64 | base64 > innocent_name.txt $ rm pass.txt 

Entonces:

Ejecutando el script:

 $ ./root_wrap.exp "$(cat innocent_name.txt | base64 -d | base64 -d)" 

Esperar script:

 #!/usr/bin/expect -f set root_user root; set root_pass [ lindex $argv 0 ]; spawn bash expect "*$ " send -- "whoami\r" expect "*$ " send -- "su $root_user\r" expect "*?assword:*" send -- "$root_pass\r" expect "*# " send -- "./whoam.sh\r" expect "*# " send -- "/root/rm_trace.sh\r" expect "*# " send -- "exit\r" send -- "whoami\r" expect "*$ " expect eof 

Script de historial de limpieza /root/rm_trace.sh :

 #!/bin/bash sed -i '/base64/d' /home/<user>/.bash_history sed -i '/root_wrapp/d' /home/<user>/.bash_history sed -i '/innocent_name/d' /home/<user>/.bash_history 

Sample bash script para ejecutar como root:

  #!/bin/bash echo "now running as root" whoami