我有一台 VPS 服务器,它整天运行一个脚本,用于验证使用我们软件的客户。问题是,有时这个脚本会崩溃,我需要重新启动它。我认识一个人,我想让他在我不在的时候重新启动脚本,问题是我不想让他通过 FTP/SSH 访问 VPS,我想限制他的用户只能使用一组特定的命令。
例如只有这些命令(仅列出几个)
service mysqld start
screen -ls
答案1
您可以允许他以普通用户身份通过 SSH 连接到您的服务器,然后严格授予他 sudo 权限以执行您希望他执行的操作。
您应该为此添加一个新组(暂时将其命名为服务):
sudo addgroup services
将你的用户添加到该组:
sudo adduser your_guy_user services
编辑 /etc/sudoers.d/services 并为服务组添加一个条目:
%services ALL=(ALL) /usr/sbin/service
%services ALL=(ALL) /usr/bin/service mysqld *
%services ALL=(ALL) /path-to/screen
保存文件,让你的人通过 ssh 登录并尝试重新启动 mysql 服务。
如果您想限制他可以使用的命令,那么您必须更改这些命令的权限:
/bin/ping- 默认情况下755权限(所有者有读写,组有接收,其他有接收),这样每个人都可以执行该命令。如果您不想让您的用户使用 ping 命令,请执行chmod 750 /bin/ping
。这样,只有 root 用户和组 root 才有权执行该命令。这只是一个例子,您可以从这里推断。
因此,最终用户必须能够通过 SSH 登录到您的服务器才能重新启动该服务。当然,这可以通过其他不同的方式实现,例如使用充当 Web 服务器的 Python 脚本,以便用户连接到那里并使用用户名和密码登录并发出重新启动命令(脚本可以是 Python、Perl 或 PHP),但这需要编码并实际创建脚本。
所以我会选择第一个选项。