以root身份运行内联shell脚本

时间:2017-04-30 14:21:41

标签: bash shell

我有一个用户,他是一个无密码的sudoer。我需要和他一起执行shell脚本文件,并让他执行一个块作为sudo。 E.g:

BULK INSERT Product
FROM 'data/product.dat'
WITH ( DATA_SOURCE = 'MyAzureBlobStorageAccount');

SELECT Color, count(*)
FROM OPENROWSET(BULK 'data/product.bcp', DATA_SOURCE = 'MyAzureBlobStorage',
 FORMATFILE='data/product.fmt', FORMATFILE_DATA_SOURCE = 'MyAzureBlobStorage') as data
GROUP BY Color;

但没有任何作用。我试过了: su root <<"AS_ROOT" # do something with my linux AS_ROOT su - root <<...

它向我咆哮。我在ubuntu 16.04 lts。

谢谢。

1 个答案:

答案 0 :(得分:1)

正如Cyrus所指出的,susudo配置不适用的不同实用程序。

听起来你正在寻找这样的东西:

sudo -s <<'AS_ROOT'
echo "Hi from $USER."
AS_ROOT

这应输出Hi from root.

请注意,-s需要sudo来创建 shell 才能解释通过stdin(here-doc)传递的命令。该shell是当前用户的默认shell,如环境变量$SHELL中所反映的那样。