Итак, у меня есть сценарий bash "get-data.sh", который запускает два других сценария Python.
#!/bin/bash
scripts=/root/scripts
datos=/root/zabbixdata
fecha=$(date +"%Y_%m_%d")
sudo $scripts/filesystem.py > $datos/filesystem_$fecha.log &
sudo $scripts/cpu.py > $datos/cpu_$fecha.log &
и когда я запускаю скрипт, я получаю следующую ошибку
./get-data.sh: line 8: /root/zabbixdata/filesystem_2020_01_02.log: Permission denied
./get-data.sh: line 9: /root/zabbixdata/cpu_2020_01_02.log: Permission denied
Разрешения скриптов python:
-rwxrwxr-x 1 myuser myuser 1629 Jan 2 12:01 cpu.py
-rwxrwxr-x 1 myuser myuser 1680 Jan 2 11:06 filesystem.py
разрешение сценария bash:
-rwxrwxr-x 1 myuser myuser 326 Jan 2 11:51 get-data.sh
разрешение целевого каталога
drwxrwxr-x 2 myuser myuser 6 Jan 2 11:43 zabbixdata
сохранение каталога скриптов
drwxrwxr-x 2 myuser myuser 93 Jan 2 12:14 scripts
Кажется, у меня есть все разрешения, но я все же могу создать этот файл с помощью сценариев оболочки
Любые идеи?
Я предполагаю, что разрешение вашего корневого каталога - 0550 (по умолчанию на сервере Centos).
# stat /root/
File: /root/
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd01h/64769d Inode: 10747905 Links: 23
Access: (0550/dr-xr-x---) Uid: ( 0/ root) Gid: ( 0/ root)
Если вы выполните сценарий "get-data.sh" с пользователем myuser, стандартное перенаправление вывода выполняется вашей оболочкой, у которой нет разрешения на доступ к / root. Перенаправление вывода не выполняется sudo.
В разделе «Другое» разрешения / root отсутствует флаг «x», который позволяет получить доступ к подкаталогам / root / zabbixdata /, но, возможно, вы не хотите добавлять его по соображениям безопасности. В [1] вы можете найти пример использования перенаправления с sudo.