仅当用户具有权限时才使用Bash运行docker命令(Bash if或statement)

时间:2017-02-07 11:30:32

标签: bash docker

如果允许用户使用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条件似乎不起作用,我无法弄清楚原因。

1 个答案:

答案 0 :(得分:3)

您应该将它们与&&合并,而不是||

假设用户位于docker组中,但不是root用户。 [ $EUID -ne 0 ]将为真,而[ $(groups | grep -c docker) -ne 1 ]则为假。如果其任一操作数为true,则||为真,因此这将使整个条件成立,并将打印错误消息。

&&只有在两者的操作数都为真时才会成功,所以当用户不是root 并且他们不在docker中时,你会收到消息基。