同一文件夹的多个所有者

urf*_*ion 5 aws 16.04

我已将/var/www/html文件夹的所有者更改为www-data. 现在我也想授予所有权ubuntu

我怎样才能做到这一点?我不知道他们属于哪个组。我ssh使用ubuntu用户名登录,我的 FTP 也与 ubuntu 一起使用,但现在由于此更改,我在通过 ftp 编辑文件时面临权限问题。

der*_*ugo 7

解决方案1

如果只有一个用户ubuntu并且www-data需要访问权限,最简单的方法是

sudo chown ubuntu:www-data <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

这将所有权授予用户,ubuntu但仍保留组的所有权www-data

所以你可以控制 ubuntu 可以做什么

sudo chmod u<+|- permission> <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

并且你控制www-data可以做什么

sudo chmod g<+|- permission> <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

或者简单地使用完整的权限掩码(见下面的例子)。


示例
用户ubuntu应该能够读(r),写(w),执行(e
www-data应该能够读(r),执行(e)但不是写(w
other users应该能够做这些

sudo chmod u+rwx <path/to/file or directory>
sudo chmod g-w+rx <path/to/file or directory>
sudo chmod o-rwx <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

或使用权限掩码(有用的生成器

sudo chmod 750 <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

对您的情况也很感兴趣的可能是这-R两个命令的参数,对文件夹的内容递归应用所有权和权限。

有关选项和参数的更多信息,请参阅
man chownman chmod



解决方案2

我宁愿按照评论中的建议将用户添加到系统功能用户组

sudo usermod -a -G www-data ubuntu
Run Code Online (Sandbox Code Playgroud)

因为这是授予用户权限的一种非常肮脏的方式,因为他也可能会把事情搞砸......

相反,如果您愿意,您可以使用groupadd(请参阅man groupadd)添加一个全新的组

groupadd <group name>
Run Code Online (Sandbox Code Playgroud)

将拥有文件权限的所有用户添加到该组

sudo usermod -a -G <group name> ubuntu
sudo usermod -a -G <group name> www-data
Run Code Online (Sandbox Code Playgroud)

(有关更多信息,请参阅man usermod

现在将文件的所有权设置为此组

sudo chgrp <group name> <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

比您之前描述的设置权限,但这次仅针对
组(读取(r),写入(w),执行(e))

sudo chmod g+rwx <path/to/file or directory>
sudo chmod u-rwx <path/to/file or directory>
sudo chmod o-rwx <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

或使用面膜

sudo chmod 070 <path/to/file or directory>
Run Code Online (Sandbox Code Playgroud)

请注意,使用此解决方案,您失去了控制权的不同权限ubuntuwww-data