getfaclが絶対パス名から先行/を削除するのはなぜですか?

getfaclが絶対パス名から先行/を削除するのはなぜですか?

CentOS / Red Hat 6でACLを学んでいます。getfacl絶対パスで実行すると、次の結果が表示されます。

getfacl:絶対パス名から先行する "/"を削除する

これはなぜ必要ですか?いつ-pまたはスイッチを使用する必要がありますか--absolute-names

Wale SoyinkaとMichael Zhangが書いた私の本では、これについて言及しなくても、マニュアルページでも手がかりが見つからず、この警告を直接扱うサイトも見つからないようです。

答え1

マニュアルページからgetfacl

-p, --absolute-names
       Do not strip leading slash characters (`/'). The  default  behavior
       is to strip leading slash characters.

スイッチを使用せずに絶対パスを指定すると、警告メッセージが表示されます-p

コマンドに絶対パスを指定すると、出力が異なりますgetfacl

スイッチなし-p

$ getfacl /path/foo/bar
getfacl: Removing leading '/' from absolute path names
# file: path/foo/bar
[Output truncated...]

ファイルパスの先行スラッシュは、-pスイッチを使用する場合にのみ表示されます。

$ getfacl -p /path/foo/bar
# file: /path/foo/bar
[Output truncated...]

-pさらなる処理のために出力をパイピングするときに先行スラッシュを維持することが有用です。

コマンドに相対パスを指定すると、出力は同じになりますgetfacl

$ getfacl bar
# file: bar
[Output truncated...]

変更なし:

$ getfacl -p bar
# file: bar
[Output truncated...]

答え2

私はそうは思わない」'-p'フラグを使用しなかったため「本当に説明しました。目的この警告の。

これらのコマンドは、従来のPOSIX権限で許可されているより強力なセキュリティを明確に考慮して、きめ細かいセキュリティ対策を実装するように設計されています。

だから私は安全理論に戻り、それぞれの場合に何が間違っているのかを考え、「最も安全な」デフォルトを選択します。

  1. 予想通り、相対パスまたは絶対パスを使用します。問題ありません。
  2. 絶対パスを使用する必要がある場合は相対パスを使用する:機能しませんが、セキュリティの脆弱性を引き起こす可能性は低いです。 (また、事前に簡単に修正できますcd /。)
  3. 相対パスを使用する必要がある場合は、絶対パスを使用してください。これが、この制限が強調しようとする意図です。

プロジェクトインストールスクリプトの検討

setfacl -m u:1234:rw $project_dir/etc/passwd

$project_dirこれでエラーが発生しましたが、空の場合はどうなるか考えてみてください。 (そのようにスペルを書く必要があるかもしれませ$projectdirんし、設定ファイルが欠けていて設定されていないか、他の種類のバグがあるかもしれません。)

getfaclユースケースの1つは、次のように同じ原則が適用されます。

getfacl some/file | { make some changes } | setfacl -b -M- some/file

または等しく

getfacl some/file > aclfile
edit aclfile
setfacl -b -M aclfile some/file

おそらくもっと重要なこと

getfacl some/file > aclfile
edit aclfile
setfacl --restore=aclfile

(最後の場合、ターゲットファイル名は次のようになります。いいえコマンドラインに含まれており、setfaclaclfileから読み込まれます。 )

「これは、、、およびと同じように動作しなければならない」と考えることができ、chmodある意味では正しいです。これらのコマンドは、通知されていない絶対パスに対して同じ制限がある場合、より安全になります。chownchgrpinstall

しかし、これらのコマンドは長い歴史的先例(主にその背後にあるPOSIX標準)を持っているので、セキュリティの専門家が良い考えだと思っても、交渉には実際には適していません。

これは他の場所でも前例がないわけではありません。

rsync -Rパスを受信側から相対パスとして扱い、先行パスは無視します/

(以前はパッケージの配信に使用されており、普及しています)cpioなどのアーカイバには、同じ理由で行間を切り取るオプションがありますが、デフォルト設定は逆です(オフ)。tardebrpm/

関連情報