Поставил Fedora 8. Включена SELinux.
Нужно сделать архив в котором сохраняются расширенние атрибути и с которого потом можно их извлечь. Проводим следующие команди[root@edeldb /]# cd /tmp/
[root@edeldb tmp]# mkdir test
[root@edeldb tmp]# cd testНаходим что нибудь подходящее для теста
[root@edeldb test]# ls -ldZ /etc/y*
-rw-r--r-- root root system_u:object_r:net_conf_t:s0 /etc/yp.conf
drwxr-xr-x root root system_u:object_r:etc_t:s0 /etc/yum
-rw-r----- root root system_u:object_r:etc_t:s0 /etc/yum.conf
drwxr-xr-x root root system_u:object_r:etc_t:s0 /etc/yum.repos.dПроводим тест для tar с разними параметрами
[root@edeldb test]# tar -cz -f a_default.tgz /etc/y*
[root@edeldb test]# tar -cz --xattrs --acls --selinux -f a_xattrs.tgz /etc/y*
[root@edeldb test]# tar -cz --no-xattrs -f a_no_xattrs.tgz /etc/y*Смотрим что получилось
[root@edeldb test]# ll
total 24
-rw-r--r-- 1 root root 2057 2008-02-22 10:08 a_default.tgz
-rw-r--r-- 1 root root 2057 2008-02-22 10:09 a_no_xattrs.tgz
-rw-r--r-- 1 root root 2430 2008-02-22 10:09 a_xattrs.tgzПо логике по дефаулту расширение атрибути отключени. Сразу первий вопрос: можно ли по дефаулту их включить? файла типа /etc/tar.conf нету.
Пробуєм извлечь. Извлекаем только с a_xattrs.tgz (в других архивах по логике нету расширених атрибутов, хотя я не уверен есть ли они в a_xattrs.tgz, как проверить не знаю)[root@edeldb test]# tar -xz -f a_xattrs.tgz
[root@edeldb test]# ls -lZ etc
-rw-r--r-- root root system_u:object_r:unconfined_tmp_t:s0 yp.conf
drwxr-xr-x root root system_u:object_r:unconfined_tmp_t:s0 yum
-rw-r----- root root system_u:object_r:unconfined_tmp_t:s0 yum.conf
drwxr-xr-x root root system_u:object_r:unconfined_tmp_t:s0 yum.repos.dпо дефаулту не извлекается контекст
пробуем принудительно (для чистоти експеримента удаляем созданий каталог /tmp/test/etc)[root@edeldb test]# tar -xz --xattrs --acls --selinux -f a_xattrs.tgz
[root@edeldb test]# ls -lZ etc
-rw-r--r-- root root system_u:object_r:unconfined_tmp_t:s0 yp.conf
drwxr-xr-x root root system_u:object_r:unconfined_tmp_t:s0 yum
-rw-r----- root root system_u:object_r:unconfined_tmp_t:s0 yum.conf
drwxr-xr-x root root system_u:object_r:unconfined_tmp_t:s0 yum.repos.dОпять контекст не востановлен.
Подскажите в чем может бить причина и как побороть.
Контекст - это не свойство файла, а свойство операционной системы. В ОС есть файл, который определяет, в какой контекст относить конкретную директорию или файл, по абсолютному его имени.
>
>
> Контекст - это не свойство файла, а свойство операционной системы. В
>ОС есть файл, который определяет, в какой контекст относить конкретную директорию
>или файл, по абсолютному его имени.А что тогда архивирует tar c опцией --selinux?
Теперь я окончательно запутался! Может подойду к вопросу с другой сторони, раскажу для чего мне ето надо.
Есть настроеная система. Хочу сделать резервний диск, которий использовать как для целей востановления так и для возможности клонирования на другой комп. Раньше стояла Федора3 с отключенним SELinux. Било достаточно заархивировать нужние папки а потом просто извлеч или все или частично файли (в зависимости от цели клонирование или востановление).
А как теперь поступать не знаю. Ну создам я архив всех папок системи. Загружусь с LiveCD разобю новий винт распакую туда файли, а оно не будет работать.Или будет?
Как правильно поступить.
>>
>>
>> Контекст - это не свойство файла, а свойство операционной системы. В
>>ОС есть файл, который определяет, в какой контекст относить конкретную директорию
>>или файл, по абсолютному его имени.
>
>А что тогда архивирует tar c опцией --selinux?Прошу прощения, видимо запутался и ошибся в этом случае я ...
первое ето апгрейд tar'а. Большое подозрение на багу в програме.
yum update tar
В оригинале с Федорой8 идет tar-1.17-3.fc8 после апдейта ставит tar-1.17-7.fc8Повторяем експеримент
tar -cz --xattrs --acls --selinux -f a_xattrs.tgz /etc/y*
tar -xz --xattrs --acls --selinux -f a_xattrs.tgz
смотрим что получилось
ls -ldZ *
-rw-r--r-- root root system_u:object_r:net_conf_t:s0 yp.conf
drwxr-xr-x root root system_u:object_r:etc_t:s0 yum
-rw-r----- root root system_u:object_r:etc_t:s0 yum.conf
drwxr-xr-x root root system_u:object_r:etc_t:s0 yum.repos.d
Уже хорошо. Всетаки била глюка в tar'еНо во время распаковки появляется следующее сообщение
[test]# tar -xz --xattrs --acls --selinux -f a_xattrs.tgz
tar: etc/yum/pluginconf.d: Попередження: Помилка у функції acl_from_text: Invalid argument
Что ето значит и насколько критично я не знаю. Подскажите.
[test]# tar -xz --xattrs --no-acls --selinux -f a_xattrs.tgz
Отрабативает без ошибок.Заодно вилазит еще один нюанс. Для експеримента берем другие файли.
ls -ldZ /usr/lib/libsysfs*
lrwxrwxrwx root root system_u:object_r:lib_t:s0 /usr/lib/libsysfs.so.2 -> libsysfs.so.2.0.1
-rwxr-xr-x root root system_u:object_r:lib_t:s0 /usr/lib/libsysfs.so.2.0.1
Пакуем
tar -cz --xattrs --acls --selinux -f b_xattrs.tgz /usr/lib/libsysfs*
tar -xz --xattrs --acls --selinux -f b_xattrs.tgz
витянули и смотрим
[test]# ls -ldZ usr/lib/libsysfs*
lrwxrwxrwx root root system_u:object_r:unconfined_tmp_t:s0 usr/lib/libsysfs.so.2 -> libsysfs.so.2.0.1
-rwxr-xr-x root root system_u:object_r:lib_t:s0 usr/lib/libsysfs.so.2.0.1
Проблема с символьними ссилками. Подозрение что ссилка витягивается раньше чем файл и на нее не проставляется контекст. В манах по tar не нашел как заставить извлекасть символьние ссилки в конце. Повторное распаковивание архива у меня не решает проблему
tar -xz --xattrs --acls --selinux -f b_xattrs.tgz
ls -ldZ usr/lib/libsysfs*
lrwxrwxrwx root root system_u:object_r:unconfined_tmp_t:s0 usr/lib/libsysfs.so.2 -> libsysfs.so.2.0.1
-rwxr-xr-x root root system_u:object_r:lib_t:s0 usr/lib/libsysfs.so.2.0.1
Подскажите, как побороть