[Seek Help] 请教一个sudo问题
Tofloor
poster avatar
jjcui8595
deepin
2022-04-29 19:20
Author

已知,打开终端执行sudo su,输入密码后,提示符发生改变,成为root@ccc-PC:/home/ccc#

问题,打开终端执行echo "password"|sudo -S su后,提示符没有发生改变,仍然是ccc@ccc-PC:~$(再以sudo执行命令不需要输入密码)。

请问这是为什么?谢谢

Reply Favorite View the author
All Replies
SamLukeYes
deepin
2022-04-29 20:10
#1

短时间内重复使用 sudo 本来就是不需要重复输入密码的

Reply View the author
hotime
deepin
2022-04-29 20:15
#2

会不会是写反顺序了呢?
你看我的运行结果:

miix@miix-PC:~/Desktop$ sudo mkdir test
请输入密码:
验证成功
miix@miix-PC:~/Desktop$ echo "frwefbuurb534fej" | sudo -S su
bash:行1: frwefbuurb534fej:未找到命令
miix@miix-PC:~/Desktop$ echo "frwefbuurb534fej" | sudo -S su
bash:行1: frwefbuurb534fej:未找到命令
miix@miix-PC:~/Desktop$ sudo -S su | echo "frwefbuurb534fej"
frwefbuurb534fej
root@miix-PC:/home/miix/Desktop#
Reply View the author
jjcui8595
deepin
2022-04-29 20:17
#3
SamLukeYes

短时间内重复使用 sudo 本来就是不需要重复输入密码的

新打开终端测试的

Reply View the author
jjcui8595
deepin
2022-04-29 20:23
#4
hotime

会不会是写反顺序了呢?
你看我的运行结果:

miix@miix-PC:~/Desktop$ sudo mkdir test
请输入密码:
验证成功
miix@miix-PC:~/Desktop$ echo "frwefbuurb534fej" | sudo -S su
bash:行1: frwefbuurb534fej:未找到命令
miix@miix-PC:~/Desktop$ echo "frwefbuurb534fej" | sudo -S su
bash:行1: frwefbuurb534fej:未找到命令
miix@miix-PC:~/Desktop$ sudo -S su | echo "frwefbuurb534fej"
frwefbuurb534fej
root@miix-PC:/home/miix/Desktop#

谢谢,不是这个问题。看这个

https://blog.csdn.net/coraline1991/article/details/120234508

Reply View the author
hotime
deepin
2022-04-29 22:50
#5
jjcui8595

谢谢,不是这个问题。看这个

https://blog.csdn.net/coraline1991/article/details/120234508

我知道你是什么意思了,你意思是想首次运行终端时,首次鉴权和切换到root在一条命令里实现,但是它不允许,你想问为什么?那只能说它就这么设定的了,既然不允许,那你就分两条命令操作吧。

echo "password" | sudo -S whoami
sudo su

如何硬要深究为什么不可以的话,我的理解是因为管道,因为这条命令使用了“|”符号,所以这很明显是个管道命令。
管道就是把命令1的标准输出发送给命令2的标准输入,把命令2的标准输出发送给命令3的标准输入,依次类推。。。
最后一个命令会在当前shell进程的子shell进程中执行,子shell进程中切换到root当然影响不到当前shell进程。所以你仍然是当前用户。
如果有不对,还请指正。

Reply View the author
jjcui8595
deepin
2022-04-29 23:36
#6
hotime

我知道你是什么意思了,你意思是想首次运行终端时,首次鉴权和切换到root在一条命令里实现,但是它不允许,你想问为什么?那只能说它就这么设定的了,既然不允许,那你就分两条命令操作吧。

echo "password" | sudo -S whoami
sudo su

如何硬要深究为什么不可以的话,我的理解是因为管道,因为这条命令使用了“|”符号,所以这很明显是个管道命令。
管道就是把命令1的标准输出发送给命令2的标准输入,把命令2的标准输出发送给命令3的标准输入,依次类推。。。
最后一个命令会在当前shell进程的子shell进程中执行,子shell进程中切换到root当然影响不到当前shell进程。所以你仍然是当前用户。
如果有不对,还请指正。

谢谢。似乎明白了,还得消化消化

Reply View the author
jjcui8595
deepin
2022-04-29 23:40
#7
hotime

我知道你是什么意思了,你意思是想首次运行终端时,首次鉴权和切换到root在一条命令里实现,但是它不允许,你想问为什么?那只能说它就这么设定的了,既然不允许,那你就分两条命令操作吧。

echo "password" | sudo -S whoami
sudo su

如何硬要深究为什么不可以的话,我的理解是因为管道,因为这条命令使用了“|”符号,所以这很明显是个管道命令。
管道就是把命令1的标准输出发送给命令2的标准输入,把命令2的标准输出发送给命令3的标准输入,依次类推。。。
最后一个命令会在当前shell进程的子shell进程中执行,子shell进程中切换到root当然影响不到当前shell进程。所以你仍然是当前用户。
如果有不对,还请指正。

再次感谢

Reply View the author
138******24
deepin
2022-04-30 00:38
#8

我一般都是用sudo -i

Reply View the author