Linux

配置 SELINUX 以允許記錄到 /var/log 之外的文件

  • May 25, 2016

我有一個使用 syslog(3) 記錄到不是 /var/log 後代的文件的守護程序。目前,這需要禁用 SELINUX。如何配置啟用的 SELINUX 以允許此日誌記錄?

我是一個 SELINUX 新手。任何指導或建議將不勝感激。

如果您查看為目錄 /var/log 設置的上下文,您會注意到以下內容。

首先,該目錄/var/log具有以下 selinux 上下文集:

$ ls -Z /var | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

其次,日誌文件/var/log/messages沒有額外的上下文:

$ ls -Z /var/log/messages
-rw------- root root ?                                /var/log/messages

因此,您似乎只需要在/var/log您計劃將此附加日誌文件寫入的任何目錄上設置一個類似於該上下文的上下文。像這樣的事情應該這樣做。

方法一:複製 selinux 標籤

下面將複製與之關聯的上下文/var/log並將其應用到/opt/blah

$ mkdir /opt/blah
$ ls -Z /opt | grep blah
drwxr-xr-x  root root ?                                   blah

# label directory with context
$ chcon --reference /var/log /opt/blah

# see the newly added context
$ ls -Z /opt/ | grep blah
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   blah

方法#2:直接應用上下文

您也可以像這樣直接應用它們:

$ chcon system_u:object_r:var_log_t:s0 /opt/blah

我遠離一個可以確認需要執行這些命令的系統,但我相信您需要告訴 SELinux 也將這些新應用的上下文拾取到文件系統。

$ semanage fcontext -a -t var_log_t "/opt(/.*)?"
$ restorecon -R -v /opt

確認更改

# confirm identical to /var/log context
$ ls -Z /var/ | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

參考

引用自:https://unix.stackexchange.com/questions/79311