general/other How do I chroot to ubuntu in a proper env as a non-root user?

I would like a non-root user to chroot to ubuntu noble. I copied host /etc/passwd and /etc/group to chroot env, which is /compat/ubuntu/etc/. When I do chroot, I see weird things like permision denied, env (USERNAME, LOGNAME, SHELL, UID, GID etc.) not desired.
Also, the csh behaviour in chroot is being different than in FBSD host, even I use same .cshrc.

How do I chroot to ubuntu in a proper env as a non-root user?

Code:
dzs97p@AMD_STATION:~ % sudo chroot -u dzs97p /compat/ubuntu /bin/csh
AMD_STATION% id
uid=1001(dzs97p) gid=0(wheel) groups=0(wheel),5(operator),44(video)
AMD_STATION% cd
cd: Can't change to home directory.
AMD_STATION% env
DISPLAY=:0.0
TERM=xterm-256color
LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8
XAUTHORITY=/home/dzs97p/.Xauthority
PATH=/home/dzs97p/.pyenv/shims:/home/dzs97p/.pyenv/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/dzs97p/bin:/usr/games:/usr/local/llvm13/bin
XDG_CURRENT_DESKTOP=XFCE
MAIL=/var/mail/root
LOGNAME=root
USER=root
HOME=/root
SHELL=/bin/csh
SUDO_COMMAND=/usr/sbin/chroot -u dzs97p /compat/ubuntu /bin/csh
SUDO_USER=dzs97p
SUDO_UID=1001
SUDO_GID=1001
SUDO_HOME=/home/dzs97p
PWD=/
AMD_STATION% exit
AMD_STATION% exit
dzs97p@AMD_STATION:~ % sudo chroot -u dzs97p /compat/ubuntu /bin/bash
bash: /root/.bashrc: Permission denied
dzs97p@AMD_STATION:/$ cd
bash: cd: /root: Permission denied
dzs97p@AMD_STATION:/$ env
SHELL=/bin/csh
SUDO_GID=1001
SUDO_COMMAND=/usr/sbin/chroot -u dzs97p /compat/ubuntu /bin/bash
SUDO_USER=dzs97p
PWD=/
LOGNAME=root
SUDO_HOME=/home/dzs97p
XAUTHORITY=/home/dzs97p/.Xauthority
HOME=/root
LANG=en_US.UTF-8
XDG_CURRENT_DESKTOP=XFCE
TERM=xterm-256color
USER=root
DISPLAY=:0.0
SHLVL=1
LC_CTYPE=en_US.UTF-8
PATH=/home/dzs97p/.pyenv/shims:/home/dzs97p/.pyenv/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/dzs97p/bin:/usr/games:/usr/local/llvm13/bin
SUDO_UID=1001
MAIL=/var/mail/root
_=/bin/env
dzs97p@AMD_STATION:/$ exit
exit
dzs97p@AMD_STATION:~ % sudo chroot /compat/ubuntu /bin/csh
Password:
uid: Undefined variable.
AMD_STATION#
 
Try sudo chroot -u dzs97p /compat/ubuntu /bin/bash -l

Note the -l argument, that makes it a login shell.

Code:
       When  bash is invoked as	an interactive login shell, or as a non-inter-
       active shell with the --login option, it	first reads and	executes  com-
       mands  from  the	file /etc/profile, if that file	exists.	 After reading
       that file, it looks for ~/.bash_profile,	~/.bash_login, and ~/.profile,
       in that order, and reads	and executes commands from the first one  that
       exists  and  is	readable.  The --noprofile option may be used when the
       shell is	started	to inhibit this	behavior.

But I'm not sure if this works, because you can't actually login (all the systemd stuff that's needed for it isn't running).
 
While sudo chroot -u dzs97p /compat/ubuntu /bin/bash -c "HOME=/home/dzs97p USER=dzs97p LOGNAME=dzs97p /bin/bash" setting env variables explicitly seems to give me desired env in chroot, but why?

Code:
dzs97p@AMD_STATION:~ % sudo chroot -u dzs97p /compat/ubuntu /bin/bash -l
bash: /root/.bash_profile: Permission denied
dzs97p@AMD_STATION:/$ exit
logout
bash: /root/.bash_logout: Permission denied
dzs97p@AMD_STATION:~ % sudo -i chroot -u dzs97p /compat/ubuntu /bin/bash -l
bash: /root/.bash_profile: Permission denied
dzs97p@AMD_STATION:/$ exit
logout
bash: /root/.bash_logout: Permission denied
dzs97p@AMD_STATION:~ % sudo chroot -u dzs97p /compat/ubuntu /bin/bash -c "HOME=/home/dzs97p USER=dzs97p LOGNAME=dzs97p /bin/bash"
dzs97p@AMD_STATION:/$ env
SHELL=/bin/csh
PYENV_SHELL=bash
SUDO_GID=1001
SUDO_COMMAND=/usr/sbin/chroot -u dzs97p /compat/ubuntu /bin/bash -c HOME=/home/dzs97p USER=dzs97p LOGNAME=dzs97p /bin/bash
SUDO_USER=dzs97p
PWD=/
LOGNAME=dzs97p
SUDO_HOME=/home/dzs97p
HOME=/home/dzs97p
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESSCLOSE=/bin/lesspipe %s %s
TERM=xterm-256color
LESSOPEN=| /bin/lesspipe %s
USER=dzs97p
SHLVL=1
LC_CTYPE=en_US.UTF-8
PYENV_ROOT=/home/dzs97p/.pyenv
PATH=/home/dzs97p/.pyenv/shims:/home/dzs97p/.pyenv/bin:/home/dzs97p/.pyenv/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/dzs97p/bin:/usr/games:/usr/local/llvm13/binSUDO_UID=1001
MAIL=/var/mail/root
_=/bin/env
dzs97p@AMD_STATION:/$
 
Back
Top