Digamos que hay un directorio al que no tengo privilegios para acceder. Obviamente sudo cd foo
no funcionará, porque cd
es un shell incorporado en cada shell.
Hasta ahora, he estado usando sudo bash
(sí, sé que hay mejores formas) para obtener un indicador de raíz. Entonces, puedo cd
entrar al directorio para hurgar.
¿Hay una mejor manera de hacer esto?
bash
sudo
cd-command
Strugee
fuente
fuente
cd
ser root (a menos que de hecho estés en un shell de root)?cd
.sudo ls
.Respuestas:
No, no hay una forma de acceder
cd
a un directorio que solo permita root sin ser root. Realmente no debería haber demasiados directorios que tengan esta limitación. La mayoría de las veces, el acceso a un archivo determinado es limitado, como el/etc/shadow
archivo o los archivos de registro específicos que se encuentran debajo/var/log
.Puedes usar
sudo ls <dir>
para verlos en lugar debash
. Además, cuando se usasudo
para convertirse en root, generalmente desea establecer el usuario (su
comando) en lugar debash
, así que use este comando en su lugar:También puede lograr lo mismo con el
-i
interruptor de un sudo :extracto de la página del manual sobre
sudo -i
Para los archivos a los que no puede acceder, puede usar cualquiera de estos
sudo
comandos:fuente
sudo su -
lugar desudo -i
? Ambos le otorgan todos los privilegios de superusuario, aunque todo lo que necesita es la capacidad CAP_DAC_READ_SEARCH.sudo
fue a través de los entornos Solaris y la versiónsudo
que estaba allí no incluía este interruptor. Mirando a través del registro de cambios de sudo , parece que esa opción se agregó en 2004. Supongo que estoy saliendo con esto pero me preguntaste 8-). Enmendaré la respuesta para incluir ambos, ¡gracias!sudo -Hi
porque establece el directorio de inicio también (no establece inicio de forma predeterminada en mi distribución, el valor predeterminado puede variar). Si no lo hace, puede terminar con archivos de propiedad raíz en su hogar, si crea nuevos archivos allí.No, no hay Necesita un shell que se ejecute como root.
fuente
cd
menos que esté ejecutando un shell o un proceso comparable.Bien, no puedes. Sin embargo, aquí hay una solución alternativa:
fuente