Ich möchte einen Alias erstellen, der ungefähr so funktioniert:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Von meiner Befehlszeile aus bin ich mit einem Sudo-Benutzer angemeldet und möchte den Alias userYYY
so eingeben , dass meine Shell jetzt angemeldet ist userYYY
und pwd
ist /a/path/that/only/userYYY/has/access
.
Wie kann ich das machen? Dies userYYY
dient zum Ausführen einiger Prozesse, und es muss sich etwas in seiner Heimat befinden. Daher habe ich versucht, sein $ HOME zu ändern, indem ich:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
Und dann von meiner Shell mit meiner Sudoer-Datei habe ich getan sudo su userYYY
. Aber das hat nicht funktioniert. Das einzige, was funktionierte, war, sudo su -l userYYYY
aber das öffnete eine neue Bash in meiner ursprünglichen Shell ( -bash-4.1$ ....
).
Zusammenfassend möchte ich einfach vermeiden, dass 2 Zeilen in meine Shell geschrieben werden müssen:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
Irgendwelche Ideen?
bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
.bashrc
Dateisudo
dann ,cd
wenn als mit 2 getrennten Linien wurde einfach nicht funktioniert.Eine Möglichkeit wäre, den Zielbenutzer zu bearbeiten
~/.bashrc
und dort hinzuzufügencd
:quelle
Kurze Antwort - das kannst du nicht. Das
sudo su
startet eine neue Shell, die beendet werden muss, bevor sie zumcd
Befehl gelangt.quelle
Für mich eine Kombination aus
sudo
undscreen
ausgearbeitet:Dieser Befehl wechselt zuerst zum
vagrant
Benutzer. Dannvagrant
ändert sich das Verzeichnis in/vagrant
und wird ausgeführtnpm install
.quelle
Ich weiß, dass dies etwas anders ist als die ursprüngliche Frage, aber die Idee ist, den Befehl als ein anderer Benutzer auszuführen, ohne ein Kennwort einzugeben, wenn die Richtlinie dies verbietet
sudo su <user> -c
.quelle