如何以 /usr/sbin/nologin 作为 Shell 的用户身份运行命令?

Tom*_*aso 104 linux su login shell bash

我需要做的就是以特定用户身份运行特定脚本,该用户nologin/false/etc/passwd.

我会以 root 身份运行脚本,这应该以另一个用户身份运行。跑步:

~# su -c "/bin/touch /tmp/test" testuser
Run Code Online (Sandbox Code Playgroud)

会工作,但我需要一个有效的测试用户外壳。我知道我可以禁用密码passwd -d testuser并将外壳保留为/bin/bash这种方式会安全一点,但我需要有nologin/false外壳。

基本上我需要的是crontab当我们将作业设置为以特定用户身份运行时会做什么,而不管这个用户是否有nologin/falseshell。

ps 我发现这个线程Executing a command as a nologin user,但我不知道如何concatenate将命令su -s /bin/sh $user发送到我需要运行的脚本。

use*_*517 140

您可以使用 -s 切换到 su 来运行特定的 shell

su -s /bin/bash -c '/path/to/your/script' testuser
Run Code Online (Sandbox Code Playgroud)

sudo如果testuser是无密码用户,则在上面添加。)

  • @Wesley 发现您需要成为 root 才能为无密码用户运行该命令。 (3认同)
  • 如果用户没有密码怎么办? (2认同)

Han*_*an5 15

sudo -u如果你安装了它,你可以这样做:

# whoami
root
# sudo -u apache whoami
apache
# getent passwd apache
apache:x:48:48:Apache:/var/www:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)


ada*_*ptr 7

通过提供脚本作为执行到 /bin/sh 的参数:

su -s "/bin/sh /your/script/location" username
Run Code Online (Sandbox Code Playgroud)