Проверка sudoers

Системные сервисы и системы инициализации: systemd, sysvinit и другие


Ответить
rutgerg
Сообщения: 136
Зарегистрирован: 04.09.2022

#

Добрый вечер. Система работает нормально, но при проверке синтаксиса sudoers выдаёт:
~  sudo visudo -c
[sudo] пароль для ......
/etc/sudoers: успешно обработан
/etc/sudoers.d/05_proxy: некорректные права доступа, должны быть 0440


Настораживает последняя строка. Или можно проглотить это. sudo работает нормально.
Может кто сталкивался с этим явлением.
rutgerg
Сообщения: 136
Зарегистрирован: 04.09.2022

#

Извините, ложная тревога. Разобрался. В папке /etc/sudoers.d/ создался пустой текстовый файл 05_proxy. Видимо остаток от прошлых "танцев с бубном".
После его удаления всё нормализовалось.
BendalfRU
Сообщения: 331
Зарегистрирован: 07.07.2025

#

чтоб таково не было сделал сценарий,
который:
1. проверяет существование заданного файла;
2. если существует, то открывает его временную копию, ;
3. иначе создаёт целевой файл и открывает его временную копию ;
4. выставляет правильные права, перемещает в целевую директорию.

параметром служит целевой файл.
остальные переменные забиты в заголовке сценария.
#!/bin/bash

# --- Настройки ---
DEST_DIR="/path/to/target"  # Целевая директория
PERMS="0440"                 # Права доступа
EDITOR_BIN="nano"           # Редактор (vim, nano, gedit)

# --- Логика ---
TARGET_FILE="$1"
DEST_PATH="$DEST_DIR/$TARGET_FILE"

if [ -z "$TARGET_FILE" ]; then
    echo "Ошибка: укажите имя файла."
    exit 1
fi

# Создаем временный файл
TMP_FILE=$(mktemp /tmp/workfile.XXXXXX)

# Проверяем существование оригинала
if [ -f "$DEST_PATH" ]; then
    cp "$DEST_PATH" "$TMP_FILE"
else
    touch "$TMP_FILE"
fi

# Открываем копию для редактирования
$EDITOR_BIN "$TMP_FILE"

# Установка прав и перемещение в целевую директорию
chmod "$PERMS" "$TMP_FILE"
mkdir -p "$DEST_DIR"
mv "$TMP_FILE" "$DEST_PATH"

echo "Готово: $DEST_PATH"

Последний раз редактировалось BendalfRU 23.04.2026 00:01, всего редактировалось 1 раз.

CPU AMD Phenom(tm) II X4 955 3200МГЦ, 10ГБ ДДР2, GA-MA770-UD3 (Rev. 2.0, bios fj),
АМД Sapphire Radeon HD 4670, hdd ide ata5 120GB+200GB, net rtl8169, audio Creative Labs CA0106.

BendalfRU
Сообщения: 331
Зарегистрирован: 07.07.2025

#

вот еще с проверкой на sudo и установкой прав лоступа, владельца
более гибко и можно вшить любые действия прямо в тело или чз include другого сценария
#!/bin/bash
## Параметром служит целевой файл.
# --- Настройки ---
DEST_DIR="/var/www/html"  # Пример защищенной директории
PERMS="0440"
EDITOR_BIN="nano"

# --- Логика ---
TARGET_FILE="$1"
DEST_PATH="$DEST_DIR/$TARGET_FILE"

[[ -z "$TARGET_FILE" ]] && { echo "Использование: $0 имя_файла"; exit 1; }

TMP_FILE=$(mktemp /tmp/workfile.XXXXXX)

# Проверка существования через case
case $(test -f "$DEST_PATH"; echo $?) in
    0)
        cp "$DEST_PATH" "$TMP_FILE"
        ;;
    1)
        touch "$TMP_FILE"
        ;;
esac

# Редактируем (права sudo здесь не нужны, файл в /tmp принадлежит вам)
$EDITOR_BIN "$TMP_FILE"

# Устанавливаем права заранее
chmod "$PERMS" "$TMP_FILE"

# Проверка прав на запись в целевую директорию
if [ -w "$DEST_DIR" ] || [ ! -d "$DEST_DIR" ]; then
    mkdir -p "$DEST_DIR"
    mv "$TMP_FILE" "$DEST_PATH"
else
    echo "Требуются права суперпользователя для записи в $DEST_DIR"
    sudo mkdir -p "$DEST_DIR"
    sudo mv "$TMP_FILE" "$DEST_PATH"
    # Восстанавливаем владельца (опционально, обычно root при sudo)
    sudo chown root:root "$DEST_PATH" 
fi

echo "Выполнено: $DEST_PATH"

CPU AMD Phenom(tm) II X4 955 3200МГЦ, 10ГБ ДДР2, GA-MA770-UD3 (Rev. 2.0, bios fj),
АМД Sapphire Radeon HD 4670, hdd ide ata5 120GB+200GB, net rtl8169, audio Creative Labs CA0106.

Ответить