SELinux ラベルを削除するにはどうすればいいですか?

SELinux ラベルを削除するにはどうすればいいですか?

SELinuxラベルを追加しましsvirt_sandbox_file_t/home

chcon -Rt svirt_sandbox_file_t /home

ラベルは次のように表示されます:

[user@localhost ~]$ ls -Z
unconfined_u:object_r:svirt_sandbox_file_t:s0 Desktop
unconfined_u:object_r:svirt_sandbox_file_t:s0 Documents
...

ラベルをもう一度削除するにはどうすればいいですかsvirt_sandbox_file_t?

再起動を試み、/home/.autorelabel再ラベル付けをトリガーする を追加しましたが、ラベルは消えません。私は Fedora 23 を使用しています。

答え1

/etc/selinux/config再起動するように設定すれば、そうすると思いますdisabled。その後、 に設定してenforcing再起動すると、他の方法で再ラベル付けに問題があった場合でも、再ラベル付けされます。ただし、restorecon が機能しないのは奇妙です。

難しい方法でリセットしたい場合は、/home ディレクトリ自体を次のようにする必要があります。

system_u:object_r:home_root_t

各ユーザーのホーム ディレクトリ (およびその中のファイル) は次のようになります。

unconfined_u:object_r:user_home_dir_t:s0

これらはコマンドか、とchconの組み合わせで設定できます。semanagerestorecon

chcon -t home_root_t /home
chcon -Rt user_home_dir_t /home/*

または

 semanage fcontext -a -t home_root_t /home
 semanage fcontext -a -t user_home_dir_t /home/*
 restorecon -R /home

その点に注意してください一般的に言えば chconデフォルトをそのままにして、即時の変更を強制するために使用され、restoreconデフォルトのコンテキストに復元されます。あなたのケースでは、何らかの理由でそれがうまくいかなかったようです。

一般的semanage fcontextには、ローカルコンテキストファイルを書き込むことを目的としています。/etc/selinux/targeted/contexts/files/file_contexts.local

現在のコンテキストとデフォルトのコンテキストに関する豊富な情報は、次の場所にあります。

/etc/selinux/targeted/contexts/default_contexts
/etc/selinux/targeted/contexts/files/file_contexts
/etc/selinux/targeted/contexts/files/file_contexts.homedirs

これらのファイルが何らかの理由で破損している可能性があり、全体として、ファイルの変更方法によっては、上記の操作では完全に復元できないサブコンテキストが多数あります。これらのファイルを調べて、追加されたコンテキスト マッピングを見つけて、その方法で削除できるかどうかを確認することをお勧めします。

理論的には、仮想マシンまたは別のマシン (またはオンラインで見つけたもの) を用意し、既知の適切なデフォルトを適切なディレクトリにコピーして、適切なデフォルトを取得するためにシステムが再ラベル付けできるようにすることもできます。ただし、これにも欠点がいくつかあります。

結局のところ、多少の試行錯誤が必要になります。上記の chcon/semanage コマンドで大まかな概要はわかるはずですが、サブディレクトリの一部に独自のコンテキストが存在する可能性もあります。

役に立つかもしれない追加のコンテキスト(これらはすべて /home/username にあります)は次のとおりです。

ls -laZ /home/username

##context###########################  Directory##
unconfined_u:object_r:cache_home_t:s0 .cache
unconfined_u:object_r:config_home_t:s0 .config
unconfined_u:object_r:dbus_home_t:s0 .dbus
unconfined_u:object_r:gconf_home_t:s0 .gconf
unconfined_u:object_r:gconf_home_t:s0 .gconfd
unconfined_u:object_r:gpg_secret_t:s0 .gnupg
unconfined_u:object_r:gconf_home_t:s0 .local
unconfined_u:object_r:ssh_home_t:s0 .ssh

これは私のホーム ディレクトリに基づいていることに注意してください。他にも探し出さなければならないものがあるかもしれませんが、それらのほとんどが正しければ、ほぼ正しい方向に戻るはずです。

関連情報