Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从bash以root用户身份登录并执行其他操作_Linux_Bash_Logging_Heredoc_Spawn - Fatal编程技术网

Linux 如何从bash以root用户身份登录并执行其他操作

Linux 如何从bash以root用户身份登录并执行其他操作,linux,bash,logging,heredoc,spawn,Linux,Bash,Logging,Heredoc,Spawn,这是我的简单聚会: cat test.sh #!/bin/bash echo "hello" su - root -c /path/to/script.sh <<EOF password EOF whoami echo "good bye" cat test.sh #!/bin/bash 回音“你好” SU-SROOT -C/PATS/ToS/Script。SH 做这种事情不是安全的或标准的做法(事实上很多人认为它是不

这是我的简单聚会:

cat test.sh

#!/bin/bash 
echo "hello"
su - root -c /path/to/script.sh <<EOF
password                              
EOF
whoami
echo "good bye"
cat test.sh
#!/bin/bash
回音“你好”

SU-SROOT -C/PATS/ToS/Script。SH

做这种事情不是安全的或标准的做法(事实上很多人认为它是不可靠的),在脚本中设置密码真的不是一个好主意。一种更标准的方法是简单地期望整个脚本以root权限执行,或者只是让脚本提示输入密码。您还可以使用

/etc/suoders
中的
NOPASSWD
选项,允许特定用户通过sudo运行各种命令,而无需密码

但是,现在您已经意识到了风险,可以使用
sudo-kS
让sudo从
stdin
读取密码:

sudo -kSs << EOF
password
whoami
echo "Not a good idea to have a password encoded in plain text"
EOF

<代码> SUDO-KSS

这样做是不安全的或标准的做法(事实上很多人认为它是不可靠的),在脚本中输入密码真的不是一个好主意。一种更标准的方法是简单地期望整个脚本以root权限执行,或者只是让脚本提示输入密码。您还可以使用

/etc/suoders
中的
NOPASSWD
选项,允许特定用户通过sudo运行各种命令,而无需密码

但是,现在您已经意识到了风险,可以使用
sudo-kS
让sudo从
stdin
读取密码:

sudo -kSs << EOF
password
whoami
echo "Not a good idea to have a password encoded in plain text"
EOF

sudo-kSs你应该改为在上面问这个问题。是的,我问了…但是没有回答对不起,但是关于一般操作系统使用/脚本的问题没有。是的…谢谢..我应该有一些人知道如何解决你应该改为在上面问这个问题。是的,我问了…但是没有回答对不起,但是关于一般操作系统使用/脚本编写的问题不是。是的…谢谢..我想应该有一些人知道如何解决
cat test3.sh
#!/bin/bash 
echo "hello"
su root <<EOF
password                              
EOF
whoami
echo "good bye"
#!/bin/bash
echo "hello"
sudo -s <<EOF
<password>
echo Now I am root
id                                                                      
echo "yes!"
EOF
whoami
echo "good bye"
./script.sh
hello
[sudo] password for <user>:
#!/usr/bin/expect -f
spawn sudo -s <<EOF
expect "assword for user:"
send -- "password\r"                                                                      
expect eof
spawn sudo -s <<EOF
[sudo] password for user: 
/bin/bash: <<EOF: command not found
sudo -kSs << EOF
password
whoami
echo "Not a good idea to have a password encoded in plain text"
EOF