编写一个可以root / sudo身份运行的linux脚本

时间:2011-10-07 17:32:36

标签: linux shell

我想做的是:

  • 编写一个脚本,用yum安装一些软件:yum install whatever
  • 此脚本将由没有root权限或sudo权限的用户执行

我不反对将root密码放在脚本中,我只是不知道该怎么做,我的意思是我的脚本看起来像这样:

sudo -u root -p password
yum install whatever

第一行是我不知道自己在做什么,我理解将root凭据放在这里所涉及的安全风险,但这对此并不重要。

2 个答案:

答案 0 :(得分:5)

The full power is described here

sudo的灵活性被广泛低估。这导致非常糟糕的做法(如sudo su -佳能球手术方法)。

更好的方法是明确允许您打算在不使用密码的情况下允许的命令

phill = NOPASSWD: /bin/ls, /usr/bin/lprm

您可以选择对作为特定管理员用户运行的特定主机的特定用户执行此操作。您甚至可以阻止用户将shell转义作为参数传递。您可以使sudo阻止已启动的程序动态执行其他应用程序等。您需要read the man-page for sudoers (and be sure to read the procedures for editing this special file!)

这是一些小事,(from here):

User_Alias     OPERATORS = joe, mike, jude
Runas_Alias    OP = root, operator
Host_Alias     OFNET = 10.1.2.0/255.255.255.0
Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm

OPERATORS ALL=ALL
#The users in the OPERATORS group can run any command from any terminal.

linus ALL=(OP) ALL
# The user linus can run any command from any terminal as any user in the OP group (root or operator).

user2 OFNET=(ALL) ALL
# user user2 may run any command from any machine in the OFNET network, as any user.

user3 ALL= PRINTING
# user user3 may run lpc and lprm from any machine.

go2linux ALL=(ALL) ALL
# user go2linux may run any command from any machine acting as any user. (like Ubuntu)

 If you want not to be asked for a password use this form
go2linux ALL=(ALL) ALL NO PASSWD: ALL

答案 1 :(得分:0)

如果用户没有sudo权限,那么调用sudo是没用的,因为它只会拒绝访问。另外:使用sudo,用户将要求输入root密码,但需要输入自己的密码。