关于bash script中的权限切换

2013-05-20 22:16:32 +08:00
 happlebao
一些命令需要在root下运行,一些需要在普通权限下运行。大家是怎么处理这个问题的?
我只找到3种方案,都不是很好。
1.需要root的从standinput读取password
echo LOGINPASSWD | sudo -S COMMAND HERE
2.用expect配合
3.让这个script以root权限运行,脚本内需要普通用户的地方用
sudo -u User 或者
sudo bash <<EOF
whoami
id
EOF
做切换。

求更好的方法,或者用python调用?求例子。
4122 次点击
所在节点    Linux
11 条回复
dndx
2013-05-20 22:17:53 +08:00
Please Google "setuid"
halfbloodrock
2013-05-20 22:25:44 +08:00
我不知道我理解的是不是正确,普通用户run 脚本,然后脚本里有一些命令要用root权限。

我的方法:如果就1,2台机器
在visudo里配置command alias。然后脚本里写sudo command.
liprais
2013-05-20 22:27:45 +08:00
@halfbloodrock 这种需要输入密码啊....
halfbloodrock
2013-05-20 22:37:56 +08:00
@liprais 设为NOPASSWROD就可以了。
happlebao
2013-05-20 22:42:30 +08:00
@halfbloodrock 20台吧,一半ubuntu,一半os x。我是想拿bash写自动化环境配置脚本。每台机子都手动配的话就太累了...
little_cup
2013-05-21 00:01:13 +08:00
@dndx 我依稀记得是不能用于脚本的……
chemzqm
2013-05-21 02:28:29 +08:00
在脚本里一般情况需要root就是sudo,需要重定向就用sudo sh -c COMMOND
Ubuntu可修改sudo密码过期时间,命令sudo visudo添加
Defaults passwd_timeout=30
设置为30分钟后过期
运行脚本输入一次当前用户密码即可,或者使用expect
egen
2013-05-21 11:06:44 +08:00
个人觉得 sudo 跑脚本然后 sudo -u User 的方法好一点
如果普通权限跑一半遇到 sudo 到 root,需要输入密码是挺烦人的一件事,无人值守方面不大好
panzhc
2013-05-21 17:11:15 +08:00
把需要root执行权限的命令改成普通用户也可以执行呢?
chown 0.0 /path/to/file
chmod u+s /path/to/file
linchanx
2013-05-21 17:34:15 +08:00
setuid 可以让普通账号执行root账号才能执行的程序
glancesx
2013-05-23 21:05:01 +08:00
su - xxx -c " command "
xxx是普通用户

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/69579

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX