无法像“useradd”创build的另一个没有密码的用户一样运行进程

我创build了一个用户来代表该用户运行某个进程:

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本身工作正常。

要么你可以指定正确的系统shell:

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

或者使用sudo运行这些命令,即使你的用户没有一个有效的shell,也可以运行,就像你的情况一样。

或者你不能像你指定/ bin / false那样使用sulogin你的用户。 这就是为什么系统要求input密码。

sudosu是完全不同的程序。 这是如何工作的:如果你不是根,它要求目标(成员)用户的密码。 你还没有设置密码的条件不会改变这个; 使用passwd为用户添encryption码。 如果您需要以其他用户的身份运行命令而不知道或提供该用户的密码,则应该使用sudo

从安全angular度来看,build立和使用sudo而不是su可能更好。 sudo系统会提示你input你自己的密码 – 或者根本没有密码(如果以这种方式configuration的话) – 而不是目标用户(你正试图使用​​的用户帐户)的密码。 这样您就不必在用户之间共享密码,如果您需要停止拥有root访问权限的用户(或者访问任何其他帐户),则不必更改root密码,这是一个给其他人造成不便; 你只需要撤销该用户的sudo访问。

su - usersudo等同于sudo -u user -s 。 如果你不想使用你自己的密码,你需要visudo并将这一行添加到你的sudoers文件中:

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

这给你的yourusername权限来运行/bin/bash用户anotheruser用户没有密码。