ファイル権限が許可されている操作と一致しません...?

ファイル権限が許可されている操作と一致しません...?

CentOS 9 VMのファイル権限に関するいくつかの問題が発生しました。私は以前これほど多くの問題を経験したことがなく、インストール中に選択したセキュリティオプションとファイルシステム(GUI STIGとext4)に関連しているかどうか疑問に思います。

質問例1:

同じディレクトリにある2つのPythonファイル、lsとstatは同じ権限を表示します。

$ls -al config.py run_app.py
-rwx------. 1 myuser myuser 20K Aug  4 19:33 config.py
-rwx------. 1 myuser myuser 50K Jul  8 10:51 run_app.py
$stat config.py run_app.py
  File: config.py
  Size: 19873           Blocks: 40         IO Block: 4096   regular file
Device: fd05h/64773d    Inode: 1971283     Links: 1
Access: (0700/-rwx------)  Uid: ( 1000/myuser)   Gid: ( 1000/myuser)
Context: unconfined_u:object_r:user_home_t:s0
  File: run_app.py
  Size: 51016           Blocks: 104        IO Block: 4096   regular file
Device: fd05h/64773d    Inode: 1969096     Links: 1
Access: (0700/-rwx------)  Uid: ( 1000/myuser)   Gid: ( 1000/myuser)
Context: unconfined_u:object_r:user_home_t:s0

しかし、lsattrは正しく機能しません。

$lsattr config.py run_app.py
--------------e------- config.py
lsattr: Operation not permitted While reading flags on run_app.py
$sudo lsattr run_app.py
--------------e------- run_app.py

run_app.pyをcat/編集/実行することもできません。これらの3つのタスクはconfig.pyでうまく動作しますが。 run_app.pyを使用するすべてのタスクにはSudo / rootが必要です。

質問2の例:

Pythonパッケージは仮想環境にはインストールできませんが、ローカルユーザー環境にはインストールできます。

myuser@COS9-VM:~/sandbox
$python3 -m venv myvenv

myuser@COS9-VM:~/sandbox
$. myvenv/bin/activate

(myvenv) myuser@COS9-VM:~/sandbox
$python3 -m pip install pyyaml
Traceback (most recent call last):
  File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/__main__.py", line 29, in <module>
    from pip._internal.cli.main import main as _main
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/cli/main.py", line 9, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/cli/autocompletion.py", line 10, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
    from pip._internal.cli import cmdoptions
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/cli/cmdoptions.py", line 23, in <module>
    from pip._internal.cli.parser import ConfigOptionParser
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/cli/parser.py", line 12, in <module>
    from pip._internal.configuration import Configuration, ConfigurationError
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/configuration.py", line 21, in <module>
    from pip._internal.exceptions import (
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_internal/exceptions.py", line 7, in <module>
    from pip._vendor.pkg_resources import Distribution
  File "/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_vendor/pkg_resources/__init__.py", line 80, in <module>
    from pip._vendor import appdirs
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 846, in exec_module
  File "<frozen importlib._bootstrap_external>", line 982, in get_code
  File "<frozen importlib._bootstrap_external>", line 1039, in get_data
PermissionError: [Errno 1] Operation not permitted: '/home/myuser/sandbox/myvenv/lib64/python3.9/site-packages/pip/_vendor/appdirs.py'

(myvenv) myuser@COS9-VM:~/sandbox
$deactivate

myuser@COS9-VM:~/sandbox
$python3 -m pip install pyyaml
Defaulting to user installation because normal site-packages is not writeable
Collecting pyyaml
  Using cached PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (661 kB)
Installing collected packages: pyyaml
  WARNING: Value for scheme.platlib does not match. Please report this to <https://github.com/pypa/pip/issues/10151>
  distutils: /home/myuser/.local/lib/python3.9/site-packages
  sysconfig: /home/myuser/.local/lib64/python3.9/site-packages
  WARNING: Additional context:
  user = True
  home = None
  root = None
  prefix = None
Successfully installed pyyaml-6.0

アイデアが足りません...私は何を見逃していますか?

ベストアンサー1

オンラインで検索した結果、答えが得られました。もちろん、答えはすでにStack Overflow / Stack Exchange(ここ)ところで探すのに数日かかりました。

私の仮想マシンは実行中です。fapolicydインストール中にSTIGコンプライアンス構成の一部として有効にしました。このデーモンはフックを介してファイル権限決定プロセスに自分自身を挿入します。これには、デフォルトで特定の非システムバイナリ/実行可能ディレクトリにある特定の実行可能ファイルへのアクセスを無効にするルールファイルがあります。私が知る限り、ファイルのMIMEタイプの決定に従ってこれを行います。私の場合、config.pyshebangはありませんが、run_app.pyあります。これは後者をそのように分類text/x-pythonし、前者を無視するのに十分です。

サービスを停止/無効にすると、表示されるfapolicyd権限/ACLに基づいてファイルを使用できます。

おすすめ記事