我没有 open_basedir,php 可以访问 /etc /usr /proc /home 等......但不能访问 /tmp。
tmpfs 安装在 /tmp (/tmp type tmpfs (rw)) 这也是我想使用 /tmp 文件夹的原因。
我的文件归 http(nginx 和 php 的用户)所有,每个人都可以阅读。
sudo -u http cat /tmp/file 正在运行,但 php 脚本中的任何内容都不起作用(如 file_exist() 或 file())。
编辑:日志中显示的错误:
PHP Warning: file(/tmp/ydlw/pid): failed to open stream: No such file or directory in /srv/http/ydlw/status.php on line 267
Run Code Online (Sandbox Code Playgroud)
编辑2:我以另一种方式测试了这个问题。我做了
touch("/tmp/boo");
file_exist("/tmp/boo");
Run Code Online (Sandbox Code Playgroud)
和 file_exist 返回 true 以便创建文件。然后我在 /tmp 里面看了看,在那里找不到“boo”文件。这就是我所害怕的,php 看不到挂载点。为什么会这样,我该如何解决?
上周末,我将公司数据从一个硬盘复制到另一个更大的硬盘。我以为许可会复制过来,但他们没有。
将最初设置的权限复制到我的新数据上的最佳(也是最快)方法是什么,而不必再次复制所有数据?我的用户现在正在访问数据,因此不想重新复制数据,因为更改可能会丢失。
数据托管在 windows server 2008 R2 上
我正在尝试将文件添加到从官方tomcat镜像构建的 Docker镜像中。该图像似乎没有 root 权限,因为tomcat如果我运行 bash ,我以用户身份登录:
docker run -it tomcat /bin/bash
tomcat@06359f7cc4db:/usr/local/tomcat$
Run Code Online (Sandbox Code Playgroud)
如果我指示 aDockerfile将文件复制到该容器,则该文件具有权限644并且所有者为root. 据我了解,这似乎是合理的,因为 Dockerfile 中的所有命令都以 root 身份运行。但是,如果我尝试将该文件的所有权更改为 ,则会tomcat:tomcat出现Operation not permitted错误。
为什么我不能更改复制到该图像的文件的权限?
如何复制:
mkdir docker-addfilepermission
cd docker-addfilepermission
touch test.txt
echo 'FROM tomcat
COPY test.txt /usr/local/tomcat/webapps/
RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt' > Dockerfile
docker build .
Run Code Online (Sandbox Code Playgroud)
的输出docker build .:
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon
Step 0 …Run Code Online (Sandbox Code Playgroud) 我有一个包含以下默认 ACL 的目录:
default:user:phptutor:rwx
Run Code Online (Sandbox Code Playgroud)
但是,该目录中的所有文件/目录都没有该默认权限(因为它是在创建后添加的)。
如何将父目录的默认 ACL 复制到其中的每个文件夹和文件?
显然我的文件存在于 /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试chown它时,我收到一个错误
$ sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
Run Code Online (Sandbox Code Playgroud)
进一步尝试运行它也失败了!
$ ngrok
bash: ngrok: command not found
$ sudo /usr/bin/ngrok
sudo: /usr/bin/ngrok: command not found
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
我正在使用 wget 将一些文件从一台服务器镜像到另一台服务器。我正在使用以下命令:
wget -x -N -i http://domain.com/filelist.txt
Run Code Online (Sandbox Code Playgroud)
-x = 因为我想保留目录结构
-N = 仅获取新文件的时间戳
-i = 从外部文件下载文件列表,每行一个。
小文件,例如我正在测试的 326kb 大下载就好了。
但是另一个 5gb 只下载 203mb 然后停止(它总是 203mb 给或取几千字节)
显示的错误消息是:
无法写入“path/to/file.zip”
(我不确定为什么前后会有奇怪的字符。我在 Windows 中使用 Putty,这可能与也可能没有关系,所以我把它们留在了。我想不是。)。
完整回复如下:(我已经替换了路径、ip和域名)
--2012-08-31 12:41:19-- http://domain.com/filelist.txt 正在解析 domain.com... MY_IP 正在连接到 domain.com|MY_IP|:80... 已连接。HTTP 请求已发送,正在等待响应... 200 OK Length: 161 [text/plain] 服务器文件不比本地文件“domain.com/filelist.txt”更新
--2012-08-31 12:41:19-- http://domain.com/path/to/file.zip连接到 domain.com|MY_IP|:80... 已连接。HTTP 请求已发送,正在等待响应... 200 OK Length: 5502192869 (5.1G) [application/zip] 大小不匹配(本地 213004288)——正在检索。
--2012-08-31 12:41:19-- http://domain.com/path/to/file.zip连接到 domain.com|MY_IP|:80... 已连接。HTTP 请求已发送,正在等待响应... 200 OK 长度:5502192869 (5.1G) [application/zip] 保存到:“domain.com/path/to/file.zip”
3% …
我的 ubuntu 上有一个 symfony2 应用程序。Symfony 有很多有用的控制台命令(如php app/console cache:clear或php app/console assets:install web)。
问题是如果我以root用户身份运行它们,新生成的文件将包含root:root用户/组,如果我访问我的网站,我会收到错误(因为 apache 无法读取/修改这些文件 -> 他们应该有www-data:www-data)。
运行chown www-data:www-data可以解决问题,但是每次清除缓存时都运行它不是解决方案。
或者
linux php permissions command-line-interface file-permissions
ls -al / 显示一个文件夹:
drwxrwxrwt 2 root root 4096 Feb 26 09:00 tmp
中的最后一个字符t是什么意思drwxrwxrwt?
(来自:https : //stackoverflow.com/questions/15245144/copy-file-permissions-but-not-files,因为离题而关闭)
我有两个相同目录树的副本。它们几乎具有相同的文件(一个版本可能有几个额外的或丢失的文件)。但是,大多数文件对于这两个目录都是通用的(具有相同的相对路径和所有内容)。
假设这些在目录中:
version1/
version2/
Run Code Online (Sandbox Code Playgroud)
问题是 version1/ 中的权限搞砸了,我想从 version2/ 复制权限,但不要替换 version1/ 中较新的文件。
是否有通过 shell 命令或脚本自动执行此操作的方法?
我复制了两棵树,一个源和一个目标,我用 robocopy 像这样复制了它们:
robocopy /MIR C:\Windows\System32\tasks\ C:\temp\robocopyTasks\out\
robocopy /E /Copy:S /IS /IT C:\Windows\System32\tasks\ C:\temp\robocopyTasks\out\
Run Code Online (Sandbox Code Playgroud)
然后我使用 icacls 比较了权限,输出了两者的权限,唯一的区别似乎是原始文件包含我以前见过的一长串字符;我知道它代表系统中的一个用户或一个组,但我不记得它叫什么。字符串如下所示:
S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXX-XXXX
Run Code Online (Sandbox Code Playgroud)
它们可以与 VIM 中的这个正则表达式匹配:
/S-\d-\d-\d\{2\}-\d\{10\}-\d\{10\}\-\d\{9\}\-\d\{4\}/
Run Code Online (Sandbox Code Playgroud) file-permissions ×10
linux ×5
permissions ×2
php ×2
unix ×2
centos7 ×1
containers ×1
copying ×1
docker ×1
filesystems ×1
robocopy ×1
tmp ×1
tmpfs ×1
unix-shell ×1
wget ×1
windows-7 ×1