无法以“useradd”创建的另一个用户身份运行进程(无密码)

无法以“useradd”创建的另一个用户身份运行进程(无密码)

我创建了一个用户,仅代表该用户运行某个进程:

sudo useradd -r -s /bin/false -d /var/lib/my_app123 my_user123

现在,为了代表“my_user123”运行该进程,我执行以下操作:

su - my_user123

1) 它要求我输入密码。什么密码?“my_user123”没有密码。如何解决这个问题?

2)或者以“my_user123”身份运行“/var/lib/my_app123/some_process”的正确方法是什么?

sudo 本身运行良好。

答案1

您可以指定正确的系统 shell:

su - youruser -s /bin/bash -c "yourcommand"

或者使用 sudo 运行命令,即使您的用户没有有效的 shell,它也能起作用,就像您的情况一样。

或者您无法使用 su 登录,因为您指定 /bin/false 作为您用户的 shell。这就是系统要求输入密码的原因。

答案2

sudosu完全不同的程序。这就是su有效:如果您不是 root 用户,它会要求输入目标(su替代)用户的密码。您尚未设置密码的条件不会改变这一点;使用passwd为用户添加密码。如果您需要以另一个用户的身份运行命令,而又不知道或不提供该用户的密码,则应使用sudo,。

从安全角度来看,最好设置和使用 须藤而不是su。系统sudo将提示您输入自己的密码(如果配置为这样,则根本不输入密码)而不是目标用户(您尝试使用的用户帐户)的密码。这样,您不必在用户之间共享密码,如果您需要阻止用户拥有 root 访问权限(或访问任何其他帐户),您不必更改 root 密码,这会给其他人带来不便;您只需要撤销该用户的 sudo 访问权限。

相当于。如果您希望不使用自己的密码执行此操作,sudo则需要su - usersudo -u user -svisudo并将此行添加到您的sudoers文件:

yourusername    ALL=(anotheruser) NOPASSWD: /bin/bash

这将授予以无密码用户身份yourusername运行的权限。/bin/bashanotheruser

相关内容