Traté de usar sudo cd name_of_dir
pero recibo el mensaje de error:
sudo: cd: command not found
¿Hay alguna otra forma de ingresar a un directorio propiedad de otro usuario que tenga 700 permisos?
command-line
permissions
sudo
cd-command
Bakhtiyor
fuente
fuente
ls -l
del directorio en sí.sudo chmod 0755 name_of_dir; do you business; cd ../; sudo chmod 0700 name_of_dir
Parece ser la única respuesta con la que estarás contento.sudo cd
trabajar, pero vota las soluciones usando sudo o su. Él dice que no quiere trabajar como root, pero que aún quiere acceder a uno directamente que no posee. A mí me parece un troll ...Respuestas:
sudo cd
no funcionará porque elcd
comando está integrado en el shell. Entonces dices hazte root y luego ejecuta este comando. Se convierte en root y luego se busca el comando después de buscar sudo pero no hay ningúncd
comando para encontrar.El método a utilizar es cambiar al usuario que posee el directorio. Permiso
700
se entiende como "el propietario puede leer, escribir y ejecutar".Entonces, si la raíz posee el directorio
sudo -i
, la contraseñacd {dir}
es el único método correcto. Si alguien más posee el directorio, aún puede usar el primer método, pero también puede cambiar a ese usuariosu {username}
y luego usarlocd
como ese usuario.fuente
sudo echo
: necesita algo comoecho 'deb {text}' | sudo tee --append {file}
usar echo con sudo y cambiar un archivo.cd
integrado en los comandos disponiblessudo
?sudo -i
para abrir la "consola raíz" y luego
cd /path/to/directory
(
cd
es un comando integrado de shell, por lo que no puede ser el objetivo de sudo)fuente
Para abrir un directorio raíz, podemos ejecutar un shell raíz, por ejemplo:
fuente
sudo su
ing (u otro método) es el único método práctico o incluso posible. Los "expertos" solo le dicen que no use la raíz como un hábito; está bien cuando realmente lo necesita. Y @Vojtech, nada es imposible ...Como otros señalaron, su shell está incorporado:
Entonces, ¿por qué no sudo la concha en sí?
fuente
which
. Es simplemente un script, y no manejará todas las posibilidades (binario, incorporado, alias, etc.). Usar en sutype
lugar. Mucho más seguro, potente y portátil. Ytype -p
para el camino de un ejecutable.type [ -wfpams ] name ... Equivalent to whence -v.
,which [ -wpams ] name ... Equivalent to whence -c.
(hombre zshbuiltins)whence
eszsh
-solo ... no funciona en bash, ni siquiera está instalado por defecto en ubuntu. Si bientype
es POSIX , significa que funcionará en cualquier shell moderno ... bash, csh, ksh ... e incluso zsh.type
que ambos son alias del mismo comando.zsh
. En bash, que es el shell de terminal predeterminado (y generalmente solo) en Ubuntu,which
no está integrado ... por lo que se prefieretype
(otype -p
).También puede elevarse a usuario root mediante:
Luego puede cd a cualquier directorio que no permita usuarios normales como:
O
Luego, una vez que hayas terminado allí, escribe:
Para cerrar sesión de los privilegios de usuario root.
Para elevarse como root, también puede combinar los dos comandos por
&&
operador como se muestra a continuación, este operador también mantiene su secuencia de ejecución, si el comando actual se ejecuta con éxito y solo entonces se permite la ejecución del siguiente comando:O
fuente
Si realmente desea hacer que funcione, puede definir una función de shell llamada que ejecuta un nuevo shell raíz cuando se ejecuta de esa manera, y simplemente ejecuta el comando regular de lo contrario.
sudo cd directory
bash
sudo
sudo
Como se presenta en otras respuestas, la mayoría de los usuarios no querrán molestarse en hacer eso, sino que querrán:
sudo -s
, osudo -i
si desea un shell de inicio de sesión (recuerde que uno de los efectossudo -i
es iniciarlo en el directorio de inicio de la raíz), osudo bash
si desea forzarbash
o poder pasar opciones al shell.cd directory
exit
para salir del nuevo shell. ¡Es importante no olvidar esto, porque no desea realizar más acciones como root de lo que pretende!Por lo tanto, si lo desea, puede escribir una función de shell (o una secuencia de comandos) que realice las dos primeras de esas acciones cuando
sudo
le sigacd
, y que de losudo
contrario se ejecuta normalmente. No utilice esto como una alternativa para aprender por quésudo cd
no tiene éxito de otra manera , porque si no comprende lo que está sucediendo, es probable que se sienta muy confundido al estar en un nuevo shell (y es posible que no entienda ningún mensaje de error eso ocurre).Aquí hay una forma de escribir dicha función de shell, que también le recuerda que está en un nuevo shell y que debe
exit
salir de él cuando haya terminado. (Eso recordatorio es probable que sea útil para los usuarios de cualquier nivel de habilidad, ya que uno no es generalmente acostumbrado a estar en un nuevo shell cuando se corresudo
sin-s
,-i
o el nombre de una cáscara real como un argumento.)Puede poner esto en su
~/.bashrc
, aunque esta es una forma lo suficientemente extraña de usarsudo
que es posible que solo desee habilitarlo ocasionalmente. En ese caso, es mejor ponerlo en su propio archivo. Si crea un archivo llamadosudo.bash
en su directorio de inicio con esos contenidos, puede hacer que lasudo
función esté disponible, para que se ejecute en lugar delsudo
comando normal , ejecutándose. ~/sudo.bash
. Eso tiene efecto en el caparazón actual y sus caparazones secundarios, pero no en otros. Por la misma razón por la que los archivos como.bashrc
no son ejecutables, no marque elsudo.bash
ejecutable conchmod
. Esto es realmente una biblioteca, en lugar de un script de shell independiente. Si lo hicierasejecutarlo como un script de shell, definiría la función ... pero solo en el shell que ejecutó el script, no para usted como la persona que llama. (Por supuesto, usted puede escribir un guión para esto, que simplemente no resultan ser el enfoque que he tomado aquí.)Para verificar y ver si
sudo
actualmente está definido como una función de shell, y para ver su definición actual si es una, ejecutetype sudo
. Para deshabilitar (es decir, no definir) la función una vez que está definida, ejecuteunset -f sudo
. Para ejecutar manualmente elsudo
comando regular directamente, incluso si la función de shell está definida, ejecutecommand sudo
. Sin embargo, tenga en cuenta que no tiene que hacer eso, porque estasudo
función realmente lo hace por sí misma cada vez que se le pasan más o menos dos argumentos o el primer argumento que se le pasa es todo menos esocd
. Es por eso que todavía puede usarlo de la manera normal que usan las personassudo
.Tenga en cuenta también que la función de shell que se muestra arriba todavía le permite pasar otros argumentos
sudo
, pero eso evitará que se tratecd
especialmente . La ejecución en particular no es compatible, aunque podría ampliar la función de shell para admitir ese caso. Tampoco lo es . El shell que crea es similar a lo que obtienes . El código no se ejecuta realmente , sino que lo usa , por lo que la opción funciona correctamente. En realidad, se ejecuta dos veces cuando pasa y un argumento de directorio (de lo contrario, cero veces). Cuando ejecuta , primero se bifurca un shell bash separado del que está ejecutando la función y cambia el directorio. Si eso tiene éxito, reemplazasudo -u user cd directory
sudo -i cd directory
sudo -s
sudo -s
sudo bash
-c
bash
cd
sudo cd directory
sudo
ese bash shell con uno nuevo e interactivo que puedes usar.Aquí hay un ejemplo de cómo ese shell funciona automáticamente "hace lo correcto". Tenga en cuenta que se
sudo ls -A /root
comporta normalmente. Solo cuando intento accedercd
a un directorio consudo
se crea un nuevo shell y se me recuerda explícitamente lo que está sucediendo.Si intenta
sudo cd
acceder a un directorio que no puede cambiar incluso como root, recibirá un mensaje de error:He utilizado
sudo -k
entre invocaciones en los ejemplos anteriores para mostrar que lo autentica como root antes de intentar cambiar el directorio. Pero en realidad no tienes que corrersudo -k
tú mismo. Debido a que la función de shell es solo una envoltura delgada para elsudo
comando real , el almacenamiento en caché de sus credenciales y otrossudo
comportamientos comunes todavía funcionan normalmente.Aunque funciona bien y es bastante ordenado, admito que sombrear el
sudo
comando real con una función del mismo nombre es muy extraño. La mayoría de los usuarios probablemente sólo quieren llevar a cabo los pasossudo -s
, a sí mismos. Pero en caso de que alguien quiera esto, y también para demostrar que es posible, ahí está.cd directory
fuente
En cuanto
su
alsu
debate o no , creo que es una tontería.su
está en contra de la religión de Ubuntu y no es algo que hacer descuidadamente. Es sorprendente lo querm -rf *
puedes hacer si eres root. Pero, si se siente cómodo con la interfaz de línea de comandos (CLI) y tiene tareas de nivel de sistema que hacer, no hay razón para no usarsu
. He usado varias distribuciones donde nadie mencionó usarlassudo
. Es solo una cuestión de qué tipo de trabajo está haciendo y con qué método se siente más cómodo. Yo uso ambos.fuente
sudo
que tengo con kubuntu lucid,sudo cd
ahora funciona, sin ninguna solución". A falta de algo así , que estoy bastante seguro de que nunca ha estado en Ubuntu por defecto, no veo cómo. (Además, he usado 10.04; no lo hizo). Han pasado años desde que publicaste esto, pero ¿recuerdas los detalles? ¿sudo cd
Aún te funciona? ¿Cuál es la salida detype -a sudo
un shell donde funciona? Entiendo que puede que no lo sepas, y la segunda parte de tu respuesta sigue siendo relevante, pero si lo haces, puedes editarlo .