用户将可以远程访问*** nix中基于通过SSH机,我需要确定是否他们正在使用的用户名在在/ etc / sudoers文件NOPASSWD访问的最快方式。
可能的选项:
- grep的用于在用户名的/ etc / sudoers中,解析如果不是,命令提示输出,以确定它是否有NOPASSWD,删除行再附加新的权限
- 您只需将一个权限字符串的文件,而不管(坏主意)。
- 尝试须藤到受保护的文件,看看它提示我输入密码。
我希望的东西更容易,但我的谷歌福没有拿出任何答案。
用户将可以远程访问*** nix中基于通过SSH机,我需要确定是否他们正在使用的用户名在在/ etc / sudoers文件NOPASSWD访问的最快方式。
可能的选项:
我希望的东西更容易,但我的谷歌福没有拿出任何答案。
如果sudo -v
成功,用户被授权使用sudo
; 如果失败,则该用户还没有被授权使用sudo
。
# su user -c 'setsid sudo -v </dev/null'; echo $? [sudo] password for user: 1 # su root -c 'setsid sudo -v </dev/null'; echo $? 0
如果没有setsid , sudo
会尽量要求输入密码交互即使标准输入/输出/标准错误都被重定向。 如果你没有控制终端,这是没有必要的,但你可能会需要比其他一些su
来修改用户权限,如叉 + setreuid 。
如果您确实需要“以最快的方式”,我猜你正在建设一个网络服务器,将处理许多并发请求。
这就提出了另一个问题 - 并发问题。 一般来说,许多过程读取和写入到同一个重要的文件是一个灾难的配方。
建立一个小的独立进程来处理任务。 它应该有一个最小的接口将接收来自客户端的请求,并且更新/etc/sudoer
文件。 喜欢的东西has_NOPASSWD_access()
和set_NOPASSWD_access()
它应该阅读的文件需要被写入只有当它,所以你会大大减少服务请求所需的I / O时间。
优点 -
缺点 - - 列出他们的意见,我会补充。