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
我的文件在 Downloads 文件夹中,我正在将安装文件从 Downloads 文件夹运行到 /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
最后安装程序失败并给出上述错误消息。我提供了下载文件夹和/opt/pkg
文件夹所需的所有权限。
答案1
问题:无法恢复 tar 的权限
回答:只有 root 可以。
参考:阅读此信息丰富的问答问库本图:
即使您使用
tar
的--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
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
文件夹和文件的权限均已恢复,即使user2
无法恢复所有权也不会引发任何错误。
从OP自己的回答来看,安装程序似乎检查tar
退出代码,如果遇到错误就会停止。chown
将文件夹发送给当前用户会导致tar
静默失败,因此安装程序可以继续。
答案2
除了从存档中恢复文件外,tar
还尝试恢复时间戳和权限。某些文件系统(可能是非 Linux,可能是网络驱动器)不支持客户端修改/设置 UNIX 时间戳或修改/设置 UNIX 权限。这些可能会导致以下错误tar
:
- 无法超时:操作不允许
- 无法将模式更改为 rwxrwxr-x:操作不允许
如果您仍然想继续提取文件,但不关心原始时间戳或权限,那么您可以在 tar 中使用这些附加选项:
-m, --touch
Don't extract file modified time.
--no-overwrite-dir
Preserve metadata of existing directories.
咨询man tar
以获取更多信息。
答案3
chmod -R 777 Downloads/* sudo chmod -R 777 /opt/* mkdir /opt/pkg cd /home/my_ubuntu/Downloads chmod +x petalinux-v2017.1-final-installer.run ./petalinux-v2017.1-final-installer.run /opt/pkg
现在它将安装,并且当您以普通用户而不是 root 用户身份创建目录 pkg 时,tar 文件权限将恢复。