From 0b56f3c422c39f48709b3130d63a3639b20cfb89 Mon Sep 17 00:00:00 2001 From: wakadakawaka Date: Wed, 7 May 2025 21:20:36 +0500 Subject: [PATCH] add --- add-cyr-slug.py | 83 +++++++++ .../Linux/Управление правами доступа/chmod.md | 175 ++++++++++++++++++ .../ERP/Согласования УХ/Роль для принудительного согласования задачи.md | 1 + .../БСП и типовые/ERP/Согласования УХ/Установка ролей.md | 1 + .../Управляемые формы/Переопределение форм начальной страницы.md | 2 +- 5 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 add-cyr-slug.py create mode 100644 src/content/docs/knowledge-base/Linux/Управление правами доступа/chmod.md diff --git a/add-cyr-slug.py b/add-cyr-slug.py new file mode 100644 index 0000000..909e93c --- /dev/null +++ b/add-cyr-slug.py @@ -0,0 +1,83 @@ +import os +import re +import yaml +import sys + +def slugify(text): + # Заменяем всё, кроме букв (включая кириллицу), цифр и дефиса — на дефис + text = re.sub(r'[^а-яА-Яa-zA-Z0-9\-]+', '-', text) + text = re.sub(r'-{2,}', '-', text) + text = text.strip('-') + return text.lower() + +def process_md_file(filepath, base_dir): + try: + with open(filepath, 'r', encoding='utf-8') as f: + content = f.read() + except Exception as e: + print(f"⚠️ Ошибка чтения {filepath}: {e}") + return + + match = re.match(r'^---\n(.*?)\n---\n(.*)', content, re.DOTALL) + if not match: + print(f"ℹ️ Создаётся frontmatter для {filepath}") + frontmatter = {} + body = content + else: + frontmatter_raw, body = match.groups() + frontmatter = yaml.safe_load(frontmatter_raw) or {} + + title = frontmatter.get('title') + filename = os.path.splitext(os.path.basename(filepath))[0] + + if not title: + title = filename + frontmatter['title'] = title + print(f"ℹ️ Добавлен title из имени файла: {title} в {filepath}") + + rel_dir = os.path.relpath(os.path.dirname(filepath), base_dir) + slug_parts = [] + + if rel_dir != '.': + slug_parts.append(slugify(rel_dir.replace('\\', '/'))) + + slug_parts.append(slugify(title)) + new_slug = '/'.join(slug_parts) + + current_slug = frontmatter.get('slug', '') + if current_slug == new_slug: + print(f"✅ {filepath} (slug уже установлен)") + return + if re.match(r'^[a-z0-9\-/]+$', current_slug): + print(f"♻️ Обновление латинского slug → {new_slug} в {filepath}") + else: + print(f"✍️ Установка slug → {new_slug} в {filepath}") + + frontmatter['slug'] = new_slug + new_frontmatter_raw = yaml.dump(frontmatter, allow_unicode=True, sort_keys=False).strip() + new_content = f'---\n{new_frontmatter_raw}\n---\n{body}' + + try: + with open(filepath, 'w', encoding='utf-8') as f: + f.write(new_content) + except Exception as e: + print(f"❌ Ошибка записи {filepath}: {e}") + +def walk_md_files(base_dir): + for root, dirs, files in os.walk(base_dir): + for file in files: + if (file.endswith('.md') or file.endswith('.mdx')) and not file.lower().startswith('index.'): + process_md_file(os.path.join(root, file), base_dir) + print("\nГотово!") + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Использование: python add_slug.py <путь_к_папке_с_документацией>") + sys.exit(1) + + folder_path = sys.argv[1] + if not os.path.isdir(folder_path): + print("❌ Указан неверный путь к папке.") + sys.exit(1) + + walk_md_files(folder_path) \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Linux/Управление правами доступа/chmod.md b/src/content/docs/knowledge-base/Linux/Управление правами доступа/chmod.md new file mode 100644 index 0000000..2037717 --- /dev/null +++ b/src/content/docs/knowledge-base/Linux/Управление правами доступа/chmod.md @@ -0,0 +1,175 @@ +--- +title: Права доступа в Linux и команда chmod +slug: linux-управление-правами-доступа/права-доступа-в-linux-и-команда-chmod +--- + +Команда `chmod` используется в Linux и других Unix-подобных системах для изменения прав доступа к файлам и каталогам. + +## Формат команды и аргументы + +```bash +chmod [опции] права файл +``` + +Например: + +```bash +chmod 755 script.sh +``` + +## Подробности об аргументах `chmod` + +Команда `chmod` принимает различные аргументы: + +### Общий синтаксис + +```bash +chmod [опции] [символьные или числовые права] файл(ы) +``` + +### Часто используемые опции: + +| Опция | Описание | +| ------------------ | --------------------------------------------------------------------------------- | +| `-R` | Рекурсивно изменить права во всех подкаталогах и файлах | +| `-v` | Подробный вывод — показывает, какие изменения были сделаны | +| `-c` | Показывает изменения только для тех файлов, чьи права действительно были изменены | +| `--reference=ФАЙЛ` | Установить права доступа, как у другого файла | + +Примеры: + +```bash +chmod -R 755 /var/www # Рекурсивно задать права +chmod -v 644 file.txt # Показать результат изменения прав +chmod --reference=example.txt config.txt # Установить такие же права, как у example.txt +``` + +## Чтение прав доступа + +Команда `ls -l` показывает права доступа к файлам: + +```bash +-rwxr-xr-- 1 user group 1234 Май 7 12:00 script.sh +``` + +Разбор: + +* Первая буква `-` — тип (файл, каталог и т.д.) +* Далее три блока по 3 символа: + + * `rwx` — для владельца (user) + * `r-x` — для группы (group) + * `r--` — для остальных (others) + +## Таблица прав и чисел + +Каждое разрешение соответствует числу: + +| Символы | Значение | Описание | +| ------- | -------- | --------------------- | +| `r` | 4 | чтение (read) | +| `w` | 2 | запись (write) | +| `x` | 1 | исполнение (execute) | +| `-` | 0 | отсутствие разрешения | + +Комбинации: + +| Права | Цифра | Обозначение | +| ----- | ----- | ----------- | +| `rwx` | 7 | 4 + 2 + 1 | +| `rw-` | 6 | 4 + 2 | +| `r-x` | 5 | 4 + 1 | +| `r--` | 4 | 4 | +| `-wx` | 3 | 2 + 1 | +| `-w-` | 2 | 2 | +| `--x` | 1 | 1 | +| `---` | 0 | 0 | + +## Примеры chmod + +```bash +chmod 755 file # Владелец: rwx, группа: r-x, остальные: r-x +chmod 644 file # Владелец: rw-, группа: r--, остальные: r-- +chmod 700 file # Владелец: rwx, остальные: --- +chmod 600 secret # Только владелец может читать и писать +chmod +x script.sh # Добавить право на выполнение для всех +chmod -x script.sh # Убрать право на выполнение для всех +``` + +## Работа с каталогами + +Для каталогов флаг `x` означает "доступ внутрь каталога". Без него пользователь не может зайти в папку, даже если у него есть `r` (чтение). + +Пример: + +```bash +chmod 755 mydir # Владелец: полный доступ, другие могут просматривать +chmod 700 mydir # Только владелец может заходить в каталог +``` + +## Рекурсивное изменение прав + +Чтобы изменить права доступа во всех подкаталогах и файлах, используется флаг `-R`: + +```bash +chmod -R 755 /путь/к/каталогу +``` + +Это установит одинаковые права на все каталоги и файлы внутри указанного пути. + +### Осторожно с 777 + +```bash +chmod -R 777 /var/www # Очень небезопасно! Все получат полный доступ +``` + +### Рекомендованный способ — разделять файлы и каталоги: + +```bash +# Установить права 755 на все каталоги +find /путь -type d -exec chmod 755 {} \; + +# Установить права 644 на все файлы +find /путь -type f -exec chmod 644 {} \; +``` + +### Пояснение к аргументам: + +* `find` — команда поиска файлов и каталогов +* `/путь` — начальный путь, где выполняется поиск +* `-type f` — искать только обычные файлы (`-type d` — каталоги) +* `-exec` — выполнить указанную команду над каждым найденным элементом +* `chmod 644 {}` — применить `chmod` к текущему найденному файлу (подставляется вместо `{}`) +* `\;` — завершает команду `-exec` (обязательно экранировать точку с запятой в bash) + +```` + +Это особенно полезно для веб-серверов и проектов, где важно разграничивать доступ к файлам и каталогам. + +## Изменение прав по символам + +Вместо чисел можно использовать буквенную форму: + +```bash +chmod u+x file # Добавить исполнение владельцу +chmod go-w file # Убрать запись для группы и остальных +chmod a+r file # Добавить чтение всем (u+g+o) +```` + +Где: + +* `u` — владелец (user) +* `g` — группа (group) +* `o` — остальные (others) +* `a` — все (all) + +## Проверка прав + +```bash +ls -l filename # Просмотр прав +stat filename # Подробная информация о файле +``` + +## Заключение + +Команда `chmod` — важный инструмент для управления доступом к файлам и каталогам в Linux. Понимание цифрового и символьного форматов помогает эффективно настраивать безопасность системы. diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Роль для принудительного согласования задачи.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Роль для принудительного согласования задачи.md index c7a35f8..2e22aee 100644 --- a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Роль для принудительного согласования задачи.md +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Роль для принудительного согласования задачи.md @@ -1,5 +1,6 @@ --- title: Профиль для принудительного согласования (УЗГА) +slug: примеры-сниппеты-бсп-и-типовые-erp-согласования-ух/профиль-для-принудительного-согласования-узга --- `(РТК) Принудительное согласование задачи` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Установка ролей.md b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Установка ролей.md index cebe1ab..5870f4b 100644 --- a/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Установка ролей.md +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/БСП и типовые/ERP/Согласования УХ/Установка ролей.md @@ -1,5 +1,6 @@ --- title: Настройка ролей согласования УХ +slug: примеры-сниппеты-бсп-и-типовые-erp-согласования-ух/настройка-ролей-согласования-ух --- Смотри РС `ОтветственныеПоОбъектам` \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Примеры, сниппеты/Общее/Управляемые формы/Переопределение форм начальной страницы.md b/src/content/docs/knowledge-base/Примеры, сниппеты/Общее/Управляемые формы/Переопределение форм начальной страницы.md index a20fb1a..71ba81a 100644 --- a/src/content/docs/knowledge-base/Примеры, сниппеты/Общее/Управляемые формы/Переопределение форм начальной страницы.md +++ b/src/content/docs/knowledge-base/Примеры, сниппеты/Общее/Управляемые формы/Переопределение форм начальной страницы.md @@ -1,6 +1,6 @@ --- title: Переопределение форм начальной страницы для разных видов клиента -slug: примеры-сниппеты-общее-управляемые-формы/переопределение-форм-начальной-страницы +slug: примеры-сниппеты-общее-управляемые-формы/переопределение-форм-начальной-страницы-для-разных-видов-клиента --- # В модуле приложения