web-dev-qa-db-ja.com

新しく作成したファイルに「system_u」のラベルを付ける方法は?

Freetds用の空のconfファイルを作成したところ、権限が間違っていることに気づきました。

[root@box etc]# touch freetds.conf.new
[root@box etc]# ll -lZ freetds.conf*
-rw-r--r--. root root system_u:object_r:etc_t:s0   freetds.conf
-rw-rw----. root root unconfined_u:object_r:etc_t:s0   freetds.conf.new

だから私は試しました:

[root@box]# semanage fcontext -a -t system_u /etc/freetds.conf.new 

しかし、これは失敗します:

ValueError: Type system_u is invalid, must be a file or device type

Freetds.conf.newファイルのラベルをunconfined_uからsystem_uに変更するには、何を使用すればよいですか?

8
a coder

「一時的な」ラベルの変更は、chconコマンドを介して行われます。

bash-4.2# touch freetds.conf.new
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   freetds.conf.new
bash-4.2# chcon -t etc_t -u system_u freetds.conf.new 
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root system_u:object_r:etc_t:s0       freetds.conf.new

永続的な変更は、semanageコマンドを介して行われます。これにより、/etc/selinux/targeted/contexts/files/file_contexts.localに行が追加(または変更)され、restoreconで適用できます。

では、新しいファイルから始めましょう。

bash-4.2# rm freetds.conf.new
bash-4.2# touch freetds.conf.new
bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   freetds.conf.new

このためのルールを追加できます。

bash-4.2# semanage fcontext -a -t etc_t -s system_u /etc/freetds.conf.new
bash-4.2# cat /etc/selinux/targeted/contexts/files/file_contexts.local
# This file is auto-generated by libsemanage
# Do not edit directly.

/etc/freetds.conf.new    system_u:object_r:etc_t:s0

しかし、これはまだファイルを変更していません

bash-4.2# ls -lZ freetds.conf.new
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   freetds.conf.new

だから今それを適用します:

bash-4.2# restorecon -vF /etc/freetds.conf.new
restorecon reset /etc/freetds.conf.new context unconfined_u:object_r:etc_t:s0->system_u:object_r:etc_t:s0
bash-4.2# ls -lZ /etc/freetds.conf.new
-rw-r--r--. root root system_u:object_r:etc_t:s0       /etc/freetds.conf.new

ETA:更新後、freetds.conf.newfreetds.confにコピーする場合は、おそらくchconコマンドを使用します。それはより簡単で、既存のルールセットは、正しい名前が付いている場合にラベルの付け直しを処理します。これが最終的な名前になる場合は、semanageフォームのみを使用します。

14
Stephen Harris