Ich lege die Home-Ordner dieser Benutzer über die Datei /etc/passwd fest, aber wenn sie sich anmelden, möchte ich, dass sie eine virtuelle Python-Umgebung aktivieren. Wenn sie eine persönliche .bashrc
Datei hätten, würde ich den Befehl einfach dort einfügen activate
und den Verzeichniswechsel als Post-Activate-Hook mit virtueller Umgebung durchführen.
Diese Benutzer haben jedoch keine Home-Ordner und keine persönlichen .bashrc
Dateien.
Wie kann ich beim Anmelden für jeden dieser Benutzer einen anderen Befehl ausführen? (Es muss nur ein Befehl ausgeführt werden.)
Diese Benutzer sind nur über angemeldet su
, niemals über SSH. Der Computer ist ein VPS mit Ubuntu 12.04.3 LTS.
Antwort1
Sie können dem Systemverzeichnis eine Datei hinzufügen , die eine Anweisung für jeden Benutzer /etc/profiile.d
enthält , für den Sie die Ausführung durchführen möchten .if/then
virtualenv
Beispiel
Angenommen, ich erstelle eine Datei wie diese /etc/profile.d/me.sh
.
if [ "$USER" == "saml" ]; then
touch /tmp/samsfile
fi
Machen Sie es ausführbar:
$ chmod +x /etc/profile.d/me.sh
Und melden Sie sich dann als an saml
, indem Sie Folgendes verwenden su
:
$ su saml
Wenn wir prüfen, ob die temporäre Datei erstellt wurde, lautet sie:
$ ls -l /tmp/samsfile
-rw-rw-r-- 1 saml saml 0 Oct 14 00:31 /tmp/samsfile
Antwort2
Wenn Sie lediglich Umgebungsvariablen definieren möchten, können Sie diese in~/.environment
im Home-Verzeichnis der Benutzer. Sie können komplexere Shell-Snippets darin ablegen ~/.profile
.
Alle Benutzerkonten haben ein Home-Verzeichnis, auch wenn es ihnen nicht gehört. Sie können zwar Konten haben, deren Home-Verzeichnis nicht existiert, aber das ist nicht sehr sinnvoll. Sie können ein einzelnes Verzeichnis, das root gehört, als Home-Verzeichnis dieser Benutzer verwenden, wenn Sie möchten.
Eine weitere Möglichkeit, einen Befehl beim Anmelden auszuführen, wäre das Hinzufügenpam_exec
zum PAM-Stack. Aber seien Sie sich bewusst, dass dies ziemlich schwierig zu verwenden ist, da das Programm alsOriginalBenutzer oder als Root und nicht als Zielbenutzer, und es wird in der vom ursprünglichen Benutzer gewählten Umgebung ausgeführt. Daher ist es schwierig, es sicher zu machen, wenn es als Root ausgeführt wird.