Compare commits
2 Commits
11d33147c4
...
7d1d905ea2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7d1d905ea2 | ||
![]() |
0b56f3c422 |
83
add-cyr-slug.py
Normal file
83
add-cyr-slug.py
Normal file
@ -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)
|
@ -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. Понимание цифрового и символьного форматов помогает эффективно настраивать безопасность системы.
|
@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Профиль для принудительного согласования (УЗГА)
|
title: Профиль для принудительного согласования (УЗГА)
|
||||||
|
slug: примеры-сниппеты-бсп-и-типовые-erp-согласования-ух/профиль-для-принудительного-согласования-узга
|
||||||
---
|
---
|
||||||
|
|
||||||
`(РТК) Принудительное согласование задачи`
|
`(РТК) Принудительное согласование задачи`
|
@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Настройка ролей согласования УХ
|
title: Настройка ролей согласования УХ
|
||||||
|
slug: примеры-сниппеты-бсп-и-типовые-erp-согласования-ух/настройка-ролей-согласования-ух
|
||||||
---
|
---
|
||||||
|
|
||||||
Смотри РС `ОтветственныеПоОбъектам`
|
Смотри РС `ОтветственныеПоОбъектам`
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Переопределение форм начальной страницы для разных видов клиента
|
title: Переопределение форм начальной страницы для разных видов клиента
|
||||||
slug: примеры-сниппеты-общее-управляемые-формы/переопределение-форм-начальной-страницы
|
slug: примеры-сниппеты-общее-управляемые-формы/переопределение-форм-начальной-страницы-для-разных-видов-клиента
|
||||||
---
|
---
|
||||||
|
|
||||||
# В модуле приложения
|
# В модуле приложения
|
||||||
|
Loading…
x
Reference in New Issue
Block a user