如何防止特定用户使用终端仿真器?!
我用.bashrc编写了一个脚本,它要求用户输入密码才能使用终端仿真器。
但是对于一些知道如何使用这个技巧的高级用户来说,这个技巧并不是一个完美的方法。
为此,我正在寻找一种方法来防止特定用户使用终端仿真器,这些用户只是没有sudo许可的普通用户。
有什么建议吗!
发布于 2014-01-01 14:56:05
为允许使用终端的用户创建一个组,比如terminalusers。查找终端程序(使用which),例如,xterm。相应地改变其所有权:
chown root:terminalusers /usr/bin/xterm允许所有者和组执行。为其他人否认:
chmod 750 /usr/bin/xterm此时,使用xterm是不可能的,除非您是根用户,或者是terminalusers组的成员(将自己添加到其中,您将能够使用xterm)。为其他终端仿真器应用类似的设置(我认为gnome-terminal是您的主要设置)。现在,这只是另一个窍门:它阻塞终端仿真器,而不是终端(确实存在细微差别)。
在UNIX环境中,终端是系统的主要接口。阻止它们很可能会干扰许多应用程序,而不仅仅是命令行应用程序。相反,阻塞终端仿真器只是一种解决办法。如果拥有良好的权限,请记住,用户终端不会对您的计算机造成任何不良影响:它需要根权限才能将事情搞砸。
注意:对于xterm,据说这会导致utmp出现问题。
发布于 2015-05-29 19:37:59
特别是如果您的“目标”用户没有sudo权限,下面的解决方案非常“防水”。它不仅可用于阻止用户离开终端,还可用于阻止(任何用户)使用任何应用程序。
该解决方案存在一个简单且重量非常轻的背景脚本,您可以灵活地使用该脚本来阻止用户使用应用程序。
脚本是在从/etc/rc.local启动时启动的(请参阅下面的进一步内容)
#!/usr/bin/env python3
import subprocess
import time
data = [
["jacob", "gedit", "thunderbird", "gnome-terminal"],
["William", "gedit"],
]
def user_appcheck(userdata):
try:
user = userdata[0]; apps = userdata[1:]
applist = subprocess.check_output(["ps", "-u", user]).decode("utf-8").splitlines()
matches = sum([[l.split()[-1] for l in applist if app in l] for app in apps], [])
for match in matches:
subprocess.Popen(["pkill", match])
except:
pass
while True:
for userdata in data:
user_appcheck(userdata)
time.sleep(4)users_apps.py,位于“普通”用户无法编辑该文件的位置。对于单个用户,阻塞gedit和gnome-terminal。
data = [
["jacob", "gedit", "gnome-terminal"],
]/etc/rc.local:/bin/bash -c添加一行"python3 /path/ to /user_apps.py&“/etc/rc.local NB来测试它: /etc/rc.local --如果您阻止了自己,您不应该能够运行该应用程序;它可能会在一瞬间打开,但会立即关闭。如果用户没有sudo权限,那么就没有什么可做的了:)
https://askubuntu.com/questions/398527
复制相似问题