Назад | Перейти на главную страницу

SELinux: не удается выполнить сценарий chcon с контекстом cifs_t

Я продолжаю получать 'Operation not supported' сообщение при попытке обновить тип контекста безопасности моего монтирования cifs. Я использую logrotate для отправки журналов с моего сервера в сетевое расположение, но контекст скрипта, который выполняется при монтировании cifs, является 'system_u:object_r:cifs_t:s0'

Вот флаги монтирования для моей папки cifs:

(rw,relatime,vers=1.0,cache=strict,username=cifsuser,domain=.,uid=1000,forceuid,gid=1000,forcegid,addr=10.1.3.97,file_mode=0755,dir_mode=0755,nounix,rsize=61440,wsize=16580,actimeo=1)

Мой logrotate запускался из cron.hourly, и каждый раз, когда он пытался переместить файлы на это монтирование, я получал ошибку политики selinux. Я попытался выполнить следующее, чтобы решить:

sealert -l b9263b3e-d2f9-4b33-ba48-af9b3b7695fd
grep logrotate /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

Но у меня все еще есть проблемы, и он больше не дает мне ошибок в / var / log / messages. Проверяя мои журналы /var/log/audit/audit.log, я вижу следующее:

type=SYSCALL msg=audit(1474114505.460:25005): arch=c000003e syscall=21 success=no exit=-13 a0=10f33a0 a1=4 a2=7ffd34025160 a3=7ffd34025080 items=0 ppid=16240 pid=16241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2773 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1474114506.695:25006): avc:  denied  { read } for  pid=16386 comm="sh" name="archive_logs.sh" dev="cifs" ino=60235645016091360 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:cifs_t:s0 tclass=file

Любая помощь будет принята с благодарностью.

Спасибо

Я расширил политику из-за ошибки. Установите RPM selinux-devel если еще нет, а затем вставьте это содержимое в файл с именем mylogrotate.te.

policy_module(mylogrotate, 1.0.0)

require {
  type logrotate_t;
  type cifs_t;
}

gen_tunable(logrotate_use_cifs, false)

tunable_policy(`logrotate_use_cifs',`
  fs_read_cifs_files(logrotate_t)
')

После этого проделайте следующее:

$ make -f /usr/share/selinux/devel/Makefile load
$ semanage boolean --modify --off logrotate_use_cifs

Это должно позволить политике читать файлы cifs.

Разбор сообщения об отказе AVC с помощью audit2allow, Я получил:

$ echo 'type=SYSCALL msg=audit(1474114505.460:25005): arch=c000003e syscall=21 success=no exit=-13 a0=10f33a0 a1=4 a2=7ffd34025160 a3=7ffd34025080 items=0 ppid=16240 pid=16241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2773 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null) \
        type=AVC msg=audit(1474114506.695:25006): avc:  denied  { read } for  pid=16386 comm="sh" name="archive_logs.sh" dev="cifs" ino=60235645016091360 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:cifs_t:s0 tclass=file' \
| audit2allow

#============= logrotate_t ==============
allow logrotate_t cifs_t:file read;

Я предполагаю, что крепление CIFS неправильно помечено, поскольку политика позволяет logrotate читать из cifs_t помеченные файлы, как показано sesearch:

$ sesearch -s logrotate_t -t cifs_t -p read --allow -c dir 
Found 1 semantic av rules:
  allow logrotate_t cifs_t : dir { ioctl read getattr lock search open } ;