该用户当前不可用 - 但允许该用户运行脚本

该用户当前不可用 - 但允许该用户运行脚本

我在 /etc/passwd 中创建了特殊用户:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

我不想允许该用户登录(通过控制台、ssh、ftp,任何方式)。

他只是通过以下方式运行一个脚本:

sudo su secure -c '/home/someuser/secure.script'

但它给了我This user is currently not available.。如何将其设置为能够以这种方式运行脚本,但阻止该用户登录(控制台、ssh、ftp...)系统?


我注意到,当我/usr/sbin/nologin在命令行上输入时,计算机会响应This account is currently not available..

答案1

这是 的典型用例sudo

您正在混合sudo允许以另一个用户身份运行命令并且高度可配置(您可以有选择地指定哪个用户可以以哪个用户身份运行哪个命令)以及su如果您知道密码(或者是 root)则切换到另一个用户。su始终运行用 编写的 shell /etc/passwd,即使su -c使用了。因为这su/usr/sbin/nologin.

你应该使用

sudo -u secure /home/someuser/secure.script

由于是sudo可配置的,您可以控制谁可以使用此命令以及他/她是否需要输入密码才能运行它。您需要/etc/sudoers使用编辑visudo来执行此操作。 (编辑 /etc/sudoers 时要小心,并始终使用 visudo 来执行此操作。语法并不简单,一个错误可能会将您锁定在 root 帐户之外。)

sudoers 中的这一行允许组中的任何人somegroup运行命令secure

%somegroup    ALL=(secure) /home/someuser/secure.script

这允许组中的任何人无需输入密码somegroup即可运行命令:secure

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

这允许user1运行命令而secure无需输入密码:

user1    ALL=(secure) /home/someuser/secure.script

答案2

我发现主要问题是“ /usr/sbin/nologin”,/etc/passwd 当我想在这种情况下执行su时,它必须-s /bin/bash在里面,所以例如:su -s /bin/bash -c '/home/someuser/secure.script' secure

答案3

su正在使用 中指定的 shell /etc/passwd

您不需要su与 一起使用sudo

因此不要susudo: use混合sudo -u secure '/home/someuser/secure.script'

相关内容