Bash 脚本普通用户到 Root

Bash 脚本普通用户到 Root

我有一些问题。我正在尝试创建一些 bash 脚本来自动执行某些任务。我需要以普通用户身份执行任务的第一步,然后 su - 以 root 身份完成任务。

我一直在想是否有办法做到这一点?到目前为止,我只能以普通用户身份启动 bash,完成第一步,要求输入 su - 密码,但在以 root 身份连接后,脚本停止。

以 root 身份登录后还能继续使用 bash 吗?

先感谢您。

附言:如果我不够准确,或者您需要一些信息,请随时询问,我会尽力纠正这些错误。

答案1

您是否尝试过使用sudo somecommand而不是尝试切换用户?您的用户需要属于“wheel”用户组(取决于您的系统)才能执行此操作。

su改变环境(用户变量等),所以,虽然我还没有测试过,但你可能无法在 shell 脚本中做到这一点。

例如:
你的 shell 脚本是

#Do these commands as a normal user
echo "Hello World"
cat ./somefile

#Do these commands as root
su -
echo "Hello again"
cat /etc/somesystemfile

尝试将其更改为

#Do these commands as a normal user
echo "Hello World"
cat ./somefile

#Do these commands as root
sudo echo "Hello again"
sudo cat /etc/somesystemfile

答案2

以 root 身份启动该进程,然后使用 执行普通用户任务su (-) user -c ..command..,最后以 root 身份完成。这样它甚至不会要求输入密码。

答案3

如果您希望脚本能够以 root 身份执行特定命令,而当它以 another_user 身份运行时,那么您应该使用 sudo。

配置 sudo 以允许 another_user 执行特定命令,在 sudoers 文件中类似如下内容,

someuser ALL=/path/to/specific_command

然后在 Bash 脚本中使用,

sudo /path/to/specific_command -some -args

如果您希望 bash 脚本以 root 身份运行大量命令,或者运行 mv 或 cp 等常规命令,您可能需要从不同角度来处理这个问题。编写脚本,使其以 root 身份运行(例如在 root 的 crontab 中),并让其使用 'su - 某些用户' 因为 root 无需输入密码即可做到这一点。

答案4

我找到了答案,只需要使用 su - -c "" cmd。

例如:

tar /home/me /dev/null

su - -c "yum update -y"

tar /home/me /dev/null

su - -c "
yum install xterm -y
yum clean-all
yum remove xterm -y

"

相关内容