Bash脚本正常用户到Root

我有一些问题。 我试图创build一些bash脚本来自动执行一些任务。 我需要以普通用户的身份完成任务的第一步,并且以root身份完成任务。

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

以root身份login后可以继续使用bash吗?

先谢谢你。

ps:如果我不精确,或者需要一些信息,请随时询问,我会尽我所能纠正这些错误。

你有没有尝试使用sudo somecommand而不是尝试切换用户? 您的用户将需要在“轮”用户组(取决于您的系统)来做到这一点。

su改变了环境(用户variables等),虽然我没有testing过,但是你可能无法在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 

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

如果有特定的命令,希望脚本能够以root身份执行,而以另一个用户身份运行,则应使用sudo。

configurationsudo以允许another_user在sudoers文件中执行特定的命令,

 someuser ALL=/path/to/specific_command 

然后在你的bash脚本中使用,

 sudo /path/to/specific_command -some -args 

如果你想让你的bash脚本以root身份运行很多命令,或者运行诸如mv或cp之类的常规命令,你可能想从另一个angular度来看这个命令。 编写脚本以便以root用户身份运行(例如,在root用户的crontab中),并使用“ su-someuser ”来执行非root用户命令,因为root可以在不input密码的情况下执行该操作。

我find答案,只需使用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 "