Traté de usar sudo cd name_of_dirpero 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 -ldel directorio en sí.sudo chmod 0755 name_of_dir; do you business; cd ../; sudo chmod 0700 name_of_dirParece ser la única respuesta con la que estarás contento.sudo cdtrabajar, 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 cdno funcionará porque elcdcomando 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úncdcomando para encontrar.El método a utilizar es cambiar al usuario que posee el directorio. Permiso
700se 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 usarlocdcomo ese usuario.fuente
sudo echo: necesita algo comoecho 'deb {text}' | sudo tee --append {file}usar echo con sudo y cambiar un archivo.cdintegrado en los comandos disponiblessudo?sudo -ipara abrir la "consola raíz" y luego
cd /path/to/directory(
cdes 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 suing (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 sutypelugar. Mucho más seguro, potente y portátil. Ytype -ppara el camino de un ejecutable.type [ -wfpams ] name ... Equivalent to whence -v.,which [ -wpams ] name ... Equivalent to whence -c.(hombre zshbuiltins)whenceeszsh-solo ... no funciona en bash, ni siquiera está instalado por defecto en ubuntu. Si bientypees POSIX , significa que funcionará en cualquier shell moderno ... bash, csh, ksh ... e incluso zsh.typeque ambos son alias del mismo comando.zsh. En bash, que es el shell de terminal predeterminado (y generalmente solo) en Ubuntu,whichno 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 directorybashsudosudoComo 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 -isi desea un shell de inicio de sesión (recuerde que uno de los efectossudo -ies iniciarlo en el directorio de inicio de la raíz), osudo bashsi desea forzarbasho poder pasar opciones al shell.cd directoryexitpara 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
sudole sigacd, y que de losudocontrario se ejecuta normalmente. No utilice esto como una alternativa para aprender por quésudo cdno 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
exitsalir 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 corresudosin-s,-io 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 usarsudoque es posible que solo desee habilitarlo ocasionalmente. En ese caso, es mejor ponerlo en su propio archivo. Si crea un archivo llamadosudo.bashen su directorio de inicio con esos contenidos, puede hacer que lasudofunción esté disponible, para que se ejecute en lugar delsudocomando 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.bashrcno son ejecutables, no marque elsudo.bashejecutable 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
sudoactualmente 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 elsudocomando 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 estasudofunció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 tratecdespecialmente . 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 directorysudo -i cd directorysudo -ssudo -ssudo bash-cbashcdsudo cd directorysudoese 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 /rootcomporta normalmente. Solo cuando intento accedercda un directorio consudose crea un nuevo shell y se me recuerda explícitamente lo que está sucediendo.Si intenta
sudo cdacceder a un directorio que no puede cambiar incluso como root, recibirá un mensaje de error:He utilizado
sudo -kentre 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 -ktú mismo. Debido a que la función de shell es solo una envoltura delgada para elsudocomando real , el almacenamiento en caché de sus credenciales y otrossudocomportamientos comunes todavía funcionan normalmente.Aunque funciona bien y es bastante ordenado, admito que sombrear el
sudocomando 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 directoryfuente
En cuanto
sualsudebate o no , creo que es una tontería.suestá 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
sudoque tengo con kubuntu lucid,sudo cdahora 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 cdAún te funciona? ¿Cuál es la salida detype -a sudoun 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 .