%defattr在RPM规范文件中的含义是什么?

Mar*_*vam 20 permissions rpm rpm-spec

在创建RPM时,RPM规范文件有一个指令%defattr.我知道它定义了该RPM安装的文件的默认属性.如果我写%defattr下面的内容,那是什么意思?

%defattr(-testuser, testuser)
Run Code Online (Sandbox Code Playgroud)

bri*_*cer 26

您指定的模式无效.%defattr需要四个参数

来自http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-DEFATTR-DIRECTIVE

%defattr指令

%defattr指令允许设置文件和指令的默认属性.%defattr具有与%attr指令类似的格式:

  1. 默认权限,或文件的"模式".

  2. 默认用户ID.

  3. 默认组ID.

  4. 目录的默认权限或"模式".

%attr指令具有以下格式:

%defattr(文件模式,用户,组,目录模式)

与%attr一样,如果不需要指定特定属性(通常因为文件是在正确设置了该属性的情况下安装的),那么该属性可以用短划线替换.另外,可以省略目录模式.%defattr倾向于在%文件的顶部使用.


小智 7

要在spec文件中设置权限和所有权,请将目录视为文件...%defattr将设置所有没有%attr的文件(在这种情况下为rww owner apache group apache并将目录设置为755).

%files
#%attr(<mode>, <user>, <group>) file
%defattr(644,apache,apache,755)
%attr(-,apache,apache) /var/www/coolapp
%attr(-,apache,apache) /var/www/coolapp/js
%attr(-,apache,apache) /var/www/coolapp/static
/var/www/coolapp/index.html
/var/www/coolapp/__init__.py
/var/www/coolapp/settings.py
/var/www/coolapp/urls.py
/var/www/coolapp/wsgi.py
Run Code Online (Sandbox Code Playgroud)