파일 권한이 허용된 작업과 일치하지 않습니다...?

파일 권한이 허용된 작업과 일치하지 않습니다...?

CentOS 9 VM의 파일 권한과 관련된 몇 가지 문제가 발생했습니다. 저는 이전에 이렇게 많은 문제를 겪어본 적이 없으며 설치 중에 선택한 보안 옵션 및 파일 시스템(GUI STIG 및 ext4)과 관련이 있는지 궁금합니다.

예시 질문 1:

동일한 디렉터리에 있는 두 개의 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/편집/실행할 수도 없습니다. 이 세 가지 작업은 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을 기반으로 파일을 사용할 수 있습니다.

관련 정보