如何将文件创建为特定组

如何将文件创建为特定组

这听起来可能有点奇怪。

我的用户名是 ubuntu,我的机器名叫 ubuntu。

我想要的是当我在某个文件夹中创建一个具有签名的文件时

user      group
ubuntu    www-data

目前,无论我创作什么,都有一个签名

ubuntu    ubuntu

我可以简单地将我的用户从 ubuntu 组中删除并将其添加到 www-data 组吗?

答案1

sudo chgrp www-data *yourfile*将针对单个文件执行此操作。

要对特定目录中的所有文件执行此操作,请使用相同命令更改该目录的组

sudo chgrp www-data /path/to/your/dir

然后使用chmod命令使该目录中创建的所有文件都属于该目录所属的组

sudo chmod g+s /path/to/your/dir

答案2

该命令sg可以执行不同组 ID 下的命令。如果您是该组的成员,则该命令应在该组内newgroup创建:newfile

sg newgroup "touch newfile"

(来源:https://unix.stackexchange.com/questions/18796/how-to-apply-changes-of-newly-added-user-groups-without-needing-to-reboot

答案3

我们可以创建一个简单的函数,基于touchchown命令,它将创建新的空文件并同时更改其权限。或者当文件存在时,它只会更改其权限。为此,请在终端中输入:

function touch-www { touch $1; chown $USER:www-data $1; }
export -f touch-www

现在我们有了一个新的命令,称为touch-www,我们可以这样使用它:

touch-www /path/to/file

为了能够在文件系统的任何地方使用这个新命令,让我们按照以下方式修改该函数:

function touch-www { sudo touch $1; sudo chown $USER:www-data $1; }
export -f touch-www

一旦文件具有足够的权限,我们就可以使用当前用户编辑它。因此,假设我们想要使用和nano按照此处描述的方式。让我们创建新函数:

function nano-www { sudo touch $1; sudo chown $USER:www-data $1; nano $1; }
export -f nano-www

为了使这些新命令永久可用,我们可以在文件底部添加以下行~/.bashrc

function touch-www { sudo touch $1; sudo chown $USER:www-data $1; }
export -f touch-www

function nano-www { sudo touch $1; sudo chown $USER:www-data $1; nano $1; }
export -f nano-www

答案4

您可以创建一个 www-data 用户,并以 www-data 组作为其主要用户 [参见useraddadduser或例如kuser],更改为该用户 [ su www-data],然后创建的所有文件将归该用户:组所有。

在处理组之前,请先备份/etc/group(或整个 /etc)。此外,请查找如果您由于群组权限而被锁定

或者,您可以将名为“ubuntu”的用户的主要组更改为 www-data:

sudo usermod --gid www-data ubuntu

后者可能存在安全问题,因为它可能在某些时候(例如与其他错误结合)将该组拥有的所有文件暴露给您的 Web 服务器。www-data 组的意义在于,只有它拥有的文件才允许由服务器(apache、nginx 等)向外部发送。因此,让所有标准用户登录文件都属于该组会产生风险。

相关内容