更新更清晰:
根据http://expressionengine.com/user_guide/installation/installation.html,它说:
对于大多数 Unix 主机,以下是典型的,但您可以检查您的主机,看看是否可以使用更严格的权限来允许 PHP 写入文件 (666) 和文件夹 (777)。在 Windows 服务器上,以下内容不适用,但您需要确保 ExpressionEngine 可写入文件和文件夹。为此,您可能需要联系您的房东。
不确定这是什么意思。我可以将特定文件和文件夹分别更改为 666 和 777,在我是 chown'er 的地方,但上面的内容听起来好像我也需要允许 PHP 执行此操作?
原问题:
我需要确保 PHP 可以写入特定文件 (666) 和文件夹 (777)。
我该怎么做呢?
我正在对迁移到 unix 系统的某些文件的权限进行大规模递归更改。我把它们改成了ug+rw,但是后来发现不能遍历子目录。我查看了手册页chmod并没有看到任何排除目录的解释,所以我搜索了一下,发现人们过去常常find递归地将目录的权限更改为用户和组的“执行”。我这样做了,然后我可以调查他们。
但在我看来,我应该能够执行此查找chmod- 以递归方式将文件更改为读/写,但不会使目录无法遍历。我是否以“正确”的方式完成了此操作,还是有更简单的方法来做到这一点?
我已经阅读了这个主题,它给了我一些信息,但我觉得我没有完全理解它。文件夹上的执行权限实际上意味着什么?我完全理解它在文件上的含义,但在文件夹上。
这是我无法找到太多信息的事情,因此将不胜感激。
我的理解是这样的。获取以下文件:
-rw-r----- 1 root adm 69524 May 21 17:31 debug.1
Run Code Online (Sandbox Code Playgroud)
用户phil无法访问此文件:
phil@server:/var/log$ head -n 1 debug.1
cat: debug.1: Permission denied
Run Code Online (Sandbox Code Playgroud)
如果phil被添加到adm组中,它可以:
root@server:~# adduser phil adm
Adding user `phil' to group `adm' ...
Adding user phil to group adm
Done.
phil@server:/var/log$ head -n 1 debug.1
May 21 11:23:15 server kernel: [ 0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5.1-0-g8936dbb-20141113_115728-nilsson.home.kraxel.org 04/01/2014
Run Code Online (Sandbox Code Playgroud)
然而,如果一个进程开始,同时明确地设置user:group到phil:phil它无法读取该文件。过程是这样开始的:
nice -n 19 chroot --userspec phil:phil …Run Code Online (Sandbox Code Playgroud) 我可以访问远程 Linux 机器,每次我创建符号链接时,默认情况下都会使用以下权限创建它: lrwxrwxrwx
如果我尝试更改符号链接的权限(即不是它指向的路径),例如:
chmod g-w my_symbolic_link
Run Code Online (Sandbox Code Playgroud)
chmod运行正确(没有打印错误消息)但是当我再次检查权限时,它们仍然相同(lrwxrwxrwx)。
我正在等待机器管理员的消息,但我想知道这是否是正常行为,或者它是否是特定于盒子的东西。
在我的部门,我们有一个带有 CentOS 和 samba 的小型文件服务器。我有 root 访问权限,可以执行一些基本的维护。
今天我将一些文件夹设为只读,所以我继续做了一个chmod -R -w some-folder/,但是对于一些文件我得到了响应:
chmod: ./somefile.pdf: 新权限是 r-xrwxr-x,而不是 r-xr-xr-x
添加后-v我没有得到很多信息:
`./somefile.pdf' 的模式保留为 0575 (r-xrwxr-x)
我尝试了以下只是为了确保:
# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)
Run Code Online (Sandbox Code Playgroud)
我想不出为什么 root 不能执行 chmod的任何充分理由?
一些花絮:
我正在解决来自Unix The Textbook (第 8 章,#16,第 207 页)的问题:
给出
chmod与mesg n和mesg y命令执行相同任务的命令行。(提示:每个硬件设备,包括您的终端,在/dev目录中都有一个关联的文件。)
我相信答案是:
mesg n = chmod 770 /dev/stdout
mesg y = chmod 777 /dev/stdout
但我想知道如果你使用会发生什么chmod 000 /dev/stdin?
您是否无法在终端中输入命令?
对于更改文件权限,我知道我可以使用 chmod。对于更改组所有者,我可以使用 chgrp。但是,如果我想同时更改权限和所有者,我可以在 Linux 上使用任何命令吗?
例如,有一个具有此权限和所有者的文件:
-rw-r--r--+ 1 raymondtau staff 0 May 8 16:38 WantToChangeThisFile
Run Code Online (Sandbox Code Playgroud)
现在我想把它改成:
---x-w--wx+ 1 raymondtau admin 0 May 8 16:38 WantToChangeThisFile
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用这个命令:chmod 123 WantToChangeThisFile && chgrp admin WantToChangeThisFile,但想知道是否有任何巧妙的方法来做到这一点。
我想对特定目录下的所有文件和子目录设置 755 权限,但我只想对那些没有 755 权限的组件执行 chmod 755。
find /main_directory/ -exec chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)
如果该find命令返回一长串列表,这将花费大量时间。我知道我可以使用 stat 命令来检查每个组件的八进制文件级别权限,然后使用 if-else 来切换文件权限,但是是否有任何单行方法使用find并xargs首先检查文件/目录具有什么权限,然后使用chmod将其更改为 755(如果设置为其他内容)。
我不小心在etc目录下执行了以下命令:
sudo chmod -R 700 /etc
Run Code Online (Sandbox Code Playgroud)
我知道我做错了什么。我的终端现在打印:
I have no name!@ubuntu: /$
Run Code Online (Sandbox Code Playgroud)
如何将我的 etc 目录恢复到早期状态?
我尝试更改权限,但现在失败了。此外,如果有人可以解释当我在等上执行该命令时实际出了什么问题,那将非常有帮助。这只是文件权限。那为什么整个系统似乎完全炸了?为什么现在没有登录密码有效?我知道 etc 目录中有一个文件与用户有关。但是更改权限如何危及一切?一些关于此的技术细节将非常有帮助。
chmod ×10
permissions ×5
files ×3
find ×2
linux ×2
chown ×1
chroot ×1
command-line ×1
devices ×1
directory ×1
filesystems ×1
php ×1
process ×1
symlink ×1
terminal ×1