Il y a deux utilisateurs sur mon mac : moi (user1, administrateur), et
user2 non admin.
Si, ayant ouvert une session comme user1, je tape dans le terminal :
cd /Users/user2
sudo cd Documents
puis mon mot de passe admin
j'obtiens le message :
sudo: cd: command not found
Par contre :
sudo ls Documents
fonctionne normalement
Éric Lévénez wrote in message news:<BC381B27.66CE8%...
ls est un programme unix. "cd" est une commande interne au shell (comme "for" par exemple), et pas une commande unix. On ne peut faire un "sudo cd", ou un "exec cd". Le message d'erreur est clair "command not found" : ce n'est pas une commande unix.
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question. Avec sudo tu exécutes un programme en changeant d'identité. Après, ce que tu exécutes n'est pas forcément un shell, alors chaque programme aura ses commandes internes. Si tu lances le programme X avec sudo, ses commandes internes disponibles. Mais il ne faut pas que tu oublies que lancer un programme, c'est lancé un fils et donc lancé un nouveau contexte. Et dans un nouveau contexte on ne peut modifier un autre contexte (comme le répertoire de travail, les variables...).
Exemple :
sudo sh -c "cd / ; pwd"
Cette commande lance un shell en root. Ce shell va exécuter les commandes données en arguments, c'est-à-dire changer de répertoire et afficher où il se trouve. Il faut remarquer que le répertoire courant a été changé en / pour la commande lancée par sudo (c'est-à-dire sh), mais le répertoire courant du shell interactif reste inchangé :
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 25/01/04 14:30, dans <df8aa16d.0401250530.6a654e8b@posting.google.com>,
« herve » <herve.nospam@tiscali.fr> a écrit :
Éric Lévénez <news@levenez.com> wrote in message
news:<BC381B27.66CE8%news@levenez.com>...
ls est un programme unix. "cd" est une commande interne au shell (comme
"for" par exemple), et pas une commande unix. On ne peut faire un "sudo cd",
ou un "exec cd". Le message d'erreur est clair "command not found" : ce
n'est pas une commande unix.
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question. Avec sudo tu exécutes un programme en
changeant d'identité. Après, ce que tu exécutes n'est pas forcément un
shell, alors chaque programme aura ses commandes internes. Si tu lances le
programme X avec sudo, ses commandes internes disponibles. Mais il ne faut
pas que tu oublies que lancer un programme, c'est lancé un fils et donc
lancé un nouveau contexte. Et dans un nouveau contexte on ne peut modifier
un autre contexte (comme le répertoire de travail, les variables...).
Exemple :
sudo sh -c "cd / ; pwd"
Cette commande lance un shell en root. Ce shell va exécuter les commandes
données en arguments, c'est-à-dire changer de répertoire et afficher où il
se trouve. Il faut remarquer que le répertoire courant a été changé en /
pour la commande lancée par sudo (c'est-à-dire sh), mais le répertoire
courant du shell interactif reste inchangé :
Éric Lévénez wrote in message news:<BC381B27.66CE8%...
ls est un programme unix. "cd" est une commande interne au shell (comme "for" par exemple), et pas une commande unix. On ne peut faire un "sudo cd", ou un "exec cd". Le message d'erreur est clair "command not found" : ce n'est pas une commande unix.
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question. Avec sudo tu exécutes un programme en changeant d'identité. Après, ce que tu exécutes n'est pas forcément un shell, alors chaque programme aura ses commandes internes. Si tu lances le programme X avec sudo, ses commandes internes disponibles. Mais il ne faut pas que tu oublies que lancer un programme, c'est lancé un fils et donc lancé un nouveau contexte. Et dans un nouveau contexte on ne peut modifier un autre contexte (comme le répertoire de travail, les variables...).
Exemple :
sudo sh -c "cd / ; pwd"
Cette commande lance un shell en root. Ce shell va exécuter les commandes données en arguments, c'est-à-dire changer de répertoire et afficher où il se trouve. Il faut remarquer que le répertoire courant a été changé en / pour la commande lancée par sudo (c'est-à-dire sh), mais le répertoire courant du shell interactif reste inchangé :
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
herve.nospam
Éric Lévénez wrote in message news:<BC398CF8.66F25%...
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question.
Essayons d'être plus précis : je suis user1, et je veux aller me balader dans les sous-dossiers de /Users/user2. Comme je n'ai pas le droit de le faire en tant qu'user1, j'espérais pouvoir le faire en tant que root temporaire.
Hervé
Éric Lévénez <news@levenez.com> wrote in message news:<BC398CF8.66F25%news@levenez.com>...
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question.
Essayons d'être plus précis : je suis user1, et je veux aller me
balader dans les sous-dossiers de /Users/user2. Comme je n'ai pas le
droit de le faire en tant qu'user1, j'espérais pouvoir le faire en
tant que root temporaire.
Éric Lévénez wrote in message news:<BC398CF8.66F25%...
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question.
Essayons d'être plus précis : je suis user1, et je veux aller me balader dans les sous-dossiers de /Users/user2. Comme je n'ai pas le droit de le faire en tant qu'user1, j'espérais pouvoir le faire en tant que root temporaire.
Hervé
Jacques Perrocheau
In article <1g83cps.1ykovhqm7k2xkN%, (JPaul) wrote:
Je te l'accorde (mais plus long à taper ;-)
Et bien non, après réflexion, je ne te l'accorde pas ;->
Un ^D pour terminer un shell est parfaitement correct et propre. [snip]
Merci pour ce précisions...
-- Jacques PERROCHEAU Synthèse et Electrosynthèse Organiques, C.N.R.S. UMR 6510 Université de Rennes I, Campus de Beaulieu, F-35042 RENNES Cedex Tel: +33 2 23 23 63 74, Fax: +33 2 23 23 63 74
In article <1g83cps.1ykovhqm7k2xkN%blanc@empty.org>,
blanc@empty.org (JPaul) wrote:
Je te l'accorde (mais plus long à taper ;-)
Et bien non, après réflexion, je ne te l'accorde pas ;->
Un ^D pour terminer un shell est parfaitement correct et propre.
[snip]
Merci pour ce précisions...
--
Jacques PERROCHEAU
Synthèse et Electrosynthèse Organiques, C.N.R.S. UMR 6510
Université de Rennes I, Campus de Beaulieu, F-35042 RENNES Cedex
Tel: +33 2 23 23 63 74, Fax: +33 2 23 23 63 74
In article <1g83cps.1ykovhqm7k2xkN%, (JPaul) wrote:
Je te l'accorde (mais plus long à taper ;-)
Et bien non, après réflexion, je ne te l'accorde pas ;->
Un ^D pour terminer un shell est parfaitement correct et propre. [snip]
Merci pour ce précisions...
-- Jacques PERROCHEAU Synthèse et Electrosynthèse Organiques, C.N.R.S. UMR 6510 Université de Rennes I, Campus de Beaulieu, F-35042 RENNES Cedex Tel: +33 2 23 23 63 74, Fax: +33 2 23 23 63 74
Éric Lévénez
Le 26/01/04 9:21, dans , « herve » a écrit :
Éric Lévénez wrote in message news:<BC398CF8.66F25%...
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question.
Essayons d'être plus précis : je suis user1, et je veux aller me balader dans les sous-dossiers de /Users/user2. Comme je n'ai pas le droit de le faire en tant qu'user1, j'espérais pouvoir le faire en tant que root temporaire.
Ah, ok, alors :
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la question cette fois ? :-)
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 26/01/04 9:21, dans <df8aa16d.0401260021.69ef33dd@posting.google.com>,
« herve » <herve.nospam@tiscali.fr> a écrit :
Éric Lévénez <news@levenez.com> wrote in message
news:<BC398CF8.66F25%news@levenez.com>...
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question.
Essayons d'être plus précis : je suis user1, et je veux aller me
balader dans les sous-dossiers de /Users/user2. Comme je n'ai pas le
droit de le faire en tant qu'user1, j'espérais pouvoir le faire en
tant que root temporaire.
Ah, ok, alors :
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes
internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la
question cette fois ? :-)
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Éric Lévénez wrote in message news:<BC398CF8.66F25%...
Donc on ne peut pas "forcer" via root l'éxécution des commandes internes ?
Je ne comprends pas la question.
Essayons d'être plus précis : je suis user1, et je veux aller me balader dans les sous-dossiers de /Users/user2. Comme je n'ai pas le droit de le faire en tant qu'user1, j'espérais pouvoir le faire en tant que root temporaire.
Ah, ok, alors :
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la question cette fois ? :-)
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
herve.nospam
Éric Lévénez wrote in message news:<BC3ABC7C.670A5%...
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la question cette fois ? :-)
Bien compris et bien répondu. Effectivement je deviens root et peux faire ce que je veux. Quel est le "timeout" par défaut dans MacOS X et que se passe-t-il au bout de ce temps ? Le shell quitte tout seul ?
Hervé
Éric Lévénez <news@levenez.com> wrote in message news:<BC3ABC7C.670A5%news@levenez.com>...
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes
internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la
question cette fois ? :-)
Bien compris et bien répondu. Effectivement je deviens root et peux
faire ce que je veux.
Quel est le "timeout" par défaut dans MacOS X et que se passe-t-il au
bout de ce temps ? Le shell quitte tout seul ?
Éric Lévénez wrote in message news:<BC3ABC7C.670A5%...
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la question cette fois ? :-)
Bien compris et bien répondu. Effectivement je deviens root et peux faire ce que je veux. Quel est le "timeout" par défaut dans MacOS X et que se passe-t-il au bout de ce temps ? Le shell quitte tout seul ?
Hervé
Éric Lévénez
Le 26/01/04 19:09, dans , « herve » a écrit :
Éric Lévénez wrote in message news:<BC3ABC7C.670A5%...
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la question cette fois ? :-)
Bien compris et bien répondu. Effectivement je deviens root et peux faire ce que je veux.
Au lieu de "sudo -s" on peut faire "sudo bash", "sudo tcsh"... pour choisir son shell. On peut aussi modifier la variable SHELL.
Quel est le "timeout" par défaut dans MacOS X et que se passe-t-il au bout de ce temps ? Le shell quitte tout seul ?
Non il n'y a pas de timeout dans ce que lance sudo. Par contre on peut mettre un timeout dans certains shells, mais c'est indépendant de sudo. Par exemple sous bash : "TMOUT`" va délogger l'utilisateur (arrêt du shell) s'il ne fait rien pendant 60 secondes.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 26/01/04 19:09, dans <df8aa16d.0401261009.79ddc31d@posting.google.com>,
« herve » <herve.nospam@tiscali.fr> a écrit :
Éric Lévénez <news@levenez.com> wrote in message
news:<BC3ABC7C.670A5%news@levenez.com>...
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes
internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la
question cette fois ? :-)
Bien compris et bien répondu. Effectivement je deviens root et peux
faire ce que je veux.
Au lieu de "sudo -s" on peut faire "sudo bash", "sudo tcsh"... pour choisir
son shell. On peut aussi modifier la variable SHELL.
Quel est le "timeout" par défaut dans MacOS X et que se passe-t-il au
bout de ce temps ? Le shell quitte tout seul ?
Non il n'y a pas de timeout dans ce que lance sudo. Par contre on peut
mettre un timeout dans certains shells, mais c'est indépendant de sudo. Par
exemple sous bash : "TMOUT`" va délogger l'utilisateur (arrêt du shell)
s'il ne fait rien pendant 60 secondes.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Éric Lévénez wrote in message news:<BC3ABC7C.670A5%...
sudo -s
Ça te lance un shell (un programme), et là tu peux utiliser ses commandes internes (comme cd) qui sont spécifiques au shell lancé. Ai-je compris la question cette fois ? :-)
Bien compris et bien répondu. Effectivement je deviens root et peux faire ce que je veux.
Au lieu de "sudo -s" on peut faire "sudo bash", "sudo tcsh"... pour choisir son shell. On peut aussi modifier la variable SHELL.
Quel est le "timeout" par défaut dans MacOS X et que se passe-t-il au bout de ce temps ? Le shell quitte tout seul ?
Non il n'y a pas de timeout dans ce que lance sudo. Par contre on peut mettre un timeout dans certains shells, mais c'est indépendant de sudo. Par exemple sous bash : "TMOUT`" va délogger l'utilisateur (arrêt du shell) s'il ne fait rien pendant 60 secondes.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Nicolas.MICHEL
herve wrote:
Pourquoi faut-il y ajouter un sudo ? D'après man su, il me semble que "su user2" devrait suffire. Or effectivement ça ne marche pas, car après avoir entré le mot de passe de user2, j'obtiens la réponse : su : Sorry
sauf erreur, le sorry vient de ce que tu n'est pas dans un dossier lisible par user2. Mais le su s'est tout de même effectué. Tu peux faire un "id" pour vérifier, puis un "cd" pour allez chez user2.
-- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
herve <herve.nospam@tiscali.fr> wrote:
Pourquoi faut-il y ajouter un sudo ?
D'après man su, il me semble que "su user2" devrait suffire.
Or effectivement ça ne marche pas, car après avoir entré le mot de
passe de user2, j'obtiens la réponse :
su : Sorry
sauf erreur, le sorry vient de ce que tu n'est pas dans un dossier
lisible par user2. Mais le su s'est tout de même effectué. Tu peux faire
un "id" pour vérifier, puis un "cd" pour allez chez user2.
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas
Pourquoi faut-il y ajouter un sudo ? D'après man su, il me semble que "su user2" devrait suffire. Or effectivement ça ne marche pas, car après avoir entré le mot de passe de user2, j'obtiens la réponse : su : Sorry
sauf erreur, le sorry vient de ce que tu n'est pas dans un dossier lisible par user2. Mais le su s'est tout de même effectué. Tu peux faire un "id" pour vérifier, puis un "cd" pour allez chez user2.
-- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
herve.nospam
(Nicolas MICHEL) wrote in message news:<1g89m2p.1sjdl1i1rkp7u2N%...
Mais le su s'est tout de même effectué. Tu peux faire un "id" pour vérifier, puis un "cd" pour allez chez user2.
Effectivement ça marche, merci.
Hervé
Nicolas.MICHEL@BonBon.net (Nicolas MICHEL) wrote in message news:<1g89m2p.1sjdl1i1rkp7u2N%Nicolas.MICHEL@BonBon.net>...
Mais le su s'est tout de même effectué. Tu peux faire
un "id" pour vérifier, puis un "cd" pour allez chez user2.