私が走るとき2つの理由のレビューSCP経由でフォルダにファイルをアップロードしようとして失敗する理由を確認してください。/foo/バーリモートサーバーでは、次の結果が発生します。/foo/bar フォルダへのアクセスが拒否されました。、次のテキストが表示されます。
Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one
under which the audit message was generated.
Possible mismatch between current in-memory
boolean settings vs. permanent ones.
私はそれが原因であるにちがいないことを知っています。SELinuxコマンドを実行するとき:
setenforce 0
SCPを介してファイルをアップロードできます。/foo/バー。また注目すべき点は、SSH経由でログインするとCDフォルダへ/foo/バーSELinuxを有効にすると、このフォルダにファイルを作成できます。
SELinuxで問題の原因が何であるかを確認するには、どのようにデバッグしますか?
編集する
ls -lZ
これはの出力です/foo/バー
drwxrwx--T. root foo-users user_u:object_r:default_t:s0 bar
そして出力はAVCが拒否されました~からaudit2allow
type=AVC msg=audit(1519304988.434:6984): avc: denied { write } for pid=26506 comm="scp" name="event-20180203.log.gz" dev="dm-4" ino=7260 scontext=user_u:user_r:user_t:s0 tcontext=user_u:object_r:default_t:s0 tclass=file
Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one under which the audit message was generated.
ベストアンサー1
AVCはこう言います。
$ echo "type=AVC msg=audit(1519304988.434:6984): avc: denied { write } for pid=26506 comm="scp" name="event-20180203.log.gz" dev="dm-4" ino=7260 scontext=user_u:user_r:user_t:s0 tcontext=user_u:object_r:default_t:s0 tclass=file" |audit2allow
#============= user_t ==============
#!!!! WARNING: 'default_t' is a base type.
allow user_t default_t:file write;
==> user_t SElinuxコンテキスト型で実行されているプロセスがdefault_t型のディレクトリに書き込もうとしています。
この問題を解決する別の方法は次のとおりです。
user_tが書き込むことができるようにターゲットディレクトリを表示します。
$ sesearch -s user_t --allow |grep "file.*write"
ファイル書き込み操作に許可されているターゲットコンテキストが表示されます。たとえば、foo / barはホワイトリストにssh_home_tとして表示できます。
$ sudo chcon -R -t ssh_home_t /foo/bar
または、可能であれば、ターゲットディレクトリを許可されたディレクトリに変更します。
あるいは、audit2allowを使用して制御を迂回する新しいルールを作成することもできますが、これは権限を開いてSELinuxの目標を無効にするため、最後の手段になるはずです。 「望むよりhttp://selinuxproject.org/page/Audit2allowRecipe)