Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Volumes #14

Open
PedroRegisPOAR opened this issue Aug 30, 2022 · 1 comment
Open

Volumes #14

PedroRegisPOAR opened this issue Aug 30, 2022 · 1 comment

Comments

@PedroRegisPOAR
Copy link
Contributor

PedroRegisPOAR commented Aug 30, 2022

Abstratc

It is an issue devoted to collect links/documentation about "volumes".

Details

WIP:

podman \
run \
--interactive=true \
--tty=true \
--user=podman \
--volume=$(pwd):/home/podman/data:U \
quay.io/podman/stable \
bash \
-c \
'cat /etc/passwd && ls -al $HOME/data'
podman run --interactive=true --tty=true --user=podman --volume=$(pwd):/home/podman/data:U quay.io/podman/stable bash -c 'cat /etc/passwd && ls -al $HOME/data'
podman run --interactive=true --tty=true --user=podman --volume=$(pwd):/home/podman/data:U quay.io/podman/stable bash -c 'cat /etc/passwd && ls -al $HOME/data'

echo 'Lorem ipsum' > log.txt \
&& stat log.txt \
&& podman run -it --rm -u "$(id -u)":"$(id -g)" -v "$(pwd)":/data \
   docker.io/library/alpine sh -c 'ls -al / && ! touch /proc 2> /dev/null && touch /data/log.txt' \
&& echo $?

stat log.txt
touch log.txt


quay.io/podman/stable


sudo su -c ''

sudo addgroup abcgroup --gid 4455  \
&& sudo adduser -q \
     --gecos '"An unpriviliged user with an group"' \
     --disabled-password \
     --ingroup abcgroup \
     --uid 3322 \
     abcuser


sudo su -c "echo 'export PATH=/home/abcuser/bin:/usr/local/bin:/usr/local/games:/snap/bin' >> /home/abcuser/.bashrc"

sudo su -c 'exec su abcuser'


https://unix.stackexchange.com/a/595152

Refs.:
- https://unix.stackexchange.com/a/117943
- https://wiki.alpinelinux.org/wiki/Setting_up_a_new_user

echo 'Lorem ipsum' > log.txt \
&& stat log.txt \
&& podman run -it --rm -u "$(id -u)":"$(id -g)" -v "$(pwd)":/data \
   docker.io/library/alpine sh -c 'ls -al / && ! touch /proc 2> /dev/null && touch /data/log.txt' \
&& echo $?

stat log.txt
touch log.txt


mkdir fbar
podman unshare chown 123:123 ./fbar
podman run -it --volume fbar:/dest --user 123:123 --name busybox busybox


echo 'Lorem ipsum' > log.txt \
&& stat log.txt \
&& podman \
     run \
     -it \
     --rm \
     -u "$(id -u)":"$(id -g)" \
     -v "$(pwd)":/data \
   docker.io/library/alpine sh -c 'ls -al / && ! touch /proc 2> /dev/null && touch /data/log.txt' \
&& echo $?
mkdir dir1
echo hello > dir1/file.txt
chmod 700 dir1/file.txt
subuidSize=$(( $(podman info --format "{{ range .Host.IDMappings.UIDMap }}+{{.Size }}{{end }}" ) - 1 ))
subgidSize=$(( $(podman info --format "{{ range .Host.IDMappings.GIDMap }}+{{.Size }}{{end }}" ) - 1 ))
UID="$(id -u)"
GID="$(id -g)"
podman \
run \
--rm \
-v ./dir1:/dir1 \
--user "${UID}":"${GID}" \
--uidmap "${UID}":0:1 \
--uidmap 0:1:"${UID}" \
--uidmap $(("${UID}"+1)):$(("${UID}"+1)):$(($subuidSize-"${UID}")) \
--gidmap "${GID}":0:1 \
--gidmap 0:1:"${GID}" \
--gidmap $(("${GID}"+1)):$(("${GID}"+1)):$(($subgidSize-"${GID}")) \
docker.io/library/alpine \
cat \
/dir1/file.txt
stat dir1/file.txt
podman \
run \
--rm \
-it \
-v ./dir1:/dir1 \
--user "${UID}":"${GID}" \
--uidmap "${UID}":0:1 \
--uidmap 0:1:"${UID}" \
--uidmap $(("${UID}"+1)):$(("${UID}"+1)):$(($subuidSize-"${UID}")) \
--gidmap "${GID}":0:1 \
--gidmap 0:1:"${GID}" \
--gidmap $(("${GID}"+1)):$(("${GID}"+1)):$(($subgidSize-"${GID}")) \
docker.io/library/alpine
@PedroRegisPOAR
Copy link
Contributor Author

PedroRegisPOAR commented Oct 22, 2022

Using an Alpine OCI image ran with podman

Creating an environment to play inside:

cat > Containerfile << 'EOF'
FROM alpine:3.16.1
RUN apk add --no-cache \
     ca-certificates \
     curl \
     shadow \
     tar \
     xz \
 && mkdir -m 0777 /nix
EOF

podman \
build \
--file=Containerfile \
--tag=unprivileged-alpine3161 .
VOLUME_DIR=code
rm -frv "$VOLUME_DIR"; test -d "$VOLUME_DIR" || mkdir -pv "$VOLUME_DIR"
echo

nix run nixpkgs#xorg.xhost -- + 

podman \
run \
--annotation run.oci.keep_original_groups=1 \
--device=/dev/fuse:rw \
--device=/dev/kvm:rw \
--env="DISPLAY=${DISPLAY:-:0.0}" \
--env="HOME=${HOME:-:/home/someuser}" \
--env="PATH=/home/$USER/.nix-profile/bin:/home/$USER/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
--env="TMPDIR=${HOME}" \
--env="USER=${USER:-:someuser}" \
--group-add=keep-groups \
--hostname=alpine-container \
--interactive=true \
--name=conteiner-unprivileged-alpine \
--privileged=true \
--tty=true \
--userns=keep-id \
--rm=true \
--volume="$(pwd)"/"$VOLUME_DIR":/home/"${USER}":U \
--volume=/tmp/.X11-unix:/tmp/.X11-unix:ro \
--workdir=/home/"${USER}" \
localhost/unprivileged-alpine3161:latest \
sh \
-c \
'
id
echo
 
groups
echo

echo abcdefg > foo.txt
stat -c %u .
stat -c %u /home/"${USER}"
' \
&& stat -c %u "$VOLUME_DIR"/foo.txt
VOLUME_DIR=data
rm -frv "$VOLUME_DIR"; test -d "$VOLUME_DIR" || mkdir -pv "$VOLUME_DIR"
echo

# nix run nixpkgs#xorg.xhost -- + 

podman \
run \
--annotation run.oci.keep_original_groups=1 \
--device=/dev/fuse:rw \
--device=/dev/kvm:rw \
--env="DISPLAY=${DISPLAY:-:0.0}" \
--env="HOME=${HOME:-:/home/someuser}" \
--env="PATH=/home/$USER/.nix-profile/bin:/home/$USER/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
--env="TMPDIR=${HOME}" \
--env="USER=${USER:-:someuser}" \
--group-add=keep-groups \
--hostname=alpine-container \
--interactive=true \
--name=conteiner-unprivileged-alpine \
--privileged=true \
--tty=true \
--userns=keep-id \
--rm=true \
--volume="$(pwd)"/"$VOLUME_DIR":/home/"${USER}":U \
--volume=/tmp/.X11-unix:/tmp/.X11-unix:ro \
--workdir=/home/"${USER}" \
localhost/unprivileged-alpine3161:latest \
sh \
-c \
'
id
echo
 
groups
echo

echo abcdefg > foo.txt
stat -c %u .
stat -c %u /home/"${USER}"
' \
&& stat -c %u "$VOLUME_DIR"/foo.txt
'! [ "$(stat -c %u .)" = 0 ]; echo "$?"'
podman \
exec \
--interactive=true \
--tty=true \
--user=0 \
conteiner-alpine \
sh<<COMMANDS
apk add --no-cache \
     ca-certificates \
     curl \
     shadow \
     tar \
     xz \
&& mkdir /nix && chmod 1777 /nix
COMMANDS
podman \
exec \
--interactive=true \
--tty=false \
--user=0 \
conteiner-alpine \
sh<<COMMANDS
ls -al /nix
mkdir -m 777 /nix
COMMANDS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant