如果允许用户使用docker权限,我试图只允许运行脚本。因此,这意味着用户需要位于docker
组或是root。
我试过这样做,但它不起作用。
if [ $EUID -ne 0 ] || [ $(groups | grep -c docker) -ne 1 ]; then
echo "You must have docker privileges to use this command."
exit 1
fi
echo "Do docker stuff"
奇怪的是,只有[ $EUID -ne 0 ]
或[ $(groups | grep -c docker) -ne 1 ]
自己正常工作,但OR条件似乎不起作用,我无法弄清楚原因。
答案 0 :(得分:3)
您应该将它们与&&
合并,而不是||
。
假设用户位于docker组中,但不是root用户。 [ $EUID -ne 0 ]
将为真,而[ $(groups | grep -c docker) -ne 1 ]
则为假。如果其任一操作数为true,则||
为真,因此这将使整个条件成立,并将打印错误消息。
&&
只有在两者的操作数都为真时才会成功,所以当用户不是root 并且他们不在docker中时,你会收到消息基。