Je voudrais créer un alias qui fait quelque chose comme ceci:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Donc, depuis ma ligne de commande, je suis connecté avec un utilisateur sudo, et je voudrais taper l'alias userYYY
pour que mon shell soit maintenant connecté avec userYYY
et l' pwd
est /a/path/that/only/userYYY/has/access
.
Comment puis je faire ça? C'est userYYY
pour exécuter certains processus, et il doit y avoir quelque chose dans sa maison. Par conséquent, j'ai essayé de changer son $ HOME en utilisant:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
Et puis à partir de mon shell avec mon fichier sudoer je l'ai fait sudo su userYYY
. Mais cela n'a pas fonctionné. Le seul qui a fonctionné a été, sudo su -l userYYYY
mais cela a ouvert une nouvelle bash à l'intérieur de mon shell d'origine ( -bash-4.1$ ....
).
En résumé, ce que je veux, c'est simplement éviter d'avoir à écrire 2 lignes dans mon shell:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
Des idées?
bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
.bashrc
fichier à cesudo
momentcd
là où le fait d'avoir 2 lignes séparées ne fonctionnait pasUne option serait de modifier
~/.bashrc
l'utilisateur cible et d'cd
y ajouter :la source
Réponse courte - vous ne pouvez pas. Le
sudo su
démarre un nouveau shell qui doit quitter avant d'arriver à lacd
commande.la source
Pour moi, une combinaison de
sudo
etscreen
travaillé:Cette commande passe d'abord à l'
vagrant
utilisateur. Puis commevagrant
change le répertoire/vagrant
et s'exécutenpm install
.la source
Je sais que cela est légèrement différent de la question d'origine, mais l'idée est d'exécuter la commande en tant qu'utilisateur différent sans taper de mot de passe lorsque la stratégie l'interdit
sudo su <user> -c
.la source