getfattrが拡張属性ビットが設定されているファイルに対して何も表示しないのはなぜですか?


10

CentOS 6.2でNagios XIインストールを実行していて、バックアップスクリプトを変更したいと考えています。このシェルスクリプトに拡張属性ビットが設定されていることに気付いたので、変更を加えても混乱しないようにしたい。実験したところ、「cp -p」ではこの設定が保持されないことがわかりました(これに関する更新についてはコメントを参照してください)。Linuxの拡張属性は初めてですが、拡張属性を表示するはずの「getfattr」コマンドがあることがわかりましたが、このファイルには何も表示されません。

cd /usr/local/nagiosxi/scripts
ll backup_xi.sh
-rwxr-x---.  1 nagios nagios   2757 Jul  3 10:03 backup_xi.sh*

# nothing is displayed by 'getfattr':
getfattr -d backup_xi.sh

# and nothing special seems to be present according to 'getfacl':
getfacl backup_xi.sh
# file: backup_xi.sh
# owner: nagios
# group: nagios
user::rwx
group::r-x
other::---

最終的に、私の目的は、元の製品のインストール中に設定された属性を保持しながらファイルを変更することです。getfattrによると、プロパティが明らかに存在しないにもかかわらず、拡張属性ビットが設定される理由はありますか?


1
さて、私は1つの謎を解決しました:「cp -p」のデフォルトは「cp --preserve = mode、ownership、timestamps」です。「cp --preserve = all backup_xi.sh backup_xi.sh.ORIG」を使用すると、拡張属性ビットが機能し、保持されます。
アラン

回答:


10

security.selinux拡張属性をすることにより、デフォルトでは表示されませんgetfattr。明示的に要求する必要があります。

$ getfattr -d Work
$ getfattr -n security.selinux Work
# file: Work
security.selinux="unconfined_u:object_r:user_home_t:s0"

5
ありがとうございました。getfattrのマニュアルページは誤解を招く可能性があります。「-d:パス名に関連付けられているすべての拡張属性の値をダンプします。」明らかに「すべて」は「すべて」を意味するものではありません。ワオ。オプション「-m」でパターン「-」を指定すると、「すべて」の属性がリストされることがわかりました。コマンド「getfattr -m-backup_xi.sh」を使用すると、「security.selinux」が唯一の属性として表示されます。
アラン

実際、manページは非表示になっています。「パターンのデフォルト値は "^ user \\。"です。これには、ユーザーネームスペースのすべての属性が含まれます。すべての属性を含めるには "-"を指定してください。」知ってよかった。
アッシュ、

1
すべての拡張属性をリストするには:getfattr -d -m ".*" <filename>
elig
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.