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/9/silverlight/4.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 验证sudo命令中的密码_Linux_Command_Sudo - Fatal编程技术网

Linux 验证sudo命令中的密码

Linux 验证sudo命令中的密码,linux,command,sudo,Linux,Command,Sudo,如何针对所提到的用户验证我在以下sudo命令中给出的密码 sh -c "echo <password> | sudo -u <username> <command/script>" sh-c“echo | sudo-u” 即使我给出了不正确的密码,这个命令也对我有效 根据@NikosC的评论 通过“验证”,我的意思是系统应该确保我给出了正确的密码。假设的-password是password。如果我将密码设置为blahblah而不是password,它仍然

如何针对所提到的用户验证我在以下
sudo
命令中给出的密码

sh -c "echo <password> | sudo -u <username> <command/script>"
sh-c“echo | sudo-u”
即使我给出了不正确的密码,这个命令也对我有效


根据@NikosC的评论


通过“验证”,我的意思是系统应该确保我给出了正确的密码。假设的-password是password。如果我将密码设置为blahblah而不是password,它仍然有效。

告诉sudo使用
-S
选项从标准输入读取密码,不要考虑使用
-k
选项从以前的身份验证中缓存的凭据。此外,您应该能够直接使用管道,而无需生成新的shell。所以,只要做:

echo password | sudo -k -S -u username command/script echo密码| sudo-k-S-u用户名命令/脚本 有几件事需要注意。首先,大多数系统配置sudo的方式是获取当前用户的密码,而不是目标用户的密码。要将sudo配置为读取目标用户的密码,必须设置:

Defaults targetpw 默认值targetpw
在sudo配置(/etc/sudoers或/etc/sudoers.d/)中的文件中。

告诉sudo使用
-S
选项从标准输入读取密码,不要考虑使用
-k
选项从以前的身份验证中缓存的凭据。此外,您应该能够直接使用管道,而无需生成新的shell。所以,只要做:

echo password | sudo -k -S -u username command/script echo密码| sudo-k-S-u用户名命令/脚本 有几件事需要注意。首先,大多数系统配置sudo的方式是获取当前用户的密码,而不是目标用户的密码。要将sudo配置为读取目标用户的密码,必须设置:

Defaults targetpw 默认值targetpw

在您的sudo配置中(/etc/sudoers或/etc/sudoers.d/中的文件)。

如果您将
-u传递给您的\u用户名
,它将不会要求您输入密码。您还需要通过
-S
选项才能从STDIN读取密码。我是否可以实现我在问题中提到的目标?我的要求是我需要提及用户名和密码,并验证它们。你能解释一下“验证”是什么意思吗?显然,苏多已经做到了。通过“验证”,我的意思是系统应该确保我给出了正确的密码。假设用户名的密码是password。如果我将密码设置为blahblah而不是password,它仍然有效。正如我在回答中提到的,这是因为系统上的sudo配置为使用源用户密码而不是目标用户密码。由于sudo会将密码缓存大约5分钟,因此后续通话不需要密码。如果您传递
-u您的用户名
,它将不会要求您输入密码。您还需要通过
-S
选项才能从STDIN读取密码。我是否可以实现我在问题中提到的目标?我的要求是我需要提及用户名和密码,并验证它们。你能解释一下“验证”是什么意思吗?显然,苏多已经做到了。通过“验证”,我的意思是系统应该确保我给出了正确的密码。假设用户名的密码是password。如果我将密码设置为blahblah而不是password,它仍然有效。正如我在回答中提到的,这是因为系统上的sudo配置为使用源用户密码而不是目标用户密码。由于sudo会将密码缓存大约5分钟,因此后续调用不需要密码。据我所知@user1649068希望传递用户名的密码,而不是当前用户的密码。sudo接受当前用户的密码,而不是用户名的密码。@loentar sudo接受您配置的用户的密码。这可以是目标用户或当前用户。那么,请尝试使用用户名密码启动此脚本并查看结果@loentar如果您将sudo配置为获取目标的密码,那么它将工作。这是通过在/etc/sudoersSure中设置
默认值targetpw
完成的,但您必须更改系统文件。据我所知@user1649068希望传递用户名的密码,而不是当前用户的密码。sudo接受当前用户的密码,而不是用户名的密码。@loentar sudo接受您配置的用户的密码。这可以是目标用户或当前用户。那么,请尝试使用用户名密码启动此脚本并查看结果@loentar如果您将sudo配置为获取目标的密码,那么它将工作。这可以通过在/etc/sudoersSure中设置默认的targetpw来完成,但您必须更改系统文件。