web-dev-qa-db-ja.com

tarの権限を復元できません

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
jenny

質問: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がサイレントに失敗するため、インストーラーは続行できます。

2
simlev

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ファイルのアクセス許可が復元されます。

1
jenny