我编写了一个脚本,用于ps -G <groupid> -o uid,cmd
记录系统某一组用户及时运行的命令。
我想知道的是用户是否可以对我的脚本隐藏他们正在做的事情。如果可以,他们该怎么做?请注意,我的用户不在 sudo 组中。所以他们不能使用prctl
;我需要另一个不需要管理权限的选项
我以为将代码包装在函数中并为其设置别名并调用该别名会隐藏我的脚本,但这似乎不起作用。那么有没有办法隐藏代码呢ps
?
下面是我的代码的 MVC,它展示了为什么我认为别名技巧不起作用:
#!/bin/bash
foo(){
sleep 3
ps -G 1,2,3 -o uid,cmd -H
}
alias bar='foo'
while true
do
sleep 1
${BASH_ALIASES[bar]}
echo 1
done
以下是我得到的结果相关部分的摘要:
myid -bash (Reasonable)
myid /bin/bash ./myscript.sh (Reasonable)
myid /bin/bash ./mysctipt.sh (I don't care but I wonder why it's appearing twice!)
myid ps -G 1,2,3 -o uid,cmd -H (What I don't want to be viewable)
myid sshd: myusername@pts/9 (Reasonable)
请注意,输出中有一些缩进(由于-H
选项ps
),我删除了它,并且重复行的缩进是不同的。
由此我得出结论制作别名等不起作用。不起作用的意思是,我的用户无法为他们的命令制作别名并运行这些命令,并以这种方式隐藏他们的命令。因为如果他们可以,我在脚本中设置了别名的 ps 命令就不应该出现在结果中。
简单来说,问题如下:
有没有办法让我系统中的非 sudo 用户以一种我无法使用 ps 命令注意到的方式运行某些脚本。
附言请注意,我知道pam
记录的方法和其他东西。我只是想看看这个方法是否有效。
个人健康服务我指出了别名方法,因为一个朋友告诉我这种方法可行,但实际上却不行。所以我已经解释过,这种方法似乎行不通,无法阻止人们来这里给出答案。
要求!!!
有人可以向我解释为什么我的问题被关闭,因为它与另一个问题完全重复,而上述问题中的答案根本不能解决我的问题!??
答案1
为什么不制作一个同名的 shell 脚本来调用你的命令,但用 过滤输出grep
?当然,将可执行文件的目录添加到 $PATH 的开头,这样对你的程序的任何调用都将成为你的 shell 脚本。例如:
#!/bin/bash
/bin/ps | /bin/grep -v "Process name"
这将显示ps
除 之外的所有进程"Process name"
。将其放入 bash shell 脚本中,使用命令的完整路径。将此命令放入/directory/x
并将以下脚本添加到/etc/profile.d/path.sh
#!/bin/bash
PATH="/directory/x:$PATH";
这将覆盖对ps
您的自定义脚本的任何引用。如果您有任何问题请告诉我,希望这会有所帮助!:)