如何根据组编写排除用户的if语句?

时间:2014-01-14 13:16:57

标签: ubuntu if-statement

所以在Ubuntu中,如果登录的用户在某个组中,则程序必须从shell的启动开始。在/etc/bash.bashrc中使用if语句是我们现在正在尝试的,但我们不知道如何为这种情况形成有效的if语句。

if [ group == familie ]; then
*the program that has to be started*
fi

这是我们到目前为止的陈述。

2 个答案:

答案 0 :(得分:1)

我可能会使用id,因为它的输出更容易解析groups,它可能包含空格(例如在cygwin中):

if [[ $(/usr/bin/id) == *groups*[,=]'20(games)'* ]] ; then
    echo yes
else
    echo no
fi

使用您的群组ID和姓名代替20games

但是,让系统付出艰苦的努力可能会更安全。只需创建一个脚本,其中包含启动所需程序的代码,并使该脚本只能为该组运行;然后运行脚本。

答案 1 :(得分:1)

有很多方法可以做到这一点。例如,您可以使用/etc/groupgrepcut直接解析tr文件:

grep -E ^$GROUPNAME: /etc/group | cut -d: -f4 | tr , "\n" | grep -E ^$USERNAME$ | wc -l

如果上一个命令的输出非零,则该用户在该组中。显然,您需要在输入中替换$GROUPNAME$USERNAME