Linux用户权限问题

Linux用户权限问题

每次我从“eclipse”创建一个新文件时,我需要运行这两行代码来获得读/写权限:

chmod -R 775 /var/www/folder/filename.extension

和/或

sudo chown -R www-data:www-data /var/www

而且,如果我将一些文件复制到该服务器文件夹上,并从浏览器 URL 访问它,例如:

localhost/folder/filename.extension

我收到 Apache 服务器的权限错误。

难道就没有什么办法可以让我摆脱这个问题吗?

*笔记:move_uploaded_file()当我的函数尝试将文件移动到/var/www/MyProject/目录时,会发生主要错误。

答案1

使用 SGID 位。

执行一次,然后忘记这个问题:

chmod g+s /var/www/folder

您可能想对所有子文件夹执行相同的操作:

find /var/www/folder -type d | xargs chmod g+s

并且,以防万一:

find /var/www/folder -type d | xargs chgrp www-data

/var/www/folder/现在,无论如何,在其下创建的所有文件都将属于拥有包含文件夹的组。这将允许您创建任何文件或文件夹,而不必担心它们不属于,例如www-数据组,这就是你想要的。

请注意,这仅适用于在目录中创建的文件或文件夹。如果文件是在其他地方创建并移动到目录树中,您仍然需要手动更改所有权。

例子:

# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l

drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test

# Create a file, check the ownership
$ touch test/file1
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:16 file1

# Set the SGID bit
$ chmod g+s test
$ ls -l

drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test

# Create a file, check the ownership
$ touch test/file2
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data    0 Jun 17 10:19 file2

更多信息这里

答案2

您可以使用默认 ACL 为新文件和目录分配用户和组权限:

setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension

答案3

首先,我想指出的是,提问时应该更加具体;例如,您使用什么操作系统、Linux 发行版,因为这可以大大加快寻找解决方案的过程。话虽如此,您可以通过更改特定文件夹的所有权联合应用中心(用户访问控制)递归地,如下所示:

chown domain:www-data /var/www/folder -chR

chmod 775 /var/www/folder -cR

笔记:通过排除尾部斜杠(/)在文件夹名称末尾,您的更改将应用​​到该文件夹​​及其所有内容。


至于在浏览器中访问文件(脚本?)时出现的权限错误,您必须确保您的用户具有正确的权限来提供apache.应该通过编辑/etc/httpd/*/httpd.conf文件并添加以下内容来解决这个问题:

User domain
Group www-data

相关内容