bash在特定用户登录上执行某些操作

bash在特定用户登录上执行某些操作,bash,ubuntu,Bash,Ubuntu,我想在某个用户登录时执行某个bash脚本。 我曾想过在该用户的初始化文件中调用脚本,例如.bashrc,但这并不适用,因为在现实生活中,不应允许其他人在用户初始化文件中写入脚本。 我该怎么做 将用户的.bashrc归root所有并具有644权限。让它看起来如下: run_specific_command_that_the_user_cannot_bypass [ -r ~/.bashrc.user] && . ~/.bashrc.user 或者使用系统范围的/etc/profi

我想在某个用户登录时执行某个bash脚本。 我曾想过在该用户的初始化文件中调用脚本,例如
.bashrc
,但这并不适用,因为在现实生活中,不应允许其他人在用户初始化文件中写入脚本。
我该怎么做

将用户的.bashrc归root所有并具有644权限。让它看起来如下:

run_specific_command_that_the_user_cannot_bypass
[ -r ~/.bashrc.user] && . ~/.bashrc.user

或者使用系统范围的/etc/profile(或您的方框中的任何名称)。没有其他选项。

/etc/bash.bashrc
/etc/profile
的尾部添加这样一行:

if [ $USER == 'jsmith' ]; then do-something-interesting; fi

我可以在无限循环中使用comman
finger
解决这个问题,当命令输出的行数增加时,这意味着有人登录,然后我可以通过对该用户执行任何操作来处理这个问题,代码如下:

#! /bin/bash
n=0;
while(true)
do
    if [ $n -gt `finger | awk 'END{print NR}'` ]
    then
        mailx -s "hey you" `awk  'END{print $1}'` < mailBody
    fi 
    n=`finger | awk 'END{print NR}'`;   
done
#/bin/bash
n=0;
while(true)
做
如果[$n-gt`finger|awk'END{print NR}`]
然后
mailx-s“hey you”`awk'END{print$1}``

注意:您可以使用
n=${finger | awk'END{print NR}}}初始化
n
,以避免认为有人在脚本执行开始时登录,或者您想要的任何东西。

我说过我不想通过
进行初始化。bashrc
您说过您不想要它,因为其他人可以劫持它。我建议如何以安全的方式做这件事。您可以对系统范围的/etc/profile执行相同的操作。我想没有别的选择了再说一遍。。我不想编辑初始化文件。。有办法吗??