3

%defattr仕様ファイルで複数回使用することは許可されていますか? Ubuntu 10 (rpm バージョン 4.7.1) では、次の定義により、777 のアクセス許可が/var/log/testdir2に適用されます。

%files
%defattr(-,root,root,-)
%dir /var/log/testdir1
%defattr(777,root,root,-)
%dir /var/log/testdir2
%dir %attr(777,root,root) /var/log/testdir3

Ubuntu 12.04.1 (x86_64RPM バージョン 4.9.1.1) にアップグレードした後、同じスペック ファイルを使用して rpm を再生成し、同じターゲット マシンにデプロイすると、/var/log/testdir2のアクセス許可が 755 になりました。スペック ファイルを次のように変更する必要があります。必要な権限を取得するには、上記の/var/log/testdir3のように定義%attrします。

spec ファイルには、%defattr定義があり、その後にそれらの権限を持つファイルのセットが続き、別の%defattr定義の後にそれらの権限を持つファイルのセットが続きます。それは許されませんか?または、アクセス許可に関してディレクトリとファイルの処理方法に違いはありますか?

4

1 に答える 1

4

%defattr通常、ファイル/ディレクトリのデフォルト属性を設定するために使用されるため、複数回使用すると奇妙に思えます。まず、値を見てみましょう%defattr: %defattr(file perms, user, group, dir perms). /var/log/testdir3 ディレクトリには、ディレクトリのアクセス許可を設定していないため、tarball で 755 のアクセス許可が設定されている可能性があります。単にそれらを継承しているだけです。

次のようなことを試してください:

%files
%defattr(755,root,root,777)
%dir /var/log/testdir1
%dir /var/log/testdir2
%dir /var/log/testdir3

上記のものを使用して、ディレクトリを777に設定し、リストするすべてのファイルを755に設定します。これは、デフォルト値を継承しているためです(両方ともroot.rootの所有権があります)。

%dir を宣言すると、ディレクトリのアクセス許可のみが設定されるため、ログディレクトリのアクセス許可を777に設定する理由については、まだ少し混乱しています。ファイルを何かに設定しようとしていませんか?異なる権限を持つ特定のディレクトリが必要な場合は、%attr属性を使用する必要があります。

于 2013-09-01T23:42:50.913 に答える