我已将/var/www/html文件夹的所有者更改为www-data. 现在我也想授予所有权ubuntu。
我怎样才能做到这一点?我不知道他们属于哪个组。我ssh使用ubuntu用户名登录,我的 FTP 也与 ubuntu 一起使用,但现在由于此更改,我在通过 ftp 编辑文件时面临权限问题。
如果只有一个用户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 chown和
man chmod
我宁愿不按照评论中的建议将用户添加到系统功能用户组
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)
请注意,使用此解决方案,您失去了控制权的不同权限ubuntu和www-data。
| 归档时间: |
|
| 查看次数: |
19113 次 |
| 最近记录: |