1

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

4

2 回答 2

4

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

ALL   ALL = NOPASSWD: /path/to/my/root/script
于 2012-04-22T21:26:09.213 回答
1
#!/bin/bash

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

#这两条指令仅适用于这个例子,它改变了给定文件的根所有权

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

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
于 2014-01-03T12:27:33.783 回答