Ces*_*ian 6 linux security sudo
假设我在 root 终端登录并运行类似以下命令的内容:
sudo -u '#1000' dbus-launch chromium
Run Code Online (Sandbox Code Playgroud)
runuser我得到failed to open display.有了它,我可以通过自定义驱动程序(g15daemon)从我的键盘执行终端命令,它只能以 root 身份启动。
从相关的手册页:
\n\n\n\n\n真实有效的 uid 和 gid 设置为与 passwd 文件中指定的目标用户相匹配。
\n
另外,在 sudo 的(保留组向量)选项的描述中-P:
\n\n\n然而,真实有效的组ID仍然被设置为与目标用户匹配。
\n
基本上,使用 sudo 运行的任何命令都将使用目标用户的有效用户和组 ID 运行。
\n\n要回答这个问题,\xe2\x80\x9c 有没有更安全的方法来做到这一点\xe2\x80\x9d,当以非特权用户身份运行 sudo 时,我更喜欢使用\xe2\x80\-H的 (HOME) 选项x9c将 HOME 环境变量设置为目标用户的 homedir\xe2\x80\x9d。过去的某个时候,我遇到了一些意外行为(can\xe2\x80\x99t 记得细节),我可以通过向-H使用 sudo 的 shell 脚本添加选项来阻止这些行为。
您可能还应该确保secure_path和env_reset选项在您的/etc/sudoers. 运行sudo -V显示哪些环境变量将传递给 sudo 启动的命令,哪些环境变量将传递给 sudo 启动的命令,以及哪些环境变量将传递给 sudo\xe2\x80\x99t 以及其他有趣/有用的信息。
或者,您可以使用su $(id -un 1000) -c 'dbus-launch chromium'用户 #1000 的有效用户 ID 和组 ID 来运行 Chromium。
如果您用来su完成相同的任务,您应该注意(默认情况下)su仅将HOME和SHELL环境变量设置为目标用户的变量。在这种情况下(目标用户是非特权用户,即不是超级用户),USER和LOGNAME也设置为目标用户的那些。\n其余环境变量(例如PATH)将被保留。
为了避免将任何环境数据泄露给正在运行的非特权进程,\nsu应使用登录 shell 的--login或选项运行,例如\n-lsu $(id -un 1000) -lc 'dbus-launch chromium'
取消设置除上面列出的\n 、和之外--login的所有环境变量,TERM然后重置。此外,在运行目标用户\xe2\x80\x99s 登录脚本之前,\n将其设置为预编译的默认值,并将当前工作目录设置为目标用户\xe2\x80\x99s 主目录。HOMESHELLUSERLOGNAMEPATH
我通常更喜欢 sudo 而不是 su,因为它的日志记录功能及其\n\xe2\x80\x9ticketing 系统\xe2\x80\x9d 避免了在先前成功的 sudo 后 5\n 分钟内重新输入密码的需要。
\n| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |