Правильно ли `mv --context` (для selinux, a.k.a. -Z) рекурсивно применяет метки к содержимому каталога?

mv -Z применяет контекст selinux по умолчанию. Отличается ли он от всех других вызовов mv и работает со всеми файлами в перемещенном каталоге по отдельности?

0
13.01.2017, 01:03
1 ответ

Да.

$ mkdir a
$ touch a/b
$ ls -Z -d a a/b
unconfined_u:object_r:user_home_t:s0 a
unconfined_u:object_r:user_home_t:s0 a/b
$ strace -f mv -Z a ~/.local/share/Trash/files
...
open("/home/alan/.local/share/Trash/files/a/b", O_RDONLY|O_NOFOLLOW) = 3
...
fgetxattr(3, "security.selinux", "unconfined_u:object_r:user_home_t:s0", 255) = 37
fsetxattr(3, "security.selinux", "unconfined_u:object_r:data_home_t:s0", 37, 0) = 0
...
$ cd ~/.local/share/Trash/files
$ ls -Zd a a/b
unconfined_u:object_r:data_home_t:s0 a
unconfined_u:object_r:data_home_t:s0 a/b

Это также привело к тому, что при перемещении каталога внутри одной файловой системы произойдет сбой. Т.е. из-за нехватки места на диске при смене меток. Влияние этого смягчается, поскольку изменение метки происходит на втором этапе. Первоначальная операция перемещения по-прежнему заключается в однократном атомарном переименовании . Это означает, что метки будут несовместимы, но файлы будут согласованы во всем остальном. Как только освободится место, исправить метки должно быть просто.

0
28.01.2020, 04:48

Теги

Похожие вопросы