tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)
我的文件位于“下载”文件夹中,并且正在将安装文件从“下载”文件夹运行到 /opt/pkg 文件夹,以下是我使用的命令
chmod -R 777 Downloads/*
sudo chmod -R 777 /opt/*
chmod +x petalinux-v2017.1-final-installer.run
./petalinux-v2017.1-final-installer.run /opt/pkg
Run Code Online (Sandbox Code Playgroud)
最后安装程序失败并给出上述错误消息。我提供下载文件夹和/opt/pkg文件夹所需的所有权限。
问题:tar 的权限无法恢复
答:只有root才可以。
参考:阅读askubuntu上的信息问答:
即使您使用
tar's--same-owner标志,您仍然需要以 root 身份提取文件以保留所有权。
更新:tar以下是有关的行为的更多详细信息。假设我们已经user1创建了一个存档,其中tar cvpzf test.tar.gz .包含user2. 如果我们将存档提取到具有user2权限的目录中777,结果如下:
$ tar xpvzf test.tar.gz
./
./file1
./file2
tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxrwxr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
$ ls -al
drwxrwxrwx 2 user2 user2 .
-rw-rw-r-- 1 user1 user1 file1
-rw-rw-r-- 1 user1 user1 file2
Run Code Online (Sandbox Code Playgroud)
tar抛出错误,因为它无法更改 所拥有的文件的所有权和权限user2。然而,这些文件虽然属于user1.
如果在所有者拥有的目录中执行提取,则会发生以下情况user1:
$ tar xpvzf test.tar.gz
./
./file1
./file2
$ ls -al
drwxrwxr-x 2 user1 user1 .
-rw-rw-r-- 1 user1 user1 file1
-rw-rw-r-- 1 user1 user1 file2
Run Code Online (Sandbox Code Playgroud)
文件夹和文件的权限都会恢复,即使user2无法恢复所有权,也不会引发任何错误。
从OP自己的回答来看,安装程序似乎会检查 的tar退出代码并在遇到错误时停止。chown将文件夹分配给当前用户会导致tar失败,但安装程序可以继续。
| 归档时间: |
|
| 查看次数: |
25063 次 |
| 最近记录: |