我想将su的访问权限限制给其他人,而不是我的部署用户。所以我遵循了以下步骤。正如你所看到的,su已经被deploy拥有,但我仍然无法访问它。我的docker文件如下:
FROM alpine:3.8
RUN set -ex
&& addgroup -g 1000 deploy
&& adduser -D -u 1000 -G deploy -s /bin/sh deploy
&& chown root:deploy /bin/su
&& chmod u+rws,g+rws,o-rwx /bin/su
USER deploy:nobody
当我执行以下命令时,在容器内:
/var/www/ $ ls -al /bin/su
-rwsrws--- 1 root deploy 36560 May 19 11:19 /bin/su
/var/www/ $ su -h
sh: su: Permission denied
注意:当我像下面这样从root切换到部署时,它是有效的。
docker exec -it --user root alpine sh
/var/www/ # su deploy
/var/www/ $ su -h
我的错,我自己想好了。由于我的dockerfile以USERdeploy:nobody
的身份运行,因此无论我在哪里运行docker exec -it alpine sh
,容器都以组nobody
的身份运行但/bin/su只允许root:deploy。:(