如何将文件创建为特定组
这可能听起来很奇怪。
我的用户名是ubuntu,我的机器名为ubuntu。
我想要的是当我在某个文件夹中创建一个具有签名的文件时
user group ubuntu www-data
目前我创建的任何东西都有签名
ubuntu ubuntu
我可以简单地从组ubuntu中删除我的用户并将其添加到组www-data中吗?
sudo chgrp www-data *yourfile*
将为单个文件执行此操作。
要对特定目录中的所有文件执行此操作,请使用相同的命令更改该目录的组
sudo chgrp www-data /path/to/your/dir
然后使用chmod
命令使该目录中创建的所有文件都属于该目录所属的组
sudo chmod g+s /path/to/your/dir
我们可以基于touch
和chown
命令创建一个简单的函数,它将创建新的空文件并同时更改其权限。 或者当文件存在时,它只会更改其权限。 为此目的,在终端类型:
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:
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
假设您只想更改组并保留用户值,请尝试
sudo chown newuser:newgroup sample.txt
或者在你的情况下:
sudo chown ubuntu:www-data sample.txt
然后跑
sudo chmod g + w sample.txt
您可以创建一个www-data用户,将www-data组作为主要用户[请参阅useradd
, adduser
或者例如kuser
],更改为该用户[ su www-data
],然后所有文件将由该用户拥有:组。
在弄乱组之前先备份/etc/group
(或整个/ etc)。 如果由于组权限而被锁定,还要查找要执行的操作 。
或者,您可以将名为“ubuntu”的用户的主要组更改为www-data:
sudo usermod --gid www-data ubuntu
。
稍后可能存在安全问题,因为它可能在某些时候(例如与其他错误结合)将该组拥有的所有文件暴露给您的Web服务器。 www-data组的要点是,只允许服务器从外部发送它拥有的那些文件(apache,nginx等等)。 将所有标准用户登录文件都归属于该组因此会产生风险。