我需要编写一个脚本,在其中我必须以 oracle 用户身份执行一组特定命令,然后成为 root 用户并执行一些命令,然后返回到 oracle 用户。所有这些都必须在一个脚本中完成......如何做到这一点?更具体地说,我基本上是自动化 OTD(Oracle Traffic Director)安装和配置,我被要求编写一个 shell 脚本。其安装的所有步骤都是以oracle用户身份完成的,但是这两个命令:
chown root 端口绑定
chmod 4750 端口绑定
必须成为root用户后执行,进一步的自动化步骤必须再次以oracle用户身份完成。所以我需要一种在脚本中切换用户(root 和 oracle)的方法。
答案1
以 root 身份执行脚本,对于需要以其他用户身份执行的命令,请使用-u
sudo 开关。请参阅 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