Wie kann ich gleich danach sudo su und das Verzeichnis wechseln?


13

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 userYYYso eingeben , dass meine Shell jetzt angemeldet ist userYYYund pwdist /a/path/that/only/userYYY/has/access.

Wie kann ich das machen? Dies userYYYdient 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 userYYYYaber 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?

Antworten:


10
alias userYYY='sudo su userYYY -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"'

scheint gut zu funktionieren, ist sich aber nicht sicher, wie dieser Fehler behoben werden kann oder ob es sich um ein Problem handelt. mit ubuntu 14.04LTS, bemerkte, dass es ein Problem mit auf debian gab ...bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
sonjz

1
tatsächlich, nachdem ich es für eine Weile benutzt hatte, bemerkte ich, dass das Terminal mit dieser Methode ziemlich häufig getötet wird (Trennen ca. 15-30 Minuten, regelmäßig, mein Terminal dauert ca. 6 Stunden vor dem Trennen)
sonjz

Einfach ausgegraben, dieses Verhalten ist auf einen Sicherheitsupdate zurückzuführen: unix.stackexchange.com/questions/65843/…
sonjz

das hat mir geholfen , meine bearbeiten .bashrcDatei sudodann , cdwenn als mit 2 getrennten Linien wurde einfach nicht funktioniert.
RozzA

2

Eine Möglichkeit wäre, den Zielbenutzer zu bearbeiten ~/.bashrcund dort hinzuzufügen cd:

cd /a/path/that/only/userYYY/has/access

0

Kurze Antwort - das kannst du nicht. Das sudo sustartet eine neue Shell, die beendet werden muss, bevor sie zum cdBefehl gelangt.


0

Für mich eine Kombination aus sudound screenausgearbeitet:

sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'

Dieser Befehl wechselt zuerst zum vagrantBenutzer. Dann vagrantändert sich das Verzeichnis in /vagrantund wird ausgeführt npm install.


0

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.

sudo -u userYYY -- sh -c "cd /a/path/that/only/userYYY/has/access; /bin/bash"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.