Eu tentei usar, sudo cd name_of_dir
mas estou recebendo a mensagem de erro:
sudo: cd: command not found
Existe alguma outra maneira de inserir um diretório pertencente a outro usuário com 700 permissões?
command-line
permissions
sudo
cd-command
Bakhtiyor
fonte
fonte
ls -l
diretório próprio.sudo chmod 0755 name_of_dir; do you business; cd ../; sudo chmod 0700 name_of_dir
Parece ser a única resposta com a qual você ficará feliz.sudo cd
trabalhar, mas vota soluções usando sudo ou su. Ele diz que não quer trabalhar como root, mas ainda quer acessar diretamente um que não possui. Soa como um troll para mim ...Respostas:
sudo cd
não funcionará porque ocd
comando está embutido no shell. Então você está dizendo tornar-se root e, em seguida, execute este comando. Você se torna root e, em seguida, o comando após a busca do sudo, mas não hácd
comando a ser encontrado.O método a ser usado é alternar para o usuário proprietário do diretório. Permissão
700
é entendida como "o proprietário pode ler, escrever e executar".Portanto, se o root possui o diretório
sudo -i
, a senha e, em seguida,cd {dir}
é o único método correto. Se outra pessoa possuir o diretório, você ainda poderá usar o 1º método, mas também poderá mudar para esse usuáriosu {username}
e, em seguida, usá-cd
lo.fonte
sudo echo
: você precisa de algo comoecho 'deb {text}' | sudo tee --append {file}
usar echo com sudo e alterar um arquivo.cd
embutido nos comandos disponíveissudo
?sudo -i
para abrir "console raiz" e depois
cd /path/to/directory
(
cd
é um comando interno do shell, portanto, não pode ser o destino sudo)fonte
Para abrir um diretório raiz, podemos executar um shell raiz, por exemplo:
fonte
sudo su
ing (ou outro método) é o único método prático ou até possível. Os "especialistas" apenas dizem para você não usar a raiz como hábito - tudo bem quando você realmente precisa. E @Vojtech, nada é impossível ...Como outros apontaram - é o shell embutido:
Então, por que você não sudo o próprio shell?
fonte
which
. É apenas um script, e ele não manipulará todas as possibilidades (binário, interno, alias, etc.). Use emtype
vez disso. Muito mais seguro, poderoso e portátil. Etype -p
para o caminho de um executável.type [ -wfpams ] name ... Equivalent to whence -v.
,which [ -wpams ] name ... Equivalent to whence -c.
(man zshbuiltins) #whence
ézsh
-only ... não funciona no bash, nem é instalado por padrão no ubuntu. Enquantotype
é POSIX , significa que funcionará em qualquer shell moderno ... bash, csh, ksh .. e até zsh.type
pois ambos são aliases ao mesmo comando.zsh
. No bash, que é o shell de terminal padrão (e geralmente apenas) no Ubuntu,which
não é um builtin ... entãotype
(outype -p
) é o preferido.Você também pode elevar-se para o usuário root:
Então você pode fazer o cd para qualquer diretório que não permita ao usuário normal, como:
Ou
Depois que você terminar, digite:
Para efetuar logout dos privilégios de usuário root.
Para elevar-se como root, você também pode combinar os dois comandos pelo
&&
operador, como abaixo, este operador também mantém sua sequência de execução, se o comando atual for executado com êxito e somente então o próximo comando poderá executar:Ou
fonte
Se você realmente deseja fazer o trabalho, pode definir uma função shell chamada que executa um novo shell raiz quando é executada dessa maneira e apenas executa o comando regular caso contrário.
sudo cd directory
bash
sudo
sudo
Conforme apresentado em outras respostas, a maioria dos usuários não deseja se incomodar com isso, mas deseja:
sudo -s
, ousudo -i
se você quiser um shell de login (lembre-se de que um dos efeitossudo -i
é iniciá-lo no diretório inicial do root), ousudo bash
se desejar forçarbash
ou conseguir passar opções para o shell.cd directory
exit
para deixar o novo shell. É importante não esquecer isso, porque você não deseja executar mais ações como raiz do que pretende!Portanto, se você quiser, poderá escrever uma função de shell (ou um script) que execute as duas primeiras dessas ações quando
sudo
for seguida porcd
e executesudo
normalmente normalmente. Por favor, não use isso como uma alternativa para aprender porsudo cd
que de outra forma não será bem-sucedido , porque se você não entender o que está acontecendo, provavelmente ficará muito confuso por estar em um novo shell (e você poderá não entender nenhuma mensagem de erro que ocorrem).Aqui está uma maneira de escrever uma função de shell, que também lembra que você está em um novo shell e que deve
exit
sair dela quando terminar. (Esse lembrete é provável que seja útil para usuários de qualquer nível de habilidade, porque não é geralmente acostumados a estar em um novo shell quando se corresudo
sem-s
,-i
ou o nome de um shell real como um argumento.)Você pode colocar isso no seu
~/.bashrc
, embora essa seja uma maneira bastante estranha de usar, esudo
você só pode querer habilitá-lo ocasionalmente. Nesse caso, é melhor colocá-lo em seu próprio arquivo. Se você criar um arquivo chamadosudo.bash
no diretório inicial com esse conteúdo, poderá disponibilizar asudo
função - para que ela seja executada em vez dosudo
comando regular - executando. ~/sudo.bash
. Isso entra em vigor no shell atual e em seus shells filhos, mas não em outros. Pela mesma razão que arquivos como.bashrc
não são executáveis, não marquesudo.bash
executável comchmod
. Esta é realmente uma biblioteca, em vez de um script de shell independente. Se você fezexecutá-lo como um script de shell, ele definiria a função ... mas apenas no shell que executou o script, não para você como o chamador. (Claro, você pode escrever um script para isso, que simplesmente não é a abordagem que eu tomei aqui.)Para verificar e ver se
sudo
atualmente está definido como uma função shell e para ver sua definição atual, se for uma, executetype sudo
. Para desativar (ou seja, indefinir) a função, uma vez definida, executeunset -f sudo
. Para executar manualmente osudo
comando regular diretamente, mesmo se a função shell estiver definida, executecommand sudo
. Observe, no entanto, que você não precisa fazer isso, porque essasudo
função realmente faz isso sozinha sempre que houver mais ou menos de dois argumentos passados para ela ou o primeiro argumento passado para ela for qualquer coisa menos issocd
. É por isso que você ainda pode usá-lo da maneira normal que as pessoas usamsudo
.Observe também que a função shell mostrada acima ainda permite passar outros argumentos
sudo
, mas isso impedirá que ela seja tratadacd
especialmente . A execução em particular não é suportada, embora você possa estender a função shell para suportar esse caso. Nem é . O shell que ele cria é semelhante ao que você recebe . Na verdade , o código não é executado , mas é usado , portanto, a opção funciona corretamente. Na verdade, ele é executado duas vezes quando você passa um argumento de diretório (e zero vezes caso contrário). Quando você executa , primeiro ele cria um shell bash separado daquele em que você está executando a função e altera o diretório. Se isso der certo, substituisudo -u user cd directory
sudo -i cd directory
sudo -s
sudo -s
sudo bash
-c
bash
cd
sudo cd directory
sudo
esse bash shell com um novo e interativo que você pode usar.Aqui está um exemplo de como essa função de shell automaticamente "faz a coisa certa". Observe que
sudo ls -A /root
se comporta normalmente. Somente quando tento acessarcd
um diretóriosudo
é que um novo shell é criado e sou lembrado explicitamente do que está acontecendo.Se você tentar
sudo cd
acessar um diretório para o qual não pode mudar mesmo como root, receberá uma mensagem de erro:Eu usei
sudo -k
entre invocações nos exemplos acima para mostrar que ele se autentica como raiz antes de tentar alterar o diretório. Mas você realmente não precisa se controlarsudo -k
. Como a função shell é apenas um invólucro fino para osudo
comando real , o cache de suas credenciais e outrossudo
comportamentos comuns ainda funcionam normalmente.Embora funcione bem e seja meio arrumado, admito que sombrear o
sudo
comando real com uma função do mesmo nome é super estranho. A maioria dos usuários provavelmente só quero executar as etapassudo -s
, eles mesmos. Mas, caso alguém queira isso - e também para demonstrar que é possível - aí está.cd directory
fonte
Quanto
su
aosu
debate ou não , acho que é bobagem.su
é contra a religião do Ubuntu e não é algo que se faça de maneira descuidada. É incrível o que uma pessoarm -rf *
pode fazer se você é um root. Mas, se você está familiarizado com a interface da linha de comandos (CLI) e tem tarefas no nível do sistema, não há razão para não usá-losu
. Eu usei várias distribuições onde ninguém sequer mencionou o usosudo
. É apenas uma questão de que tipo de trabalho você está realizando e com qual método você se sente mais confortável. Eu uso os dois.fonte
sudo
eu tenho com o kubuntu lucid,sudo cd
agora funciona - sem nenhuma solução alternativa." Com menos de algo assim , que tenho certeza de que nunca esteve no Ubuntu por padrão, não vejo como. (Além disso, usei a versão 10.04; ela não fez isso.) Faz anos desde que você postou isso, mas você se lembra dos detalhes? Será quesudo cd
ainda funciona para você? Qual é o resultado detype -a sudo
um shell onde ele funciona? Entendo que você talvez não saiba - e a segunda parte de sua resposta permanece relevante - mas, se souber, poderá editar sobre isso.