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
フォルダーに必要なすべてのアクセス許可を提供しています。
質問:tarのアクセス許可を復元できません
回答:ルートのみ。
参照: askubunt に関するこの有益なQ&Aを読んでください:
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
がサイレントに失敗するため、インストーラーは続行できます。
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ファイルのアクセス許可が復元されます。