chcon: '/etc/oddjobd.conf.d' のコンテキストを 'unconfined_u:object_r:oddjob_t:s0' に変更できません: 権限が拒否されました。

chcon: '/etc/oddjobd.conf.d' のコンテキストを 'unconfined_u:object_r:oddjob_t:s0' に変更できません: 権限が拒否されました。

私の友人がSELinuxを使用するのに苦労しています。サーバは、ターゲットポリシーを使用して実行モードで SELinux を設定します。

Puppetを使用する場合、restoreconまたはchconSELinuxが試行モードになっていない場合でも、このエラーが発生します。

# chcon -t oddjob_t /etc/tt 
chcon: failed to change context of `/etc/oddjobd.conf.d' to `unconfined_u:object_r:oddjob_t:s0': Permission denied 

これには以下が/var/log/audit/audit.log含まれます。

type=AVC msg=audit(1429628369.080:338935): avc:  denied  { relabelto } for  pid=3629 comm="chcon" name="oddjobd.conf.d" dev=dm-0 ino=39413 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:oddjob_t:s0 tclass=dir 
type=SYSCALL msg=audit(1429628369.080:338935): arch=c000003e syscall=188 success=no exit=-13 a0=12f20e0 a1=3edf0162d9 a2=12f3620 a3=22 items=0 ppid=1206 pid=3629 auid=2006 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=25771 comm="chcon" exe="/usr/bin/chcon" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null) 

同様のアプローチを使用するとrestorecon失敗しました。

# restorecon -Rv /etc 
restorecon reset /etc/oddjobd.conf.d context system_u:object_r:etc_t:s0->system_u:object_r:oddjob_t:s0 
restorecon set context /etc/oddjobd.conf.d->system_u:object_r:oddjob_t:s0 failed:'Permission denied' 

これには以下が/var/log/audit/audit.log含まれます。

type=AVC msg=audit(1429628361.258:338934): avc:  denied  { relabelto } for  pid=3627 comm="restorecon" name="oddjobd.conf.d" dev=dm-0 ino=39409 scontext=unconfined_u:unconfined_r:setfiles_t:s0-s0:c0.c1023 tcontext=system_u:object_r:oddjob_t:s0 tclass=dir 
type=SYSCALL msg=audit(1429628361.258:338934): arch=c000003e syscall=189 success=no exit=-13 a0=7fdb4b1d5190 a1=7fdb49e762d9 a2=7fdb4b1d50f0 a3=1e items=0 ppid=1206 pid=3627 auid=2006 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=25771 comm="restorecon" exe="/sbin/setfiles" subj=unconfined_u:unconfined_r:setfiles_t:s0-s0:c0.c1023 key=(null)

彼はrootとしてログインしています。 Bashシェルに制限はありません(id -Z)。

それでは何が間違っていますか?

ベストアンサー1

oddjob_tまあ、私の友人が間違ったファイル形式(ファイルコンテキストではなくプロセスコンテキスト)を使用しようとしたことがわかりました。

そのディレクトリのコンテキストタイプを別のタイプに変更しても問題はありません(例chcon -t etc_t /etc/oddjobd.conf.d:)。

seinfoどのファイル形式があるかを確認するために使用できます。

# seinfo -afile_type -x | grep "oddjob"
      oddjob_var_run_t 
      oddjob_exec_t 
      oddjob_mkhomedir_exec_t 

restorecon私の友人が間違ったファイルコンテキストを挿入したため、実行も失敗しました。

semanage fcontext --add -t oddjob_t "/etc/oddjobd.conf.d(/.*)?"

だから私はその間違ったルールを削除しました(まったく必要ありませんでした):

semanage fcontext --list | grep "oddjob_t"
semanage fcontext -d -t oddjob_t "/etc/oddjobd.conf.d(/.*)?"

PS:このブログ投稿はこの問題を解決するのに非常に便利だと思いました。 Dan Walshのブログ:SELinuxタイプの見直し。

おすすめ記事