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.py
shebangはありませんが、run_app.py
あります。これは後者をそのように分類text/x-python
し、前者を無視するのに十分です。
サービスを停止/無効にすると、表示されるfapolicyd
権限/ACLに基づいてファイルを使用できます。