我需要编写一个脚本,其中我必须以 oracle 用户身份执行一组特定命令,并以 root 用户身份执行一些命令,该怎么做?

我需要编写一个脚本,其中我必须以 oracle 用户身份执行一组特定命令,并以 root 用户身份执行一些命令,该怎么做?

我需要编写一个脚本,在其中我必须以 oracle 用户身份执行一组特定命令,然后成为 root 用户并执行一些命令,然后返回到 oracle 用户。所有这些都必须在一个脚本中完成......如何做到这一点?更具体地说,我基本上是自动化 OTD(Oracle Traffic Director)安装和配置,我被要求编写一个 shell 脚本。其安装的所有步骤都是以oracle用户身份完成的,但是这两个命令:

chown root 端口绑定

chmod 4750 端口绑定

必须成为root用户后执行,进一步的自动化步骤必须再次以oracle用户身份完成。所以我需要一种在脚本中切换用户(root 和 oracle)的方法。

答案1

以 root 身份执行脚本,对于需要以其他用户身份执行的命令,请使用-usudo 开关。请参阅 sudo 的手册页man sudo

# sudo -u user echo test
test

答案2

以 oracle 用户身份执行脚本。在您的脚本中,对于需要 root 权限的部分,请sudo像在命令行上一样使用。例如

#!/bin/sh
echo 'This command is echoed by oracle user'
sudo echo 'This command is echoed with superuser privileges'

然后,配置 sudoers 文件(通过visudo)以确保需要运行的特定命令可以在不需要密码的情况下运行。在文件底部添加以下行并根据需要更改命令 - 对于要运行的每个命令,您都需要其中一行sudo

oracle localhost = (root) NOPASSWD: /path/to/command

相关内容