Inhaltsverzeichnis
xrdp ArchLinux
xrdp akzeptiert Verbindungen von einer Vielzahl von RDP-Clients: FreeRDP, rdesktop, NeutrinoRDP und Microsoft™ Remote Desktop Client (für Windows™, macOS, iOS und Android). Der RDP-Transport wird standardmäßig mit TLS verschlüsselt.
* Quellen
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
Voraussetzungen
Es soll als Grundlage eine Installation in den Varianten:
oder
und die zusätzlich noch benötigten Installationen für das
durchgeführt werden, auf die dann aufbauend die noch benötigte Installation für eine grafische Benutzeroberfläche, hier z.B.
sukzessive durchgeführt werden soll.
Installation
Zur Installation von xrdp wird vorerst nur nachfolgendes Pakete benötigt:
HINWEIS - Beim Paket xrdp-bin-git
wurde die Abhängigkeit vom Paket tigervnc
auf tigervnc-server
abgeändert! (Funktioniert aber teilweise nicht)
Mit nachfolgendem Befehl, wird das Paket xrdp-bin-git
installiert:
# pikaur -S --noconfirm --mflags=--skippgpcheck xrdp xorgxrdp
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket xrdp
installiert wurden:
# pacman -Qil xrdp
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket xorgxrdp
installiert wurden:
# pacman -Qil xorgxrdp
iptables Regel
Damit der xrdp-Dienst/Daemon auch erreichbar ist und nicht die Remote-Desktop-Verbindung vom Paketfilter iptables
blockiert wird, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 1562 1266K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 39 1248 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgender Befehl, fügt folgende iptables
-Regel dem iptables
-Regelwerk nach der Position 5 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 3389 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -p tcp --dport 3389 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 70 5752 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3389 6 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Die neue Zeile ist an Position 5 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# iptables-save > /etc/iptables/iptables.rules
Konfiguration
~/.xinitrc
Die Installation von ArchLinux inklusive der genannten xrdp ArchLinux - Voraussetzungen inklusive des ArchLinux - Minimal Desktop GNOME, beinhaltet auch die Installation des GDM (Gnome Dsiplay Managers).
Der genannte GDM (Gnome Display Managers) verwendet jedoch nicht die nachfolgenden Konfigurationsdateien
/etc/X11/xinit/xinitrc
~/.xinitrc
(~/
steht für dashome
-Verzeichnis des jeweiligen Benutzers)
sondern eigene gesonderte Mechanismen, nach dem Starten den GNOME-Desktop mittels gnome-session
zu starten.
Da aber unter xrdp ein Start-Skript den Start des Window-Managers übernimmt, ist es ratsam und nachfolgend auch erforderlich eine Kopie der Konfigurationsdatei
/etc/X11/xinit/xinitrc
in das home
-Verzeichnis des jeweiligen Benutzers, welcher sich via RDP (Remote Desktop Prtocol verbinden soll, mit nachfolgendem Dateinamen
~/.xinitrc
zu kopieren, ohne das dies das Startverhalten mittels GDM (Gnome Dsiplay Managers) beeinflusst.
Dies kann mit nachfolgendem Befehl hier z.B. für den
- Benutzer
-o klaus
, welcher in der - Gruppe
-g klaus
ist und diese Besitzrechte sollen aus so gesetzt werden, mit den - Dateirechten
-m 644
und mit - Erhalt des Zeitstempel der original Datei
-p
wie folgt durchgeführt werden:
# install -o klaus -g klaus -m 644 -p -v /etc/X11/xinit/xinitrc /home/klaus/.xinitrc '/etc/X11/xinit/xinitrc' -> '/home/klaus/.xinitrc'
Ob das Kopieren erfolgreich durchgeführt wurde, kann mit nachfolgendem Befehl überprüft werden:
# ls -l /home/klaus/.xinitrc -rw-r--r-- 1 klaus klaus 739 Oct 10 16:27 /home/klaus/.xinitrc
Anschließend sind nun in der so neu entstandenen Konfigurationsdatei nachfolgende Änderungen durchzuführen:
Vorher (Nur relevanter Ausschnitt):
twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login
Nachher (Nur relevanter Ausschnitt):
# Tachtler - disabled - # twm & # xclock -geometry 50x50-1+1 & # xterm -geometry 80x50+494+51 & # xterm -geometry 80x20+494-0 & # exec xterm -geometry 80x66+0+0 -name login # Tachtler - new - export XDG_SESSION_TYPE=x11 export GDK_BACKEND=x11 exec gnome-session
HINWEIS - Die so erzeugt und geänderte Konfigurationsdatei ~/.xinitrc
wird nun vom Skript
/etc/xrdp/startwm.sh
gefunden und zum Starten des GNOME-Desktop verwendet.
/etc/xrdp/km-00000000.ini
Damit beim Anmeldebildschirm von xrdp auch eine hier Deutsche Tastaturbelegung - (keyboard layout) zur Verfügung steht, ist nachfolgende Konfiguration durchzuführen.
Die Deutsche Tastaturbelegung - (keyboard layout) ist bereits im Paket xrdp-bin-git
enthalten und ist in nachfolgendem Verzeichnis mit nachfolgendem Dateinamen:
/etc/xrdp/km-00000407.ini
zu finden.
Da beim Starten von xrdp nach einer Datei in nachfolgendem Verzeichnis mit nachfolgendem Namen
/etc/xrdp/km-00000000.ini
gesucht wird und diese Tastaturbelegung - (keyboard layout) dann auch beim xrdp verwendet wird, kann mit nachfolgendem Befehl einfach das Deutsche Tastaturbelegung - (keyboard layout) - kopiert werden und somit die Deutsche Tastaturbelegung - (keyboard layout) eingestellt werden:
# cp -a /etc/xrdp/km-00000407.ini /etc/xrdp/km-00000000.ini
Ob das Kopieren erfolgreich durchgeführt wurde, kann mit nachfolgendem Befehl überprüft werden:
# ls -l /etc/xrdp/km-00000000.ini -rw-r--r-- 1 root root 10943 Jan 24 07:23 /etc/xrdp/km-00000000.ini
/etc/xrdp/xrdp.ini
Nachfolgende Änderungen sind rein parktischer und kosmetischer Art. Nachfolgend sollen alle möglichen Verbindungsarten aus dem Menüfenster ausgebledet werden, welche nicht genutz werden (können).
Dazu sind nachfolgende Zeilen in der Konfigurationsdatei
/etc/xrdp/xrdp.ini
auszukommentieren/dekativieren:
Vorher (Nur relevanter Ausschnitt):
; Some session types such as Xorg, X11rdp and Xvnc start a display server. ; Startup command-line parameters for the display server are configured ; in sesman.ini. See and configure also sesman.ini. [Xorg] name=Xorg lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1 code=20 [Xvnc] name=Xvnc lib=libvnc.so username=ask password=ask ip=127.0.0.1 port=-1 #xserverbpp=24 #delay_ms=2000 ; Disable requested encodings to support buggy VNC servers ; (1 = ExtendedDesktopSize) #disabled_encodings_mask=0 [vnc-any] name=vnc-any lib=libvnc.so ip=ask port=ask5900 username=na password=ask #pamusername=asksame #pampassword=asksame #pamsessionmng=127.0.0.1 #delay_ms=2000 [neutrinordp-any] name=neutrinordp-any lib=libxrdpneutrinordp.so ip=ask port=ask3389 username=ask password=ask ; You can override the common channel settings for each session type #channel.rdpdr=true #channel.rdpsnd=true #channel.drdynvc=true #channel.cliprdr=true #channel.rail=true
Nachher (Nur relevanter Ausschnitt):
; Some session types such as Xorg, X11rdp and Xvnc start a display server. ; Startup command-line parameters for the display server are configured ; in sesman.ini. See and configure also sesman.ini. [Xorg] name=Xorg lib=libxup.so username=ask password=ask ip=127.0.0.1 port=-1 code=20 [Xvnc] name=Xvnc lib=libvnc.so username=ask password=ask ip=127.0.0.1 port=-1 #xserverbpp=24 #delay_ms=2000 ; Disable requested encodings to support buggy VNC servers ; (1 = ExtendedDesktopSize) #disabled_encodings_mask=0 [vnc-any] name=vnc-any lib=libvnc.so ip=ask port=ask5900 username=na password=ask #pamusername=asksame #pampassword=asksame #pamsessionmng=127.0.0.1 #delay_ms=2000 # Tachtler - disabled - #[neutrinordp-any] #name=neutrinordp-any #lib=libxrdpneutrinordp.so #ip=ask #port=ask3389 #username=ask #password=ask ; You can override the common channel settings for each session type #channel.rdpdr=true #channel.rdpsnd=true #channel.drdynvc=true #channel.cliprdr=true
Daemons/Dienste einrichten
Um einen xrdp, welcher als Dienste/Deamons als Hintergrundprozesse laufen, auch nach einem Neustart des Servers zur Verfügung zu haben, sollen die Dienste/Daemons mit dem Server mit gestartet werden, was mit nachfolgendem Befehl eingerichtet werden kann:
# systemctl enable xrdp.service xrdp-sesman.service Created symlink /etc/systemd/system/multi-user.target.wants/xrdp.service → /usr/lib/systemd/system/xrdp.service. Created symlink /etc/systemd/system/multi-user.target.wants/xrdp-sesman.service → /usr/lib/systemd/system/xrdp-sesman.service.
Eine Überprüfung, ob beim Neustart der xrdp
-Dienst/Deamon und der xrdp-sesman
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# systemctl list-unit-files --type=service | grep -E ^xrdp xrdp-sesman.service enabled disabled xrdp.service enabled disabled
bzw.
# systemctl is-enabled xrdp xrdp-sesman enabled enabled
Daemons/Dienste starten
Um die benötigten Daemons/Dienste von xrdp zu starten muss der xrdp
-Dienst/Deamon und der xrdp-sesman
-Dienst/Deamon mit nachfolgendem Befehl gestartete werden:
# systemctl start xrdp.service xrdp-sesman.service
Ob die benötigten Daemons/Dienste, sprich der xrdp
-Dienst/Deamon und der xrdp-sesman
-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):
# systemctl status xrdp.service ● xrdp.service - xrdp daemon Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; vendor pres> Active: active (running) since Sun 2021-01-24 10:11:26 CET; 9min ago Docs: man:xrdp(8) man:xrdp.ini(5) Process: 498 ExecStart=/usr/bin/xrdp (code=exited, status=0/SUCCESS) Main PID: 502 (xrdp) Tasks: 1 (limit: 3338) Memory: 2.7M CGroup: /system.slice/xrdp.service └─502 /usr/bin/xrdp Jan 24 10:11:25 vml010 xrdp[498]: [INFO ] address [0.0.0.0] port [3389] mode 1 Jan 24 10:11:25 vml010 xrdp[498]: [INFO ] listening to port 3389 on 0.0.0.0 Jan 24 10:11:25 vml010 xrdp[498]: [INFO ] xrdp_listen_pp done Jan 24 10:11:25 vml010 xrdp[498]: daemon process 502 started ok Jan 24 10:11:25 vml010 systemd[1]: xrdp.service: Can't open PID file /run/xrdp.> Jan 24 10:11:26 vml010 systemd[1]: Started xrdp daemon. Jan 24 10:11:27 vml010 xrdp[502]: [INFO ] starting xrdp with pid 502 Jan 24 10:11:27 vml010 xrdp[502]: [INFO ] address [0.0.0.0] port [3389] mode 1 Jan 24 10:11:27 vml010 xrdp[502]: [INFO ] listening to port 3389 on 0.0.0.0 Jan 24 10:11:27 vml010 xrdp[502]: [INFO ] xrdp_listen_pp done
und
# systemctl status xrdp-sesman.service ● xrdp-sesman.service - xrdp session manager Loaded: loaded (/usr/lib/systemd/system/xrdp-sesman.service; enabled; vend> Active: active (running) since Sun 2021-01-24 10:11:25 CET; 10min ago Docs: man:xrdp-sesman(8) man:sesman.ini(5) Process: 493 ExecStart=/usr/bin/xrdp-sesman (code=exited, status=0/SUCCESS) Main PID: 497 (xrdp-sesman) Tasks: 1 (limit: 3338) Memory: 1.9M CGroup: /system.slice/xrdp-sesman.service └─497 /usr/bin/xrdp-sesman Jan 24 10:11:25 vml010 systemd[1]: Starting xrdp session manager... Jan 24 10:11:25 vml010 xrdp-sesman[497]: [INFO ] starting xrdp-sesman with pid > Jan 24 10:11:25 vml010 systemd[1]: Started xrdp session manager. Jan 24 10:11:25 vml010 xrdp-sesman[497]: [INFO ] listening to port 3350 on 127.>
Zugriff über Linux: vinagre
Nachfolgend soll der Zugriff über Linux und Vinagre durchgeführt werden.
Nach dem Start von Vinagre sollte sich einmalig nachfolgedes Fenster zeigen, in dem die Verbindung zu einem Rechner/Server und dessen Zertifkat zu überprüfen ist.
Wenn hier die Verbindung durch drücken der Schaltfläche [Connect] bestätigt wurde, sollte nachfolgender Bildschirm erscheinen:
Hier kann nun ebenfalls die Schaltfläche [Connect] mit der linken Maustaste ausgewählt werden und nachfolgendes Dialog-Fenster sollte erscheinen:
Hier sind nachfolgende Verbindungseinstellungen durchzuführen
Feld | Wert | Beschreibung |
---|---|---|
Protocol | RDP | Art der Verbindung und des zu verwendenden Protokolls |
Host | 10.0.0.10 | FQDN oder IP-Adresse des Ziel-Servers |
Width | 1024 | Zu verwendende Bildschirmbreite |
Height | 768 | Zu verwendende Bildschirmhöhe |
Anschließend ist die nun die Schaltfläche [Connect] mit der linken Maustaste auszuwählen und die Verbindung zum Ziel-Server wird hergestellt, wie nachfolgender Bildschirm zeigt. Hier ist nun die Eingabe des Remote-Benutzer mit Benutzername und dem dazugehörigen Passwort in den entsprechenden Feldern durchzuführen:
Hier sind nachfolgende Anmeldeeinstellungen durchzuführen
Feld | Wert | Beschreibung |
---|---|---|
Session | Xorg | Art der Verbindung zum Ziel-Server |
username | klaus | Name des Remote-Benutzers |
password | … | Passwort des Remote-Benutzers |
Abschließend ist die nun die Schaltfläche [OK] mit der linken Maustaste auszuwählen und die Verbindung zum Ziel-Server sollte aufgebaut werden.
Zugriff über Microsoft™ Windows™
Nachfolgend soll beschrieben werden, wie von einem Windows™ PC mittels Microsoft™ Remote Desktop Client ein Verbindung zu einem CentOS-7-Server eine Verbindung aufgebaut werden kann.
Microsoft™ Remote Desktop Client
Nach dem erfolgreichen Start des Microsoft™ Remote Desktop Client, sollte nachfolgender Bildschirm erscheinen:
Hier kann für weitere Konfigurationen die [Optionen einblenden]-Schaltfläche gedrückt werden, wonach sich der Microsoft™ Remote Desktop Client wie folgt am Bildschirm darstellt:
Hier wird unter
Feld | Wert | Beschreibung |
---|---|---|
Computer: | 192.168.0.35 | Die IP-Adresse, oder der DNS-Name des Remote-Geräts eingetragen |
Benutzername: | klaus | Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen. |
Durch drücken der [Verbinden]-Schaltfläche, sollte dann in diesem Fall nachfolgender Dialog erscheinen:
HINWEIS - Dieser Hinweis erscheint, da hier das Standard-Zertifikat von xrdp zur Verwendung kommt und dieses nicht vom Microsoft™ Remote Desktop Client als Vertrauenswürdig anerkannt wird.
Zu diesem Zeitunkt der Installation kann hier die [Ja]-Schaltfläche gedrückt werden, wonach dann nachfolgender Bildschirm erscheinen sollte:
Hier wird unter
Feld | Wert | Beschreibung |
---|---|---|
username | klaus | Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen. |
password | ★★★ | Das Passwort des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen. |
Durch drücken der [OK]-Schaltfläche wird die Verbindung dann Aufgebaut.
Microsoft™ Remote Desktop Client - Eigene Auflösung
Falls die im Microsoft™ Remote Desktop Client unter dem [Anzeige]-Reiter im [Anzeigekonfiguration]-Bereich erscheinende Auswahl an Bildschirmauflösungen nicht reichen, kann mit nachfolgendem Befhel in der Microsoft™ Eingabeaufforderung den Microsoft™ Remote Desktop Client mit einer angepassten Bildschirmauflösung für das Remote-Gerät starten, wie nachfolgende Bildschirmkopien zeigen:
Hier wird unter
Programm | Optionen | Beschreibung |
---|---|---|
mstsc.exe | /w:1600 /h:900 | Microsoft™ Remote Desktop Client mit dem entsprechenden Bildschirmauflösungsparmetern. - /w:1600 = Width (Breite) - 1600 Pixel - /h:900 = Height (Höhe) - 900 Pixel |
Nach dem erfolgreichen Satrt des Microsoft™ Remote Desktop Client, sollte nachfolgender Bildschirm erscheinen:
Hier kann für weitere Konfigurationen die [Optionen einblenden]-Schaltfläche gedrückt werden, wonach sich der Microsoft™ Remote Desktop Client wie folgt am Bildschirm darstellt:
Hier wird unter
Feld | Wert | Beschreibung |
---|---|---|
Computer: | 192.168.0.35 | Die IP-Adresse, oder der DNS-Name des Remote-Geräts eingetragen |
Benutzername: | klaus | Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen. |
Im Microsoft™ Remote Desktop Client kann nun unter dem [Anzeige]-Reiter im [Anzeigekonfiguration]-Bereich erscheinende Auswahl an Bildschirmauflösungen den zuvor via Microsoft™ Eingabeaufforderung gestarteten Microsoft™ Remote Desktop Client mit dem entsprechenden Bildschirmauflösungsparmetern angezeigt werden, was nachfolgende Bildschirmkopie zeigt:
Durch drücken der [Verbinden]-Schaltfläche, sollte dann in diesem Fall nachfolgender Dialog erscheinen:
HINWEIS - Dieser Hinweis erscheint, da hier das Standard-Zertifikat von xrdp zur Verwendung kommt und dieses nicht vom Microsoft™ Remote Desktop Client als Vertrauenswürdig anerkannt wird.
Zu diesem Zeitunkt der Installation kann hier die [Ja]-Schaltfläche gedrückt werden, wonach dann nachfolgender Bildschirm erscheinen sollte:
Hier wird unter
Feld | Wert | Beschreibung |
---|---|---|
Session | Xorg | Art der Verbindung zum Ziel-Server |
username | klaus | Der Benutzername des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen. |
password | ★★★ | Das Passwort des Benutzer, unter dessen die Anmeldung erfolgen soll eingetragen. |
Durch drücken der [OK]-Schaltfläche wird die Verbindung dann Aufgebaut.
Problembehebung
/etc/pam.d/system-auth
Falls nach dem Erscheinen des Anmeldebildschirms und nach der Eingabe der Anmeldedaten der die xrdp Verbindung sofort wieder beendet wird, handelt es sich aktuell um ein bug/issue - No user session created with xrdp and pam_systemd_home account module #1684 in
/etc/pam.d/system-auth
Die Konfigurationsdatei /etc/pam.d/system-auth
muss wie folgt geändert werden und der Eintrag
-account [success=1 default=ignore] pam_systemd_home.so
muss auskommentiert/deaktiviert werden, wie nachfolgende komplette Konfigurationsdatei zeigt:
#%PAM-1.0 auth required pam_faillock.so preauth # Optionally use requisite above if you do not want to prompt for the password # on locked accounts. auth [success=2 default=ignore] pam_unix.so try_first_pass nullok -auth [success=1 default=ignore] pam_systemd_home.so auth [default=die] pam_faillock.so authfail auth optional pam_permit.so auth required pam_env.so auth required pam_faillock.so authsucc # If you drop the above call to pam_faillock.so the lock will be done also # on non-consecutive authentication failures. # Tachtler - disabled - #-account [success=1 default=ignore] pam_systemd_home.so account required pam_unix.so account optional pam_permit.so account required pam_time.so -password [success=1 default=ignore] pam_systemd_home.so password required pam_unix.so try_first_pass nullok shadow password optional pam_permit.so session required pam_limits.so session required pam_unix.so session optional pam_permit.so