$ ls -la /var/www/ 合計 24 drwxr-xr-x. 6 root root 4096 4月 1 22:02 2012 . drwxr-xr-x. 22 root root 4096 4月 1 22:02 2012 .. drwxr-xr-x. 2 root root 4096 2月 15 00:48 2012 cgi-bin drwxr-xr-x. 3 root root 4096 4月 1 22:02 2012 error drwxr-xr-x. 2 root root 4096 2月 15 00:48 2012 html drwxr-xr-x. 3 root root 4096 4月 1 22:02 2012 iconsなので、下表のように owner(root) には、読み・書き・実行を許可。root グループのユーザおよびその他のユーザには、読み・実行のみが許可される。
read | write | execute | |
owner | r | w | x |
group | r | - | x |
everyone | r | - | x |
$ ls /etc/selinux/ config restorecond.conf restorecond_user.conf semanage.conf targeted
# ps -eZ | grep httpd system_u:system_r:httpd_t:s0 2292 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2301 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2302 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2304 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2305 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2306 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2307 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2308 ? 00:00:00 httpd system_u:system_r:httpd_t:s0 2309 ? 00:00:00 httpd
system_u | ユーザ名 | targetdではダミーが設定される |
system_r | ロール名 | targetdではダミーが設定される |
httpd_t | ドメイン | ★targetdで使われるのはこいつだけ★ |
s0 | レベル | targetdではs0が設定される |
# ps -Z LABEL PID TTY TIME CMD unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 3110 pts/0 00:00:00 su unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 3121 pts/0 00:00:00 bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 3165 pts/0 00:00:00 ps
$ ls -dZ /var/www/* drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 /var/www/cgi-bin drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/error drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/icons
system_u | ユーザ名 | targetdではダミーが設定される |
object_r | ロール名 | targetdではダミーが設定される |
httpd_sys_conetnt_t | タイプ | ★targetdで使われるのはこいつだけ★ |
s0 | レベル | targetdではs0が設定される |
# yum -y install setools-gui
# apolドメイン httpd_t は、タイプ httpd_sys_contents_t に対して、read, write, getattr,… が許可されていることが分かる
$ cat /etc/selinux/config # This file controls the state of SELinux on the system. # 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. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
SELINUX | enforcing(アクセス制御をする)、permissive(制御はするが、実行拒否はしない) |
SELINUXTYPE | targetd, strict, mls |
# touch ./autorelabel # reboot
# setenforce 1 # getenforce Enforcing
# setenforce 0 # getenforce Permissive
# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 24 Policy from config file: targeted
# yum -y audit* # yum -y install policycoreutils* # yum -y install setroubleshoot*
# /etc/rc.d/init.d/slapd start slapd の設定ファイルをチェック中: [失敗] olcDbDirectory: value #0: invalid path: Permission denied config error processing olcDatabase={1}bdb,cn=config: olcDbDirectory: value #0: invalid path: Permission denied slaptest: bad configuration file!
# setenforce 0 # getenforce Permissive # /etc/rc.d/init.d/slapd start slapd を起動中: [ OK ]SELinux の実行モードを Permissive にすると起動することから SELinux が原因だと分かる。
# /etc/rc.d/init.d/slapd stop slapd を停止中: [ OK ] # setenforce 1 # getenforce Enforcing
May 4 21:43:19 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from write access on the directory ldap. For complete SELinux messages. run sealert -l ac7a035b-2e6d-4ee7-ba3a-f220bc8f1aa7 May 4 21:43:20 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from write access on the directory ldap. For complete SELinux messages. run sealert -l ac7a035b-2e6d-4ee7-ba3a-f220bc8f1aa7 May 4 21:43:21 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from write access on the directory ldap. For complete SELinux messages. run sealert -l ac7a035b-2e6d-4ee7-ba3a-f220bc8f1aa7 May 4 21:43:22 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from write access on the directory ldap. For complete SELinux messages. run sealert -l ac7a035b-2e6d-4ee7-ba3a-f220bc8f1aa7 May 4 21:43:23 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from remove_name access on the directory DUMMY. For complete SELinux messages. run sealert -l f152bf10-f1fe-4235-9f90-194573beca05 May 4 21:43:23 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from remove_name access on the directory DUMMY. For complete SELinux messages. run sealert -l f152bf10-f1fe-4235-9f90-194573beca05 May 4 21:43:24 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from read access on the file DB_CONFIG. For complete SELinux messages. run sealert -l bbde5eb7-698d-4339-8e70-212af67e3832 May 4 21:43:25 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from lock access on the file /var/lib/ldap/alock. For complete SELinux messages. run sealert -l be1e9256-3cc4-4dc7-80d0-759a4e0d285f May 4 21:43:26 gs setroubleshoot: SELinux is preventing /usr/sbin/slapd from getattr access on the file /var/lib/ldap/alock. For complete SELinux messages. run sealert -l dc76c0fe-9ec1-4a34-add3-1bad390863db
# sealert -l ac7a035b-2e6d-4ee7-ba3a-f220bc8f1aa7 SELinux is preventing /usr/sbin/slapd from write access on the ディレクトリ ldap. ***** プラグイン catchall_labels (83.8 confidence) が提案しています ******************** もし、 slapd が ldap directory の write アクセスを持つことを許可したい そして、ldap のラベルを変更する必要があります 行ってください # semanage fcontext -a -t FILE_TYPE 'ldap' この FILE_TYPE 以下のどれかです: var_lock_t, tmp_t, tmpfs_t, slapd_replog_t, var_run_t, slapd_db_t, slapd_tmpfs_t, var_log_t, slapd_log_t, slapd_var_run_t, slapd_tmp_t, root_t. 次にこれを実行してください: restorecon -v 'ldap' ***** プラグイン catchall (17.1 confidence) が提案しています *************************** もし、slapd に、 ldap directory の write アクセスがデフォルトで許可されるべきです。 そして、これをバグをして報告すべきです。 このアクセスを許可するために、ローカルポリシーモジュールを生成することができます。 行ってください このアクセスを一時的に許可するには、以下を実行してください。: # grep slaptest /var/log/audit/audit.log | audit2allow -M mypol # semodule -i mypol.pp
# semanage fcontext -a -t slapd_db_t "/etc/openldap/(/.*)?" # cat /etc/selinux/targeted/contexts/files/file_contexts | grep openldap /var/run/openldap(/.*)? system_u:object_r:slapd_var_run_t:s0 /etc/openldap/slapd\.d(/.*)? system_u:object_r:slapd_db_t:s0
# restorecon -R /etc/openldap/slapd.d # ls -dZ /etc/openldap/slapd.d drwxr-xr-x. ldap ldap unconfined_u:object_r:slapd_db_t:s0 /etc/openldap/slapd.d # ls -dZ /etc/openldap/slapd.d/* drwxr-x---. ldap ldap unconfined_u:object_r:slapd_db_t:s0 /etc/openldap/slapd.d/cn=config -rw-------. ldap ldap unconfined_u:object_r:slapd_db_t:s0 /etc/openldap/slapd.d/cn=config.ldif
# semanage fcontext -a -t slapd_db_t "/var/lib/ldap/(/.*)?" # restorecon -R /var/lib/ldap
# /etc/rc.d/init.d/slapd start slapd を起動中: [ OK ]
一覧表示 | # semanage fcontext -l |
利用権限の設定 | # semanage fcontext -a -t slapd_db_t "/etc/openldap/(/.*)?" |
利用権限の削除 | # semanage fcontext -d -t slapd_db_t "/etc/openldap/(/.*)?" |
設定の反映は、# restorecon -R /var/lib/ldap を実行する必要あり
一覧表示 | # semanage port -l |
利用権限の設定 | # semanage port -a -t http_port_t -p tcp 81 |
利用権限の削除 | # semanage port -d -t http_port_t -p tcp 81 |
例は、apache が port 81 で通信できるようにするもの。semangeコマンド実行で設定が反映される
# chcon -t samba_share_t /var/samba/share -R
ディレクトリの権限属性は変更されるが、権限を管理している file_contexts は変更されない。file_contexts からディレクトリの権限属性が復元される可能性があるので、お試しで利用権限を変更するときに使用し、巧くいったら semanage で file_contexts を変更する
一覧表示 | # getsebool -a |
利用権限の設定 | # getsebool -p samba_enable_dir 1 |
bool パラメータは、複数のルールの組。有効化することでそれらのルールが適用されるようになる。
例は、samba が ~/ を共有できるようにする設定を有効化するもの。
-p は permanent。-p をつけないと再起動でデフォルト値(0 : off) に戻る
Scientific 6.2 Server?