colcon / colcon-mixin

Extension for colcon to read CLI mixins from files
http://colcon.readthedocs.io
Apache License 2.0
2 stars 7 forks source link

Bug: colcon-mixin doesn't populate mixins on new Linux accounts #42

Closed Ryanf55 closed 7 months ago

Ryanf55 commented 1 year ago

Goal:

Use the OSRF ROS 2 docker image osrf/ros:humble-desktop-jammy but with a non-root user. I would expect the ~/.colcon directory to be populated when I create the new user, but it is not. The new user has no mixins available.

Steps to reproduce

Use the following dockerfile:

Dockerfile

FROM osrf/ros:humble-desktop-jammy
RUN groupadd -r ros_user && useradd --no-log-init --create-home --system --gid ros_user ros_user
USER ros_user
WORKDIR /home/ros_user
RUN colcon mixin list
RUN pwd && ls

And, build it.

docker build -f Dockerfile . --progress=plain --no-cache

Build output:

#1 [internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.0s

#2 [internal] load build definition from Dockerfile.colconm
#2 transferring dockerfile: 530B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/osrf/ros:humble-desktop-jammy
#3 DONE 0.0s

#4 [1/5] FROM docker.io/osrf/ros:humble-desktop-jammy
#4 CACHED

#5 [2/5] RUN groupadd -r ros_user && useradd --no-log-init --create-home --system --gid ros_user ros_user
#5 DONE 0.3s

#6 [3/5] WORKDIR /home/ros_user
#6 DONE 0.0s

#7 [4/5] RUN colcon mixin list
#7 DONE 0.5s

#8 [5/5] RUN pwd && ls
#8 0.352 /home/ros_user
#8 0.354 log
#8 DONE 0.4s

#9 exporting to image
#9 exporting layers 0.0s done
#9 writing image sh

You can see the that colcon mixin list is empty, and there is no .colcon folder in the home directory, which is where I expect the colcon user files to live.

System Information

Here is the information my system reports on python3-colcon-mixin.

$ dpkg -L python3-colcon-mixin
/.
/usr
/usr/lib
/usr/lib/python3
/usr/lib/python3/dist-packages
/usr/lib/python3/dist-packages/colcon_mixin
/usr/lib/python3/dist-packages/colcon_mixin/__init__.py
/usr/lib/python3/dist-packages/colcon_mixin/mixin
/usr/lib/python3/dist-packages/colcon_mixin/mixin/__init__.py
/usr/lib/python3/dist-packages/colcon_mixin/mixin/mixin_argument.py
/usr/lib/python3/dist-packages/colcon_mixin/mixin/repository.py
/usr/lib/python3/dist-packages/colcon_mixin/subverb
/usr/lib/python3/dist-packages/colcon_mixin/subverb/__init__.py
/usr/lib/python3/dist-packages/colcon_mixin/subverb/add.py
/usr/lib/python3/dist-packages/colcon_mixin/subverb/list.py
/usr/lib/python3/dist-packages/colcon_mixin/subverb/remove.py
/usr/lib/python3/dist-packages/colcon_mixin/subverb/show.py
/usr/lib/python3/dist-packages/colcon_mixin/subverb/update.py
/usr/lib/python3/dist-packages/colcon_mixin/verb
/usr/lib/python3/dist-packages/colcon_mixin/verb/__init__.py
/usr/lib/python3/dist-packages/colcon_mixin/verb/mixin.py
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info/PKG-INFO
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info/dependency_links.txt
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info/entry_points.txt
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info/requires.txt
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info/top_level.txt
/usr/lib/python3/dist-packages/colcon_mixin-0.2.3.egg-info/zip-safe
/usr/share
/usr/share/doc
/usr/share/doc/python3-colcon-mixin
/usr/share/doc/python3-colcon-mixin/changelog.Debian.gz
$ apt info python3-colcon-mixin
Package: python3-colcon-mixin
Version: 0.2.3-1
Priority: optional
Section: python
Maintainer: Dirk Thomas <web@dirk-thomas.net>
Installed-Size: 68.6 kB
Depends: python3:any (>= 3.5~), python3-colcon-core (>= 0.12.0), python3-yaml
Homepage: https://colcon.readthedocs.io
Download-Size: 11.0 kB
APT-Manual-Installed: yes
APT-Sources: http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages
Description: Extension for colcon to read CLI mixins from files.
 colcon-mixin
 ============
 .
 An extension for `colcon-core <https://github.com/colcon/colcon-core>`_ to fetch and manage CLI mixins from repositories.
 .
 For an example repository containing mixins see `colcon-mixin-repository <https://github.com/colcon/colcon-mixin-repository>`_.

Futher research

It seems it would be ideal if colcon installed its configuration parameters to /etc/skel on Linux. Source: http://www.linfo.org/etc_skel.html

cottsay commented 7 months ago

I would absolutely not expect changes to a local user account to affect other user accounts or new user accounts on the system. Such behavior would be a huge security problem, would it not?

Ryanf55 commented 7 months ago

FROM osrf/ros:humble-desktop-jammy RUN groupadd -r ros_user && useradd --no-log-init --create-home --system --gid ros_user ros_user USER ros_user WORKDIR /home/ros_user RUN colcon mixin list RUN pwd && ls

You bring up a good point.

I was under the impression since the ros2 containers are the root user by default, the other users would inherit what was installed as the root user. That is not a good assumption and does not appear how Linux user accounts are supposed to work. I will close this as invalid.