阻止普通用户执行

1 投票
2 回答
764 浏览
提问于 2025-04-16 02:59

我需要一个更好的方法来防止普通用户运行我的Python脚本。我现在是这样做的:

if __name__ == '__main__':
    if os.getenv('USER') == 'root':
        addUser = addUser()
    else:
        print 'Only root can run that!'

这样是有效的,但看起来挺难看的!我的脚本是关于在Debian系统中管理用户的。

2 个回答

5

通常来说,限制可执行文件所需资源的访问权限比直接在可执行文件本身上设置权限更为常见。举个例子,mount(8) 命令通常可以被任何用户运行,但实际上需要用到的设备文件是限制给特定用户或用户组的。这个命令在尝试进行设备操作之前,会先检查一下这个操作是否可能。

这同样适用于普通文件。比如,很多Linux的包管理工具需要一个已安装程序的数据库。在安装任何东西之前,包管理工具会先检查这个数据库文件的权限,看看调用的用户是否有写入权限,同时也会检查目标目录,看看用户是否可以修改这些目录。即使包管理工具没有进行这些检查,当它们尝试进行修改时,内核也会阻止这个程序执行不被允许的操作。

12

Python代码是可以被查看和编辑的,所以如果你设置了什么保护措施,别人还是有办法绕过这些保护。为了安全起见,最好的办法是在Debian系统中限制用户的执行权限,这样只有root用户才能执行、查看或编辑这些代码。

你可以查看这个链接了解更多关于权限设置的信息:chmod

撰写回答