【问题标题】:Running a script as root, without having root access以 root 身份运行脚本,无需 root 访问权限
【发布时间】:2012-05-03 13:19:34
【问题描述】:

我正在尝试让脚本以 root 身份运行,以添加目录并更改权限,但我不确定如何在不提示用户输入密码的情况下以 root 身份运行它。用户不一定是 sudoer,因此在这里执行任何类型的 sudo -S 命令或将 sudoer 首选项更改为不需要密码都不起作用。有什么想法吗?

【问题讨论】:

  • 超级用户可能会得到更好的响应。
  • 简单,启动存在已知安全漏洞的浏览器并获得 root 访问权限

标签: sudo su root


【解决方案1】:
#!/bin/bash

#从图形用户界面(Ubuntu GUI 桌面)以超级用户身份执行指令的 Linux 脚本示例

#这两个指令仅适用于本示例,它们将给定文件更改为 root 所有权

#将此脚本更改为可执行文件(如果尚未完成)

echo $0 | chmod ugo+x

#为这个具体的例子创建一个文件

echo "some text" > ./my_file

#

#执行root指令,例如在ubuntu登录时启动的自定义启动脚本很有用

#弹窗询问密码

PASSWD=zenity --entry --text "输入root密码" --hide-text

#以超级用户身份执行操作

sudo -S su root -c "chown root ./my_file" <<< "$PASSWD"

#

#仅针对此特定示例的以下操作

#显示文件所有权以检查文件是否属于root

printf $'\n'; ls -al ./my_file; printf $'\n'

#必要时恢复当前用户所有权

sudo -S su root -c "chown `whoami` ./my_file" <<< "$PASSWD"

#再次显示文件所有权以检查它是否属于当前用户

printf $'\n'; ls -al ./my_file; printf $'\n'

#如果此终端会话未关闭,则清除缓存以再次提示密码

sudo -k

【讨论】:

    【解决方案2】:

    须藤是你的朋友。配置 /etc/sudoers 以允许任何人在特定位置运行脚本,例如:

    ALL   ALL = NOPASSWD: /path/to/my/root/script
    

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 2014-04-29
      • 2018-05-11
      • 2023-03-16
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多