MModeLattice
Сценарии

Сценарии работы с кодом · Отображение прав POSIX

03
Вокруг ваших задач

Конкретная отправная точка

Отобразите биты прав POSIX девятью читаемыми символами. Проверьте setuid, setgid и sticky с правом исполнения и без него, отклоняя отрицательные или слишком большие режимы без изменения файлов.

01

Откройте контекст

Выберите папку проекта и обозначьте нужные файлы или поведение.

02

Опишите изменение

Укажите входные данные, ожидаемый результат и границы, которые нужно сохранить.

03

Изучите работу

Проверьте предлагаемые изменения и команды, прежде чем полагаться на результат.

04

Проверьте результат

Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Отображение прав POSIX

Конкретная отправная точка
def permission_text(mode):
    if type(mode) is not int or not 0 <= mode <= 0o7777:
        raise ValueError("permission bits only")
    out = []
    for shift in (6, 3, 0):
        bits = (mode >> shift) & 7
        out.extend(c if bits & bit else "-"
                   for c, bit in zip("rwx", (4, 2, 1)))
    for pos, bit, mark in ((2, 0o4000, "s"), (5, 0o2000, "s"), (8, 0o1000, "t")):
        if mode & bit: out[pos] = mark if out[pos] == "x" else mark.upper()
    return "".join(out)

Пример — отправная точка для реального проекта, а не утверждение, что сгенерированный код уже протестирован. Адаптируйте пути, зависимости и ожидаемое поведение к своему приложению.

Рабочая среда с ИИ для кода

Здесь начинается ваше следующее изменение.

Скачать для Windows ↗