Wie führe ich beim Anmelden einen Befehl für einen Systembenutzer ohne Home-Ordner und ohne persönliche .bashrc-Datei aus?

Wie führe ich beim Anmelden einen Befehl für einen Systembenutzer ohne Home-Ordner und ohne persönliche .bashrc-Datei aus?

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 .bashrcDatei hätten, würde ich den Befehl einfach dort einfügen activateund den Verzeichniswechsel als Post-Activate-Hook mit virtueller Umgebung durchführen.

Diese Benutzer haben jedoch keine Home-Ordner und keine persönlichen .bashrcDateien.

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.denthält , für den Sie die Ausführung durchführen möchten .if/thenvirtualenv

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~/.environmentim 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_execzum 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.

verwandte Informationen