linux权限解析代码

将文件夹或则文件的权限值解析成数字

最近在编写基线检查的一些脚本,用到对特定文件的权限进行检查,写了各解析文件权限值函数记录下


## 将传入的一行或者 drwxr--r--当场参数传入,获取解析的值
def getFileP(key):
    def getFileP(key):
        rwx_1 = key[1:4]
        rwx_2 = key[4:7]
        rwx_3 = key[7:10]
        to_number = {
            "rwx": "7",
            "rw-": "6",
            "r-x": "5",
            "r--": "4",
            "-wx": "3",
            "-w-": "2",
            "--x": "1",
            "---": "0",
        }
        p = 0
        if rwx_1[-1] == 's':
            rwx_1 = rwx_1.replace("s", "x")
            p += 4
        if rwx_2[-1] == 's':
            rwx_2 = rwx_2.replace("s", "x")
            p += 2
        if rwx_3[-1] == "t":
            rwx_3 = rwx_3.replace("t", "x")
            p += 1
        # print(rwx_1,rwx_2,rwx_3)

        p = str(p) + to_number.get(rwx_1, "") + to_number.get(rwx_2, "") + to_number.get(rwx_3, "")
        return p

## chekP(t,"0655") 将特定文件的权限和0655进行比较,小于0655则为True,否则返回False
def checkP(p, t):
    p_t = zip(list(p), list(t))
    return all(
        list(
            map(lambda x: True if int(x[0]) < int(x[1]) else False, p_t)
        )
    )

## 多行文件群贤分成行,和列
def getRWX(content):
    if not content:
        return None
    content = content.split("\n")
    content = list(filter(lambda _: _.strip(), content))
    lines = list(map(lambda _: re.split("\s+", _), content))
    return lines
posted @ 2019-12-17 09:18  随时静听  阅读(252)  评论(0)    收藏  举报