Проверка sudoers
~ sudo visudo -c
[sudo] пароль для ......
/etc/sudoers: успешно обработан
/etc/sudoers.d/05_proxy: некорректные права доступа, должны быть 0440
Настораживает последняя строка. Или можно проглотить это. sudo работает нормально.
Может кто сталкивался с этим явлением.
который:
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"
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.
более гибко и можно вшить любые действия прямо в тело или чз 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.