在shell脚本中使用su

时间:2012-06-15 01:03:14

标签: macos bash shell

如何在shell脚本中执行以下操作?

$ su my_user
Password: my_password

这是必需的,因为我需要在Mac上安装homebrew,并且它不允许我在sudo下安装它,但要求我拥有管理员权限。

$ sudo /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
Password:
Don't run this as root!

为什么我不能以当前用户(不是管理员)的身份运行它 -

$ /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
This script requires the user to be an Administrator. If this
sucks for you then you can install Homebrew in your home directory or however
you please; please refer to our homepage. If you still want to use this script
set your user to be an Administrator in System Preferences or `su' to a
non-root user with Administrator privileges.

作为管理员登录以运行脚本不是一个选项,我必须在脚本中su

2 个答案:

答案 0 :(得分:2)

在Mac上,root与管理员之间存在差异。管理员大致转换为标准Unix / Linux系统上的wheel组,这意味着“管理员”组中的组可以使用其密码获得提升的权限(àlasudo)。确保您尝试运行此用户的用户是管理员:单击左上角的Apple菜单,系统偏好设置,用户和放大器。组。它应该以你的名字说“管理员”;如果没有,那就是你的问题。单击锁定(窗口左下角),在计算机上输入管理员帐户的用户名和密码,单击您的用户,然后选中“允许用户管理此计算机”框。

答案 1 :(得分:0)

你需要从shell外面做这件事,比如bash或ssh或telnet,由'expect'管理 试试

man expect

或简短介绍 http://en.wikipedia.org/wiki/Expect