Bash运行docker命令只有当用户有权限(Bash if或者语句)
我试图只允许脚本运行,如果用户被允许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条件似乎不起作用,我不知道为什么。
你应该把它们与&&
,而不是||
结合起来 。
假设用户在泊坞窗组,但不是根。 [ $EUID -ne 0 ]
将为true,而[ $(groups | grep -c docker) -ne 1 ]
将为false。 ||
如果它的任何一个操作数是真的,那么这是真的,所以这将使整个条件成立,并且打印出错信息。
&&
只有在两个操作数都为true的情况下才会成功,所以当用户不是root用户时,他们不在泊坞窗组中。