-
2007-09-04
需要超级用户权限的脚本 - [LBE]
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://gosman.blogbus.com/logs/8095453.html
原文:Writing scripts that needs root permission
作者:mysurface
译者:gosman(lianmingchang2008#gmail.com)
来自:http://gosman.blogbus.com/
版本:V 1.0.0
时间:2007-9-4当执行需要超级用户(root)权限的命令时,我会使用sudo。sudo提供了一种只要我的帐户密码就可以执行超级用户权限命令的简便方法。
sudo和su是不一样的,可以参考这里。
但在写脚本时,不能直接使用sudo。例如,我写了个用我的DNS设置来修改/etc/resolv.conf的脚本。修改/etc/resolv.conf需要超级用户权限。但在脚本里,我不能直接使用sudo。
下面的脚本就不能工作。
#!/bin/bash # the lines below doesn't work!!! sudo echo "nameserver 202.188.1.5" > /etc/resolv.conf sudo echo "nameserver 202.188.0.133" >> /etc/resolv.conf cat /etc/resolv.conf可以将所有需要超级用户权限的命令写在一个脚本里,然后在外部用sudo执行此脚本。比如我的脚本是set_dns.sh。
sudo ./set_dns.sh上面的方法可以工作,但是我想在普通用户执行时会提示需要sudo密码呢?我找到了一个方法,下面的脚本就可以做到。
#!/bin/bash if [ "$1" == 'done' ] then #the commands needs root permission list as below echo "nameserver 202.188.1.5" > /etc/resolv.conf echo "nameserver 202.188.0.133" >> /etc/resolv.conf cat /etc/resolv.conf else sudo $0 done fi我把它写成一个模板,只要替换'then'和'else'之间的那部分就行了。
随机文章:
Bash 补全技巧 2007-10-31录制和播放终端会话 2007-05-11grep输出匹配前后多行 2007-09-07标签页浏览的文件管理器 2007-09-02使用gprof剖析代码解决性能问题 2007-08-30
收藏到:Del.icio.us








评论