Вы не можете. Самое близкое, что вы можете получить, это:
inotifywait -m /home/flag03/script
Это не покажет выполнение, но покажет, когда script
открывается или к нему обращаются.
Если /data
используется только samba, вы можете использовать опцию монтирования контекста, чтобы установить контекст файла на samba_share_t
для всех файлов на /data
, например. context="system_u:object_r:samba_share_t:s0"
в fstab. Параметр контекста времени монтирования переопределяет существующие метки файлов, но не изменяет содержимое диска. Метки файлов нельзя изменить при контекстном монтировании, все файлы имеют одинаковую метку.
Если опция монтирования не указана, обычный способ настройки контекста файла — semanage fcontext
. Используйте semanage fcontext -a -t samba_share_t '/data(/.*)?'
для добавления контекста в базу данных и применения новых файловых контекстов (рекурсивно )с помощью restorecon -r /data
.
Если у вас есть другие пользователи/серверы, обращающиеся к данным (помимо samba ), у вас есть несколько вариантов.
Вы можете включить samba_export_all_ro
илиsamba_export_all_rw
логическое значение , которое включает только очень широкое чтение -или чтение -доступ для записи (при условии, что samba может читать файлы в первую очередь, применяются правила SELinux после стандартных проверок разрешений ). Обратите внимание, что включение любого логического значения делает политику безопасности более разрешительной.
Используйте параметр монтирования, как описано выше, и создайте пользовательскую политику, позволяющую другим процессам получать доступ к файлам с помощью samba_share_t
. Установите другой процесс для работы вразрешающем режиме(требует перезапуска процесса/службы )для создания записей журнала. Затем используйтеaudit2allow
для создания необходимой политики. Вставьте политику, а другую установите обратно в , принудительно применяя режим . Если вы получаете больше ошибок AVC, вы можете повторить процесс, чтобы добавить пользовательскую политику.
Это можно применить и другим способом (, позволяя samba обращаться к файлам с другим контекстом, но тогда у вас, вероятно, будет та же проблема, что файлы в /data
имеют неправильный контекст ).
Напишите пользовательскую политику, определяющую новый контекст файла с желаемым доступом для других доменов.
Итак, вот что я сделал. Я думаю, что моя главная проблема заключалась в неправильном наборе синтаксиса, поэтому у меня были проблемы.
/data
под RHEL 7. Следующий синтаксис обязателен, особенно для semanage-
semanage fcontext -a -t samba_share_t "/data(/.*)?"
restorecon -vR /data
# to samba share out home directories, if in your smb.conf
setsebool -P samba_enable_home_dirs on
Теперь можно сделатьchcon -t samba_share_t /data/folder1/folder2/folder3
но это быстро перестает быть решением, когда у вас есть данные за 10 лет и миллионы файлов/папок. Это была быстрая диагностика, когда selinux=enforcing и доступ к определенной подпапке был запрещен; выполнение chcon -t samba _общего доступа _t позволит получить немедленный доступ к указанной подпапке. Решение, похоже, было правильным синтаксисом при использовании semanage fcontext с "
, за которым следует restorecon -vR
На выполнение semanage
ушло около 30 секунд, а на restorecon
— около 2 минут, объем данных — 5 ТБ.
Если интересно:
/etc/fstab` is this in RHEL 7.8
/dev/disk/by-uuid/e16528d8-ec26-4441-828a-d399b46e4a21 /data auto nosuid,nodev,nofail 0 0
# ------------------------------------------------------------------------
/etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = bsd
printcap name = /dev/null
load printers = no
disable spoolss = yes
# cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[data]
comment = data
inherit acls = Yes
read only = No
path = /data
directory mask = 770
create mask = 660
# ------------------------------------------------------------------------
/etc/selinux/config
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUX=enforcing
SELINUXTYPE=targeted