Ksh not unable al login shell

I’m running Tumbleweed 20260430 as a fresh install.
It’s supposed to be my replacement for Leap156.

I would like to use ksh as the login shell but that fails.
At the console (tty1) I can login with user/password and get some text displayed and the got logged out.

Last login...
Have a lot of fun...

Welcome to openSUSE Tumbleweed ...

enp0s31f6 ...
(logged off)
... login:

Using ksh93 works, but does not assemble PATH correct. /etc/profile does not take ksh93 into account.
It’s also not possible to login at the sddm/X11 screen but it works with sddm/Wayland. (I discovered that by chance.)
Also login with ssh does not work.

I would like to continue using KSH as I did with Leap.
It is also offered in YaST as login-shell, so it should work.

Please help me solve my problem.
I don’t know where to start.
Following is a part of journalctl during login of “franz” at tty1.
I replaced repeated lines with “…”.
I’m unable to detect the reason for automatic logout.

Script started on 2026-05-05 13:55:11+02:00 [TERM="xterm-256color" TTY="/dev/pts/0" COLUMNS="128" LINES="45"]
rolf@nb2t1:/home/rolf > journalctl -b0 -f
May 05 13:55:19 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
...
May 05 13:55:19 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
May 05 13:55:19 rolf-nb2t1 systemd[8555]: drkonqi-coredump-launcher.socket: Unit needs to be started because active unit sockets.target upholds it, but not starting since we tried this too often recently. Will retry later.
May 05 13:55:29 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
...
May 05 13:55:29 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
May 05 13:55:29 rolf-nb2t1 systemd[8555]: drkonqi-coredump-launcher.socket: Unit needs to be started because active unit sockets.target upholds it, but not starting since we tried this too often recently. Will retry later.
May 05 13:55:35 rolf-nb2t1 systemd[8555]: Reached target Smart Card.
May 05 13:55:35 rolf-nb2t1 systemd[8555]: Reached target Sound Card.
May 05 13:55:39 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
...
May 05 13:55:39 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
May 05 13:55:39 rolf-nb2t1 systemd[8555]: drkonqi-coredump-launcher.socket: Unit needs to be started because active unit sockets.target upholds it, but not starting since we tried this too often recently. Will retry later.
May 05 13:55:41 rolf-nb2t1 login[7647]: pam_kwallet5(login:auth): pam_kwallet5: pam_sm_authenticate
May 05 13:55:41 rolf-nb2t1 login[7647]: pam_kwallet5(login:auth): pam_kwallet5: Couldn't get password (it is empty)
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_kwallet5(login:setcred): pam_kwallet5: pam_sm_setcred
May 05 13:55:45 rolf-nb2t1 systemd-logind[1091]: New session '29' of user 'franz' with class 'user' and type 'tty'.
May 05 13:55:45 rolf-nb2t1 systemd[1]: Started Session 29 of User franz.
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_unix(login:session): session opened for user franz(uid=1001) by franz(uid=0)
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_kwallet5(login:session): pam_kwallet5: pam_sm_open_session
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_kwallet5(login:session): pam_kwallet5: not a graphical session, skipping. Use force_run parameter to ignore this.
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.bluez5.midi: org.bluez.GattManager1.RegisterApplication() failed: GDBus.Error:org.bluez.Error.AlreadyExists: Already Exists
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/ldac
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSink/aac
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/aac
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSink/opus_g
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/opus_g
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSink/sbc
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/sbc
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/faststream
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/faststream_duplex
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSink/opus_05
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/opus_05
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSink/opus_05_duplex
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint registered: sender=:1.281 path=/MediaEndpoint/A2DPSource/opus_05_duplex
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_kwallet5(login:setcred): pam_kwallet5: pam_sm_setcred
May 05 13:55:45 rolf-nb2t1 login[7647]: LOGIN ON tty1 BY franz
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_kwallet5(login:setcred): pam_kwallet5: pam_sm_setcred
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_unix(login:session): session closed for user franz
May 05 13:55:45 rolf-nb2t1 login[7647]: pam_kwallet5(login:session): pam_kwallet5: pam_sm_close_session
May 05 13:55:45 rolf-nb2t1 systemd[1]: getty@tty1.service: Deactivated successfully.
May 05 13:55:45 rolf-nb2t1 systemd[1]: session-29.scope: Deactivated successfully.
May 05 13:55:45 rolf-nb2t1 systemd-logind[1091]: Session 29 logged out. Waiting for processes to exit.
May 05 13:55:45 rolf-nb2t1 systemd[1]: getty@tty1.service: Scheduled restart job, restart counter is at 6.
May 05 13:55:45 rolf-nb2t1 systemd[1]: Started Getty on tty1.
May 05 13:55:45 rolf-nb2t1 systemd-logind[1091]: Removed session 29.
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Error fetching PCM info: Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Error fetching PCM info: Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Error fetching PCM info: Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Error opening low-level control device 'hw:1': Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Error opening low-level control device 'hw:1': Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: can't open control for card hw:1: Permission denied
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/ldac
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSink/aac
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/aac
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSink/opus_g
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/opus_g
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSink/sbc
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/sbc
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/faststream
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/faststream_duplex
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSink/opus_05
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/opus_05
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSink/opus_05_duplex
May 05 13:55:45 rolf-nb2t1 bluetoothd[1658]: Endpoint unregistered: sender=:1.281 path=/MediaEndpoint/A2DPSource/opus_05_duplex
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Card can't get card_name from card_index 0
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: Error opening low-level control device 'hw:0': Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.alsa: can't open control for card hw:0: Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.v4l2: Cannot open '/dev/video3': 13, Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.v4l2: Cannot open '/dev/video1': 13, Permission denied
May 05 13:55:45 rolf-nb2t1 wireplumber[4721]: spa.v4l2: Cannot open '/dev/video0': 13, Permission denied
May 05 13:55:49 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
...
May 05 13:55:49 rolf-nb2t1 systemd[8555]: Socket to launch DrKonqi for a systemd-coredump crash skipped, unmet condition check ConditionUser=!@system
May 05 13:55:49 rolf-nb2t1 systemd[8555]: drkonqi-coredump-launcher.socket: Unit needs to be started because active unit sockets.target upholds it, but not starting since we tried this too often recently. Will retry later.
^Crolf@nb2t1:/home/rolf > 

Script done on 2026-05-05 13:56:00+02:00 [COMMAND_EXIT_CODE="0"]

Regards Rolf

I do not understand all you say. But when you want to use ksh as the login shell for a user, that should be visible in the user’s entry in /etc/passwd. I do not see that starting point confirmed.

Without having studied your case in detail, knowing that there are two kshs being subject to `update-alternatives, I can show what I have (on Leap16.0):

boven:~ # which ksh
/usr/bin/ksh
boven:~ # ls -l /usr/bin/ksh
lrwxrwxrwx 1 root root 21 Aug  1  2024 /usr/bin/ksh -> /etc/alternatives/ksh
boven:~ # ls -l /etc/alternatives/ksh
lrwxrwxrwx 1 root root 10 Mar 18 17:26 /etc/alternatives/ksh -> /bin/ksh93
boven:~ # ls -l /bin/ksh93 
-rwxr-xr-x 1 root root 41704 Aug  1  2024 /bin/ksh93
boven:~ # 

I do not have tried to use ksh as anybodies login shell though.

HTH

Hi,
thanks, but ksh is set in /etc/passwd.

rolf@nb2t1:/home/rolf > grep franz /etc/passwd
franz:x:1001:100:Franz Wirth:/home/franz:/bin/ksh
rolf@nb2t1:/home/rolf > 

Please be careful, I’m asking about Tumbleweed.
You showed entries for ksh from a Leap installation.
At Tumbleweed it looks different.

rolf@nb2t1:/home/rolf > which ksh
/usr/bin/ksh
rolf@nb2t1:/home/rolf > ls -l /usr/bin/ksh
lrwxrwxrwx. 1 root root 4 Sep 24  2025 /usr/bin/ksh -> alts

rolf@nb2t1:/home/rolf > alts -l ksh
Binary: ksh
Alternatives: 1
  Priority: 20*  Target: /usr/bin/ksh93
                 Group: ksh
rolf@nb2t1:/home/rolf > alts -t ksh
/usr/bin/ksh93
rolf@nb2t1:/home/rolf > 

Regards Rolf

Related?
https://bugzilla.opensuse.org/show_bug.cgi?id=1261929

1 Like

I mentioned this.

franz:x:1001:100:Franz Wirth:/home/franz:/bin/ksh

but

rolf@nb2t1:/home/rolf > which ksh
/usr/bin/ksh

@ifswirth:

Tumbleweed → fresh install –

  • Is SELinux configured and executing?

Here on this Tumbleweed:

 > kinfo
Operating System: openSUSE Tumbleweed 20260430
KDE Plasma Version: 6.6.4
KDE Frameworks Version: 6.25.0
Qt Version: 6.11.0
Kernel Version: 7.0.2-1-default (64-bit)
Graphics Platform: Wayland
Processors: 12 × AMD Ryzen 5 8600G w/ Radeon 760M Graphics
Memory: 34 GB of RAM (32.8 GB usable)
Graphics Processor: AMD Radeon 760M Graphics
 > 
 > sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      35
 >

@dcurtisfra
My output of kinfo and sestatus is identical to yours.

Thanks, Rolf

@hcvv
In Tumbleweed /bin is a symlink to /usr/bin.
So /bin/ksh and /usr/bin/ksh are identical.

I’m sorry to ask, but where is your Help?

@hui
Your link to bugzilla shows exactly my problem.
I’ll try to connect to this bug-id.

Thanks, Rolf

Heading is completely mistyped, SORRY
it should read
Ksh not working as login shell

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.