以另一个无密码用户身份运行命令-sudo失败?

sdbbs

我以身份登录到我的服务器userA,该用户有一个bash外壳,一切正常。

然后,出于程序目的,我必须要做sudo adduser --system --home=/home/userB --group userB此用户是显然密码的,由内容判断/etc/passwd/etc/shadow

$ grep userB /etc/passwd
userB:x:Z08:WW9::/home/userB:/bin/false
$ sudo grep userB /etc/shadow
userB:*:16XXX:0:YYYYY:7:::

另外,主目录中没有/home/userB/.profile,也没有任何/home/userB/.bash*文件userB

现在,当我在为我登录userA,我想执行的命令,userB尤其检查$PATHuserB看到。因此,我尝试通过编辑EDITOR=/usr/bin/nano sudo visudo,并添加以下任userA一行:

...
# User privilege specification
root    ALL=(ALL:ALL) ALL
#userA      ALL=(userB) NOPASSWD: /bin/bash
userA       ALL = (userB) NOPASSWD: ALL
...

...然后保存文件,从远程Shell注销,然后重新登录为userA然后我尝试运行:

$ sudo -iu userB; echo $?
1
$ sudo -S -u userB -i /bin/bash -l -c 'echo $HOME'; echo $?
1
$ sudo -i -u userB echo \$HOME; echo $?
1

...很明显,没有任何效果-也没有错误。然后我以为我会strace使用以下命令之一,而实际上我得到了一个错误:

$ strace sudo -iu userB
...
write(2, "sudo: effective uid is not 0, is"..., 140sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?
) = 140
exit_group(1)                           = ?
+++ exited with 1 +++

但是,nosuid我猜这不是根分区上的问题:

$ mount | grep '/ '
/dev/sdaX on / type ext4 (rw,errors=remount-ro)

所以现在我真的不知道该怎么办。userA在这种情况下,是否可以将所有命令都以-的方式运行(例如,打印$HOME环境变量)userB

斯蒂芬·哈里斯(Stephen Harris)

sudo联机帮助页:

-i, --login
             Run the shell specified by the target user's password data-
             base entry as a login shell. 

您的userB/bin/false作为外壳程序,因此这是运行的命令。

% /bin/false ; echo $? 
1

因此,要解决此问题,您需要将userB的shell更改为/bin/bash(或/bin/sh您喜欢的任何一种),或者不使用该-i标志进行sudo。您是否需要登录外壳?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以sudo身份作为另一个用户运行cd时出现问题

无密码sudo适用于一个用户,但不适用于另一个用户

当另一个用户执行Alias命令失败

以 root 用户身份以另一个用户身份执行 sudo Bash 脚本

Ansible:如何使用“ sudo su -c <COMMAND> <USER>”以另一个用户身份执行命令?

我如何使用sudo在bash子外壳中以另一个用户身份执行一系列命令?

运行命令,如果失败,则运行另一个,如果成功,则结束

以组身份运行失败(sudo -g)

如何在另一个用户内部运行sudo命令,或向用户授予与管理员相同的特权?

sudo作为其环境的另一个用户

sudo访问另一个用户的帐户

Bash:仅当另一个命令(具有另一个特定模式)失败时,运行命令(具有特定模式)

一个非root用户如何将sudo转换为另一个没有密码的非root用户?

致命的:[xxxx]:失败!=> {“ msg”:“缺少sudo密码”}

su身份验证失败,sudo丢失

wget | sudo在Ansible命令中失败

Ansible SSH作为一个用户,Sudo作为另一个用户

以特定用户身份启用无密码sudo

是否在没有目标用户密码的情况下阻止sudo用户切换到另一个用户?

密码不适用于sudo(“身份验证失败”)

SSM 发送命令失败,是否可以从一个 aws 帐户向另一个帐户运行 ssm 命令

jq 命令的执行方式不同 - 一个成功,另一个失败

如何使用我的sudo权限确认另一个用户的sudo权限?

有没有一种方法可以在不运行另一个不必要的命令的情况下运行sudo?

以另一个没有密码的用户身份运行Shell脚本

允许无密码用户更改为另一个无密码用户

脚本无法识别sudo密码并且失败

失败的su或sudo上的身份验证延迟会错开

将文件移动到另一个用户的主目录(没有sudo)?