Red de conocimiento informático - Material del sitio web - Cómo ejecutar comandos como root en un estado no root

Cómo ejecutar comandos como root en un estado no root

El problema es que hay muchos programas que no se deben ejecutar como root. Si inicia el administrador de archivos como usted mismo (no root) y luego elimina /home, perderá todos sus archivos y luego se quejará consigo mismo mientras busca archivos de respaldo. Afortunadamente, los archivos de todos los demás usuarios siguen intactos. Sin embargo, si usas root para hacer lo mismo, inmediatamente caerás en quejas y maldiciones. Los programas para compartir archivos tampoco deben ejecutarse como root. Si alguien encuentra una vulnerabilidad en Irc o Gnutella, lo máximo que puede hacer es robar tus propios archivos. Pero si usa root para ejecutar estos programas, todos los archivos del usuario estarán completamente expuestos a ellos, incluido el archivo de contraseñas /etc/shadow más importante, así como los correos electrónicos privados de sus colegas. Esto no es nada bueno. Por lo tanto, asegúrese de utilizar su propia cuenta para ejecutar X y utilice los métodos que se describen a continuación en este artículo para ejecutar tareas que deben ejecutarse como root. su y su: supongamos que alguien ocupa la línea de acceso telefónico y queremos saber quién es esa persona. tcpdump mostrará el estado de transmisión del paquete en la línea. Intentemos el siguiente comando: [wstearns@sparrow wstearns]$ tcpdump -i ppp0 -qtn

tcpdump: socket: Operación no permitida Oh, sí. Este shell, como todos los demás programas en X, se ejecuta utilizando wstearns. Pensarías que podría saberlo desde la línea de comando, ¿no? :-) Sin embargo, no quiero salir completamente de X solo con un comando. El comando su nos permite reemplazar temporalmente el usuario actual por otro usuario. Si no especifica qué usuario quiere ser, su valor predeterminado es que queremos ser root. No me asustes con las técnicas de piratería. A menos que el usuario actual sea root, honestamente debes proporcionarle a su la contraseña del usuario objetivo.

:-) [wstearns@sparrow wstearns]$ tcpdump -i ppp0 -qtn

tcpdump: socket: Operación no permitida

[wstearns@sparrow wstearns]$ su - Contraseña: lt; Ingrese la contraseña de root gt;

[root@sparrow /root]# tcpdump -i ppp0 -qt

Filtro de nivel de usuario, protocolo TODO, socket de paquete de datagrama

tcpdump: escuchando en ppp0

lt; reflectix.xs4all.nl.29788 gt; ME.33085: tcp 1448 (DF) [tos 0x10]

gt; ; reflectix.xs4all.nl.29788: tcp 0 (DF)

lt; reflectix.xs4all.nl.29788 gt; ME.33085: tcp 1448 (DF) [tos 0x10]

gt; ME.33085 gt; reflectix.xs4all.nl.29788: tcp 0 (DF)

lt; reflectix.xs4all.nl.29788 gt; ME.33085: tcp 1448 (DF) [ tos 0x10]

gt; ME.33085 gt; reflectix.xs4all.nl.29788: tcp 0 (DF)

lt; 33085: tcp 1448 (DF) [tos 0x10] 7 paquetes recibidos por filtro

[root@sparrow /root]# exit

[wstearns@sparrow wstearns]$ Oh, entonces Es mi propia descarga de archivos ocupados en la línea de acceso telefónico. jeje. Quizás hayas notado que el ejemplo anterior usa su - en lugar de su. "-" proporcionará el entorno del usuario de destino en lugar del entorno del usuario actual. El siguiente ejemplo ilustra claramente este punto. Sin su -, el shell no puede encontrar el comando que queremos ejecutar en /sbin y /usr/sbin: [wstearns@sparrow wstearns]$ su

Contraseña: lt; Ingrese la contraseña de root gt;

[root@sparrow wstearns]# tcpdump -i ppp0 -qt

bash: tcpdump: comando no encontrado

[ root@ sparrow wstearns]# exit

[wstearns@sparrow wstearns]$ En este ejemplo, permanezco en el directorio actual de wstearns y no entro al directorio predeterminado de root. Además, dado que /usr/sbin no está en mi ruta, tengo que especificar la ruta completa a tcpdump. Desde este punto de vista, generalmente es más conveniente utilizar "su -".

su - -c Si realmente solo necesita ejecutar un comando, existe una manera más rápida. La opción -c le dice a su que ejecute el comando especificado y luego regrese inmediatamente al usuario original: [wstearns@sparrow wstearns]$ whoamiwstearns[wstearns@sparrow wstearns]$ su - -c whoami