如何在开发和生产之间设置正确的权限

如何在开发和生产之间设置正确的权限

发展

在我的开发服务器上,我有一个名为 的 Ubuntu 用户user1user1运行时PyCharmuser1必须运行 Django 应用程序),然后sudo应用程序在稍后阶段需要创建一个文件夹folder1来保存 的一些个人文件。现在,当使用=运行user1时,此文件夹被创建。PyCharmsudoowner:grouproot:root

  1. 为什么我会owner:group在文件夹中看到这个?是因为我使用了 吗sudo

现在,user1运行时PyCharm不使用=sudo创建相同的文件夹owner:groupuser1:user1

  1. 为什么我会owner:group在文件夹中看到这个?是不是因为我没有使用sudo并以 身份登录user1

  2. 哪个过程决定创建的文件夹属于哪个组?

生产

再次user1必须运行 Django 应用程序,但gunicorn这次通过服务运行,因为它是一个只能使用 sudo 运行的服务,所以我总是得到创建folder1owner:group= root:root

现在,由于我需要folder1创建的状态是user1:user1,而如果没有适当的设置,我将无法运行该gunicorn服务,那么sudo有哪些permission设置可以实现这一点?请记住,用户需要删除并重新创建此文件夹及其所有子文件夹,并使用相同的所需权限,因此简单的手动操作chmod无法解决问题。

  1. 我应该如何配置生产帐户才能实现这种行为?

如果我让您感到困惑,我很抱歉,但我已尝试非常详细地描述问题。非常感谢。

答案1

问题 1 和问题 2:您自己已经回答了这些问题!运行目录创建命令的用户将成为目录的所有者。当您使用 运行命令时sudo,则此命令(默认情况下)以超级用户身份运行。超级用户被称为root,因此root成为新目录的所有者。当您运行不带 的命令时sudo,则运行该命令的用户(user1在您的情况下)将成为所创建目录的所有者。

问题 3:对于每个用户,都有一个默认组,在创建文件/目录时使用(不谈一些细节)。这是groups在 shell 中运行命令时看到的第一个组。在 Ubuntu 中,通常有一个与用户名同名的默认组。

问题 4:如果一切都在生产环境中运行,我不确定为什么folder1需要 可以访问。解决权限问题的一种可能方法是在 被创建时。但说实话,如果不了解您实际在做什么,整个设置对我来说听起来有点不稳定。user1rootchown user1:user1 /path/to/folder1root

相关内容