microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
162.65k stars 28.68k forks source link

Cannot open zsh shell if you are using sssd/realm active directory logins on Linux because no /etc/passwd entry exists #169692

Closed virgiliofornazin closed 1 year ago

virgiliofornazin commented 1 year ago

Does this issue occur when all extensions are disabled?: Yes/No

Steps to Reproduce:

  1. Log in using a Active Directory account (Ubuntu must be joined into an Active Directory Domain)
  2. Open Visual Studio Code
  3. In Terminal tab, click on [ + ] sign to open a new terminal, choosing zsh. A empty terminal tab opens and no shell is launched

When I look in Output tab, section 'Shared', the following log lines were found

2022-12-20 19:06:47.848 [error] [uncaught exception in sharedProcess]: A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory): SystemError [ERR_SYSTEM_ERROR]: A system error occurred: uv_os_get_passwd returned ENOENT (no such file or directory)
    at new SystemError (node:internal/errors:233:5)
    at new NodeError (node:internal/errors:336:7)
    at Object.userInfo (node:os:347:11)
    at o (/snap/code/116/usr/share/code/resources/app/out/vs/platform/terminal/node/ptyHostMain.js:26:9375)
    at Me.start (/snap/code/116/usr/share/code/resources/app/out/vs/platform/terminal/node/ptyHostMain.js:26:16280)
    at async S.start (/snap/code/116/usr/share/code/resources/app/out/vs/platform/terminal/node/ptyHostMain.js:27:10261)

By looking at message, it seems vscode is looking at /etc/passwd for some reason.

And it may be failing because when I log in with an Active Directory account, no /etc/passwd entry is created for my user, because sssd/realm does not write entries on that.

I opened a terminal Window and grab the following output for helping debugging:

virgiliofornazin@corporate.fornazinconsultoria.com.br@i9ubuntuwks ~/Desktop
 % echo $USER
virgiliofornazin@corporate.fornazinconsultoria.com.br

virgiliofornazin@corporate.fornazinconsultoria.com.br@i9ubuntuwks ~/Desktop
 % cat /etc/passwd
root:x:0:0:root:/root:/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:103:106:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
syslog:x:104:111::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:112:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:115::/run/uuidd:/usr/sbin/nologin
systemd-oom:x:108:116:systemd Userspace OOM Killer,,,:/run/systemd:/usr/sbin/nologin
tcpdump:x:109:117::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:110:119:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
avahi:x:114:121:Avahi mDNS daemon,,,:/run/avahi-daemon:/usr/sbin/nologin
cups-pk-helper:x:115:122:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
rtkit:x:116:123:RealtimeKit,,,:/proc:/usr/sbin/nologin
whoopsie:x:117:124::/nonexistent:/bin/false
sssd:x:118:125:SSSD system user,,,:/var/lib/sss:/usr/sbin/nologin
speech-dispatcher:x:119:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false
nm-openvpn:x:120:126:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
saned:x:121:128::/var/lib/saned:/usr/sbin/nologin
colord:x:122:129:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
geoclue:x:123:130::/var/lib/geoclue:/usr/sbin/nologin
pulse:x:124:131:PulseAudio daemon,,,:/run/pulse:/usr/sbin/nologin
gnome-initial-setup:x:125:65534::/run/gnome-initial-setup/:/bin/false
hplip:x:126:7:HPLIP system user,,,:/run/hplip:/bin/false
gdm:x:127:133:Gnome Display Manager:/var/lib/gdm3:/bin/false
localadministrator:x:1000:1000:Local Administrator,,,:/home/localadministrator:/bin/zsh
fwupd-refresh:x:128:136:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
mysql:x:129:137:MySQL Server,,,:/nonexistent:/bin/false
docker-registry:x:130:138:Docker Registry,,,:/var/lib/docker-registry:/usr/sbin/nologin
redis:x:131:141::/var/lib/redis:/usr/sbin/nologin
sbuild:x:132:142:Debian source builder,,,:/var/lib/sbuild:/bin/bash
swtpm:x:133:144:virtual TPM software stack,,,:/var/lib/swtpm:/bin/false
libvirt-qemu:x:64055:109:Libvirt Qemu,,,:/var/lib/libvirt:/usr/sbin/nologin
libvirt-dnsmasq:x:134:146:Libvirt Dnsmasq,,,:/var/lib/libvirt/dnsmasq:/usr/sbin/nologin
libvirtdbus:x:135:147:libvirt-dbus user,,,:/nonexistent:/usr/sbin/nologin
nova:x:136:148::/var/lib/nova:/bin/bash
_qemu-web-desktop:x:999:999:Created by dh-sysuser for qemu-web-desktop:/var/lib/qemu-web-desktop:/usr/sbin/nologin
snapd-range-524288-root:x:524288:524288::/nonexistent:/usr/bin/false
snap_daemon:x:584788:584788::/nonexistent:/usr/bin/false
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
sshd:x:137:65534::/run/sshd:/usr/sbin/nologin
nvidia-persistenced:x:138:149:NVIDIA Persistence Daemon,,,:/nonexistent:/usr/sbin/nologin

virgiliofornazin@corporate.fornazinconsultoria.com.br@i9ubuntuwks ~/Desktop
 % cat /etc/passwd | grep virgilio

virgiliofornazin@corporate.fornazinconsultoria.com.br@i9ubuntuwks ~/Desktop
 % id virgiliofornazin
uid=***********(virgiliofornazin@corporate.fornazinconsultoria.com.br) gid=************(domain users@corporate.fornazinconsultoria.com.br) groups=***********(domain users@corporate.fornazinconsultoria.com.br),4(adm),27(sudo),30(dip),46(plugdev),109(kvm),122(lpadmin),134(lxd),140(docker),145(libvirt),************(denied rodc password replication group@corporate.fornazinconsultoria.com.br),***********(domain admins@corporate.fornazinconsultoria.com.br)

virgiliofornazin@corporate.fornazinconsultoria.com.br@i9ubuntuwks ~/Desktop
 %
Tyriar commented 1 year ago

Looks like we need to try catch here:

https://github.com/microsoft/vscode/blob/eb236d4405edc01c4b4745fade4cafdd91c608bb/src/vs/platform/terminal/node/terminalEnvironment.ts#L199

VSCodeTriageBot commented 1 year ago

This bug has been fixed in the latest release of VS Code Insiders!

@virgiliofornazin, you can help us out by commenting /verified if things are now working as expected.

If things still don't seem right, please ensure you're on version 07d6f5b35fac559504dec65e3073d796b2d25a55 of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.

Happy Coding!

roblourens commented 1 year ago

Verified by code review (but would still appreciate your 👍 @virgiliofornazin)

virgiliofornazin commented 1 year ago

I confirmed now that it´s working as expected. Nice job from team!

image