J'ai essayé d'utiliser sudo cd name_of_dir
mais je reçois le message d'erreur suivant:
sudo: cd: command not found
Existe-t-il un autre moyen de saisir un répertoire appartenant à un autre utilisateur disposant de 700 autorisations?
command-line
permissions
sudo
cd-command
Bakhtiyor
la source
la source
ls -l
des répertoires lui-même.sudo chmod 0755 name_of_dir; do you business; cd ../; sudo chmod 0700 name_of_dir
Semble être la seule réponse que vous serez heureux avec.sudo cd
travailler, mais il rejette les solutions en utilisant sudo ou su. Il dit qu'il ne veut pas travailler en tant que root, mais il souhaite tout de même accéder directement à un site qu'il ne possède pas. Cela ressemble à un troll pour moi ...Réponses:
sudo cd
ne fonctionnera pas car lacd
commande est intégrée au shell. Donc, vous dites devenir root et ensuite exécuter cette commande. Vous devenez root puis la commande après sudo est recherchée, mais il n'y a pas decd
commande à trouver.La méthode à utiliser consiste à basculer vers l'utilisateur qui possède le répertoire. L'autorisation
700
signifie que "le propriétaire peut lire, écrire et exécuter".Donc, si root possède le répertoire
sudo -i
, password et alorscd {dir}
est la seule méthode correcte. Si quelqu'un d'autre est propriétaire du répertoire, vous pouvez toujours utiliser la 1ère méthode, mais vous pouvez également changer pour cet utilisateur avecsu {username}
, puis l'utilisercd
comme utilisateur.la source
sudo echo
: vous avez besoin de quelque chose commeecho 'deb {text}' | sudo tee --append {file}
utiliser echo avec sudo et modifier un fichier.cd
des commandes disponiblessudo
?sudo -i
pour ouvrir "console root" puis
cd /path/to/directory
(
cd
est une commande intégrée au shell, donc ce ne peut pas être la cible sudo)la source
Pour ouvrir un répertoire racine, nous pouvons exécuter un shell racine, par exemple:
la source
sudo su
ing (ou une autre méthode) est la seule méthode pratique, voire possible. Les "experts" vous disent seulement de ne pas utiliser la racine comme habitude - c'est bien quand vous en avez réellement besoin. Et @Vojtech, rien n’est impossible ...Comme d'autres l'ont fait remarquer, son shell est intégré:
Alors, pourquoi ne pas sudo la coquille elle-même?
la source
which
. C'est simplement un script, et il ne gérera pas toutes les possibilités (binaire, construit, alias, etc.). Utilisez à latype
place. Bien plus sûr, puissant et portable. Ettype -p
pour le chemin d'un exécutable.type [ -wfpams ] name ... Equivalent to whence -v.
,which [ -wpams ] name ... Equivalent to whence -c.
(homme zshbuiltins)whence
estzsh
-only ... cela ne fonctionne pas dans bash, il n'est même pas installé par défaut dans Ubuntu. Whiletype
est POSIX , ce qui signifie que cela fonctionnera dans n’importe quel shell moderne ... bash, csh, ksh .. et même zsh.type
car ils sont tous deux des alias de la même commande.zsh
. Dans bash, qui est le terminal terminal par défaut (et généralement le seul) dans Ubuntu,which
n’est pas intégré ... sotype
(outype -p
) est préférable.Vous pouvez également vous élever comme utilisateur root en:
Ensuite, vous pouvez vous connecter à n’importe quel répertoire qui ne permet pas à un utilisateur normal comme:
Ou
Puis, une fois que vous avez terminé, tapez:
Pour vous déconnecter des privilèges de l'utilisateur root.
Pour vous élever en tant que root, vous pouvez également combiner les deux commandes par
&&
opérateur comme ci-dessous. Cet opérateur conserve également leur séquence d'exécution. Si la commande actuelle s'exécute correctement, la commande suivante est alors autorisée à être exécutée:Ou
la source
Si vous voulez vraiment faire fonctionner, vous pouvez définir une fonction shell appelée qui exécute un nouveau shell racine lorsqu'elle est exécutée de cette façon . Sinon , elle exécute simplement la commande standard .
sudo cd directory
bash
sudo
sudo
Comme présenté dans d'autres réponses, la plupart des utilisateurs ne voudront pas le faire, mais voudront plutôt:
sudo -s
ousudo -i
si vous voulez un shell de connexion (rappelez-vous qu’un des effets desudo -i
est de vous lancer dans le répertoire de base de la racine), ousudo bash
si vous voulez forcerbash
ou pouvoir passer des options au shell.cd directory
exit
pour quitter le nouveau shell. Il est important de ne pas l'oublier car vous ne voulez pas exécuter plus d'actions en tant que root que vous ne le souhaitez!Donc, si vous le souhaitez, vous pouvez alors écrire une fonction shell (ou un script) qui effectue les deux premières de ces actions lorsque
sudo
est suivi decd
et s'exécutesudo
normalement normalement. Veuillez ne pas utiliser ceci comme une alternative à l’apprentissage de la raison pour laquelle voussudo cd
ne réussissez pas autrement , car si vous ne comprenez pas ce qui se passe, vous serez probablement très confus en étant dans un nouveau shell (et vous risquez de ne pas comprendre les messages d’erreur). qui se produisent).Voici un moyen d'écrire une telle fonction shell, qui vous rappelle également que vous êtes dans un nouveau shell et que vous devriez le
exit
quitter lorsque vous avez terminé. (Ce rappel est susceptible d'être utile pour les utilisateurs de tout niveau de compétence, parce que l' on est généralement pas l' habitude d'être dans une nouvelle coque quand on courtsudo
sans-s
,-i
ou le nom d'une coquille réelle comme argument.)Vous pouvez le mettre dans votre
~/.bashrc
, bien que ce soit une façon assez étrange de l'utilisersudo
, vous voudrez peut-être seulement l'activer occasionnellement. Dans ce cas, il est préférable de le mettre dans son propre fichier. Si vous créez un fichier appelésudo.bash
dans votre répertoire de base avec ce contenu, vous pouvez alors rendre lasudo
fonction disponible - afin qu'elle s'exécute au lieu de lasudo
commande normale - en exécutant. ~/sudo.bash
. Cela prend effet dans le shell actuel et ses shell enfants, mais pas les autres. Pour la même raison que des fichiers tels que.bashrc
ne sont pas exécutables, ne marquez passudo.bash
exécutable avecchmod
. Il s’agit vraiment d’une bibliothèque plutôt que d’un script shell autonome. Si vous avez faitl'exécuter en tant que script shell, il définirait la fonction ... mais uniquement dans le shell qui a exécuté le script, pas pour vous en tant qu'appelant. (Bien sûr, vous pouvez écrire un script pour cela, ce n'est tout simplement pas l'approche que j'ai adoptée ici.)Pour vérifier et voir si
sudo
est actuellement définie en tant que fonction shell et pour voir sa définition actuelle, le cas échéant, exécuteztype sudo
. Pour désactiver (c'est-à-dire annuler la définition) la fonction une fois définie, exécutezunset -f sudo
. Pour exécuter manuellement lasudo
commande standard directement, même si la fonction shell est définie, exécutezcommand sudo
. Notez, cependant, que vous ne devez le faire, parce que cettesudo
fonction ne fait que lui - même chaque fois qu'il ya plus ou moins de deux arguments passés ou le premier argument passé à c'est tout saufcd
. C'est pourquoi vous pouvez toujours l'utiliser de la manière habituellesudo
.Notez aussi que la fonction shell montrée ci-dessus vous permet toujours de passer d'autres arguments à
sudo
, mais cela l'empêchera de traitercd
spécialement . L'exécution en particulier n'est pas prise en charge, bien que vous puissiez étendre la fonction shell pour prendre en charge ce cas. Ni est . Le shell qu'il crée est similaire à ce que vous obtenez . Le code ne s'exécute pas réellement , mais utilise , donc l' option fonctionne correctement. En fait, il s'exécute deux fois lorsque vous passez un argument de répertoire (et zéro fois sinon). Lorsque vous l'exécutez , il crée d'abord un shell bash distinct de celui dans lequel vous exécutez la fonction et change le répertoire. Si cela réussit, il remplacesudo -u user cd directory
sudo -i cd directory
sudo -s
sudo -s
sudo bash
-c
bash
cd
sudo cd directory
sudo
ce shell bash avec un nouveau, interactif que vous pouvez utiliser.Voici un exemple de la façon dont ce shell fonctionne automatiquement "fait la bonne chose". Notez que
sudo ls -A /root
se comporte normalement. Un nouveau shell est alors créé uniquement lorsque je tente d' accédercd
à un répertoiresudo
, et on me rappelle explicitement ce qui se passe.Si vous essayez d'
sudo cd
accéder à un répertoire que vous ne pouvez pas modifier même en tant que root, vous obtiendrez simplement un message d'erreur:J'ai utilisé
sudo -k
entre les appels dans les exemples ci-dessus pour montrer qu'il vous authentifie en tant que root avant de tenter de changer de répertoire. Mais vous n'êtes pas obligé de courirsudo -k
vous-même. Comme la fonction shell n’est qu’un cache-cache pour lasudo
commande réelle , la mise en cache de vos informations d’identité et d’autressudo
comportements courants fonctionne toujours normalement.Bien que cela fonctionne bien et qu’il soit plutôt ordonné, j’admets que masquer la vraie
sudo
commande avec une fonction du même nom est très bizarre. La plupart des utilisateurs voudront probablement exécuter les étapes euxsudo -s
- mêmes. Mais au cas où quelqu'un le voudrait - et aussi pour démontrer que c'était possible - le voilà.cd directory
la source
En ce qui concerne le fait de
su
ne passu
débattre, je pense que c'est idiot.su
est contre la religion d'Ubuntu et ce n'est pas quelque chose à faire négligemment. C'est incroyable ce que l'rm -rf *
on peut faire si vous êtes root. Toutefois, si vous êtes à l'aise avec l'interface de ligne de commande et que vous devez effectuer des tâches au niveau du système, il n'y a aucune raison de ne pas l'utilisersu
. J'ai utilisé plusieurs distributions dont personne n'a même parlésudo
. Tout dépend du type de travail que vous faites et de la méthode avec laquelle vous êtes le plus à l'aise. J'utilise les deux.la source
sudo
moi avons avec kubuntu lucid,sudo cd
fonctionne maintenant - sans aucune solution de contournement." À part quelque chose comme ça , qui, je suis sûr, n’a jamais été dans Ubuntu par défaut, je ne vois pas comment. (En outre, j'ai utilisé 10.04; il ne l'a pas fait.) Cela fait des années que vous avez posté ceci, mais vous souvenez-vous des détails? Çasudo cd
marche toujours pour toi? Quelle est la sortie detype -a sudo
dans un shell où cela fonctionne? Je comprends que vous ne le sachiez peut-être pas - et la deuxième partie de votre réponse reste pertinente - mais si vous le faites, vous pouvez le modifier .