web-dev-qa-db-ja.com

SELinuxラベルをsemanageを含むシンボリックリンクに割り当てて、ラベルを付け直しても保持されるようにするにはどうすればよいですか?

私のApache DocumentRoot/var/wwwは別のパスへのシンボリックリンクです。ターゲットには適切なファイルコンテキストラベル(httpd_sys_content_t)があり、ApacheはSELinuxを有効にしてそれを読み取ることができます。ただし、シンボリックリンクitselfにはvar_tのラベルが付いています。

[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:var_t:s0 www -> /srv/www

シンボリックリンクのラベルをhttpd_sys_content_tに変更する必要があります。

-hオプションを指定してchconを実行すると、最初は機能するようです。

[root@localhost var]# chcon -h -t httpd_sys_content_t /var/www
[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:httpd_sys_content_t:s0 www -> /srv/www

ただし、これはラベル変更後も存続しません。

[root@localhost var]# restorecon -Rv .
restorecon reset /var/www context system_u:object_r:httpd_sys_content_t:s0->syst
em_u:object_r:var_t:s0

Semanageを使用しても、リンク自体のラベルは変更されません。ターゲットのみ:

[root@localhost var]# semanage fcontext -a -t httpd_sys_content_t /var/www
[root@localhost var]# restorecon -Rv .
[root@localhost var]# ls -lZ
lrwxrwxrwx. root root unconfined_u:object_r:var_t:s0 www -> /srv/www

semanageには-hオプションはありません。

リンク自体のラベルを設定するように意味を取得して、ラベルの変更後もリンクをhttpd_sys_content_tのままにするにはどうすればよいですか?

12

私はそれを考え出した:

semanageにはオプション-fを使用すると、モードフィールドにlsd ディレクトリの場合、--通常のファイルの場合、 l リンクの場合)。いつ -f -lを使用すると、リンク自体がターゲットになります。

[root@localhost var]# semanage fcontext -f -l -a -t httpd_sys_content_t /var/www
[root@localhost var]# restorecon -Rv .
restorecon reset /var/www context system_u:object_r:var_t:s0->system_u:object_r:httpd_sys_content_t:s0

semanage-fcontext manページ。

10