发展
在我的开发服务器上,我有一个名为 的 Ubuntu 用户user1
。user1
运行时PyCharm
(user1
必须运行 Django 应用程序),然后sudo
应用程序在稍后阶段需要创建一个文件夹folder1
来保存 的一些个人文件。现在,当使用=运行user1
时,此文件夹被创建。PyCharm
sudo
owner:group
root:root
- 为什么我会
owner:group
在文件夹中看到这个?是因为我使用了 吗sudo
?
现在,user1
运行时PyCharm
不使用=sudo
创建相同的文件夹owner:group
user1:user1
为什么我会
owner:group
在文件夹中看到这个?是不是因为我没有使用sudo
并以 身份登录user1
?哪个过程决定创建的文件夹属于哪个组?
生产
再次user1
必须运行 Django 应用程序,但gunicorn
这次通过服务运行,因为它是一个只能使用 sudo 运行的服务,所以我总是得到创建folder1
为owner:group
= root:root
。
现在,由于我需要folder1
创建的状态是user1:user1
,而如果没有适当的设置,我将无法运行该gunicorn
服务,那么sudo
有哪些permission
设置可以实现这一点?请记住,用户需要删除并重新创建此文件夹及其所有子文件夹,并使用相同的所需权限,因此简单的手动操作chmod
无法解决问题。
- 我应该如何配置生产帐户才能实现这种行为?
如果我让您感到困惑,我很抱歉,但我已尝试非常详细地描述问题。非常感谢。
答案1
问题 1 和问题 2:您自己已经回答了这些问题!运行目录创建命令的用户将成为目录的所有者。当您使用 运行命令时sudo
,则此命令(默认情况下)以超级用户身份运行。超级用户被称为root
,因此root
成为新目录的所有者。当您运行不带 的命令时sudo
,则运行该命令的用户(user1
在您的情况下)将成为所创建目录的所有者。
问题 3:对于每个用户,都有一个默认组,在创建文件/目录时使用(不谈一些细节)。这是groups
在 shell 中运行命令时看到的第一个组。在 Ubuntu 中,通常有一个与用户名同名的默认组。
问题 4:如果一切都在生产环境中运行,我不确定为什么folder1
需要 可以访问。解决权限问题的一种可能方法是在 被创建时。但说实话,如果不了解您实际在做什么,整个设置对我来说听起来有点不稳定。user1
root
chown user1:user1 /path/to/folder1
root