我在 /etc/passwd 中创建了特殊用户:
secure:x:2000:2000:secure:/bin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
我不想允许这个用户登录(通过控制台、ssh、ftp,任何方式)。
他只是通过以下方式运行一个脚本:
sudo su secure -c '/home/someuser/secure.script'
Run Code Online (Sandbox Code Playgroud)
但它给了我This user is currently not available.。如何将其设置为能够以这种方式运行脚本但阻止该用户登录系统(控制台、ssh、ftp 等)?
我注意到当我/usr/sbin/nologin在命令行上输入时,计算机会以This account is currently not available..
cg9*_*909 38
这是sudo.
您正在混合sudo允许以另一个用户身份运行命令并且具有高度可配置性(您可以有选择地指定哪个用户可以以哪个用户身份运行哪个命令)以及su如果您知道密码(或者是 root用户)则切换到另一个用户。su始终运行以 编写的外壳/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
Run Code Online (Sandbox Code Playgroud)
这允许组中的任何人在不输入密码的情况下somegroup运行命令secure:
%somegroup ALL=(secure) NOPASSWD: /home/someuser/secure.script
Run Code Online (Sandbox Code Playgroud)
这允许user1在secure不输入密码的情况下运行命令:
user1 ALL=(secure) /home/someuser/secure.script
Run Code Online (Sandbox Code Playgroud)
pet*_*ter 22
我发现主要问题是“ /usr/sbin/nologin”在/etc/passwd
这种情况下,当我想执行 su 时,它必须在-s /bin/bash里面,例如:su -s /bin/bash -c '/home/someuser/secure.script' secure
su正在使用 中指定的 shell /etc/passwd。
您不需要su与 一起使用sudo。
因此不要su与sudo: use混合sudo -u secure '/home/someuser/secure.script'。
| 归档时间: |
|
| 查看次数: |
91920 次 |
| 最近记录: |