URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78869
[ Назад ]

Исходное сообщение
"tar и selinux - не востанавливает контекст"

Отправлено aba , 22-Фев-08 11:26 
Поставил 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 и selinux - не востанавливает контекст"
Отправлено PavelR , 22-Фев-08 11:49 

Контекст - это не свойство файла, а свойство операционной системы. В ОС есть файл, который определяет, в какой контекст относить конкретную директорию или файл, по абсолютному его имени.


"tar и selinux - не востанавливает контекст"
Отправлено aba , 22-Фев-08 12:45 
>
>
> Контекст - это не свойство файла, а свойство операционной системы. В
>ОС есть файл, который определяет, в какой контекст относить конкретную директорию
>или файл, по абсолютному его имени.

А что тогда архивирует tar c опцией --selinux?
Теперь я окончательно запутался! Может подойду к вопросу с другой сторони, раскажу для чего мне ето надо.
Есть настроеная система. Хочу сделать резервний диск, которий использовать как для целей востановления так и для возможности клонирования на другой комп. Раньше стояла Федора3 с отключенним SELinux. Било достаточно заархивировать нужние папки а потом просто извлеч или все или частично файли (в зависимости от цели клонирование или востановление).
А как теперь поступать не знаю. Ну создам я архив всех папок системи. Загружусь с LiveCD разобю новий винт распакую туда файли, а оно не будет работать.Или будет?
Как правильно поступить.


"tar и selinux - не востанавливает контекст"
Отправлено PavelR , 22-Фев-08 13:42 
>>
>>
>> Контекст - это не свойство файла, а свойство операционной системы. В
>>ОС есть файл, который определяет, в какой контекст относить конкретную директорию
>>или файл, по абсолютному его имени.
>
>А что тогда архивирует tar c опцией --selinux?

Прошу прощения, видимо запутался и ошибся в этом случае я ...


"tar и selinux - не востанавливает контекст"
Отправлено aba , 29-Фев-08 11:00 
первое ето апгрейд 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
Подскажите, как побороть