我想使用 Nginx(在 Ubuntu 服务器上)创建一个能够运行进程(执行命令)的 API,但 www-data 不是有权访问这些进程将处理的数据的用户。在不影响安全性的情况下,通常的执行方法是什么。换句话说,我如何让 API 以另一个用户的身份执行命令?
答案1
www-data 只是默认运行 NGINX 进程的用户,我假设您的 API 在 NGINX 后面运行,那么您的 API 将作为 www-data 执行。为了解决我认为您在测试时遇到的权限问题,您需要更改数据(如果是本地的)的权限以允许 www-data 用户和/或组读取/写入或为 NGINX 运行创建新用户。
使用 NGINX 时的一些注意事项:
不要向运行您的 Web 服务器的用户授予 root 访问权限,因为这样您的 Web 应用程序就会拥有对您系统的 root 访问权限,从而带来不必要的漏洞。
不要公开您的数据(向所有用户开放权限),而是将其限制为所有者和将访问它们的特定用户,即使您认为您的服务器是安全的。
如果这不是您想要的,请详细说明以获得更好、更准确的答案。
编辑:意识到我从来没有给你切换用户的命令:
要修改文件的权限,您可以使用修改模式和chown例如将文件的权限更改为 www-data 用户:
chmod 500 file1 file2 file3
chmod -R 500 directory1/
chown www-data:www-data file1 file2 file3
chown -R www:data:www-data directory1
应该可以让你开始了!
问候
答案2
在执行服务器上维护作业列表并使用 cron 等在本地运行作业(命令)听起来是个不错的方法。完全分离创建命令的 API 和要处理的数据。无需一直进行屏蔽和大量 chmod 等操作……