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