グループの所有権があるディレクトリにファイルを作成/タッチしようとすると、「権限が拒否されました」というメッセージが表示されます。
/data/www/acoder.txtをタッチしてください。
[acoder@box]$ touch /data/www/acoder.txt
touch: cannot touch '/data/www/acoder.txt': Permission denied
猫/背中/グループ
webdev:x:1001:acoder
id
私はwebdevグループに属していることを示しています。
[acoder@box ~]$ id
uid=1000(acoder) gid=1000(acoder) groups=1000(acoder),10(wheel),1002(webdev) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
ll -lZ /データ/
drwxr-xr-x. 3 apache webdev system_u:object_r:httpd_sys_rw_content_t:s0 4096 Mar 20 15:39 www
nami-olm/data/www
[acoder@box ~]$ namei -olm /data/www
f: /data/www
dr-xr-xr-x root root /
drwxr-xr-x root root data
drwxrwx--- apache webdev www
アコーダがグループ内にあり、インクルードディレクトリのグループ所有権(書き込み権限を含む)を持っている場合、権限webdev
拒否webdev
エラーを引き起こす可能性があるもう1つの要因は何ですか?
編集する
auseachへの参照を見つけてくださいtouch
。
時間 - > 2023年3月21日火曜日09:21:15
Node=box.example.com 型=PROCTITLE msg=audit(1679404875.375:8966252): proctitle=746F756368002F646174612F7777772F6164726961324E
node=box.example.com type=PATH msg=audit(1679404875.375:8966252): item=0 name="/data/www/" inode=128 dev=fd:0e mode=040755 ouid=48 ogid=1002 00:00 obj=system_u:object_r:httpd_sys_rw_content_t:s0 名前タイプ=親 cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
Node=box.example.com type=CWD msg=audit(1679404875.375:8966252): cwd="/home/acoder"
Node=box.example.com タイプ=SYSCALL msg=audit(1679404875.375:8966252): arch=c000003e syscall=257 成功=終了なし=-13 a0=ffffff9c a1=7fff2ee2e64b2 pid=602594 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts25 ses=1 comm="u subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="アクセス"
ユーザーアコーダーがファイルをアップロードしようとすると、エラー/data/www/
-1も受信されます。sftp
時間 - > 2023年3月21日火曜日09:30:14
Node=box.example.com type=PROCTITLE msg=audit(1679405414.563:8966285): proctitle="/usr/libexec/openssh/sftp-server"
node=box.example.com type=PATH msg=audit(1679405414.563:8966285): item=1 name="/data/www/" inode=536875051 dev=fd:0e mode=040770 ouid=48 ogi 00:00 obj=unconfined_u:object_r:httpd_sys_rw_content_t:s0 名前タイプ=親 cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
Node=box.example.com type=PATH msg=audit(1679405414.563:8966285): item=0 name="/data/www/acoder.php" inode=626000347 dev=fd:0e mode=0100680 ou 1002 rdev=00:00 obj=unconfined_u:object_r:httpd_sys_rw_content_t:s0 nametype=normal cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
Node=box.example.com type=CWD msg=audit(1679405414.563:8966285): cwd="/home/acoder"
Node=box.example.com タイプ=SYSCALL msg=audit(1679405414.563:8966285): arch=c000003e syscall=257 成功=終了なし=-1 a0=ffffff9c a1=561c6002f6e2 pid=602649 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=(なし) ses=3674 comm libexec/openssh/sftp-server" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="access"
Node=box.example.com タイプ=FANOTIFY msg=audit(1679405414.563:8966285): resp=2
[ルート@ボックス]#
どちらの場合も、コンテキストを次のように表示する検索が表示されます。
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
ただし、ファイルシステムの実際のコンテキストは次のとおりです。
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
~によるとRHELドキュメント、
トピック=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
subj フィールドは SELinux コンテキストを記録します。実行時に分析されたプロセスの表示。
これが実際に何を意味するのか混乱しています。 SELinuxが読んでいるコンテキストが私が見ているものとは異なりますかll -lZ
?
2つのausearch結果を参照してsyscall=257
、openat
それぞれ257個ausyscall
。
audit2allow
関連ポリシーの変更はお勧めできません。
[root@box]# ausearch -c 'touch' --raw | audit2allow -M my-touch
Nothing to do
[root@box]#
編集2(2023年3月24日)
私は問題を次に絞ったと信じています。ファブリサイド。このサービスを停止すると、SFTP経由でファイルを転送できます。ただし、実行している必要があるため、sftp(およびおそらくまだ知らない他のプロセス)へのアクセスを許可するように設定する方法を学ぶ必要があります。
もっとアイデアがありますか?
答え1
これは結局fapolicyd
拒否された。
これがベストプラクティスと見なされるかどうかはわかりませんが、次のように問題を解決しました。
新しいルールを追加:
# fapolicyd-cli --file add /data/www/nbsprod/public_html/ --trust-file nbsprod_pub_html
更新ルールfapolicyd-cli
# fapolicyd-cli --update
fapolicyd
適用モード(許可モードではない)で実行するように設定されていることを確認してください。
# vi /etc/fapolicyd/fapolicyd.conf
...
permissive = 0
...
再起動fapolicyd
# fapolicyd-cli --update
これで、エンドユーザーは上記の www ディレクトリにスクリプトをアップロードし、fapolicyd
拒否モードで実行できるようになります。