2015-12-22 1 views
1

У меня есть следующие папки на моем сервере, со следующими файлами:Суд в ехесе функции

error-2015-12-20.log 
error-2015-12-21.log 
error-2015-12-22.log 

И я написал скрипт, который упаковывает в .tar.gz с именами раньше, чем текущая дата, двигается упакованный файл в другой раздел и удаляет входные файлы. Это делается через exec().

Проблема в том, что все эти операции требуют от меня использования sudo и предоставления пароля.

Как я могу справиться с этим?

+1

Вы можете запустить файл с sudo, и в этом случае он не нарушит ваш скрипт, потому что скрипт будет запущен из sudo. – Yas

ответ

0

Вы знакомы с правами доступа к Linux? Если вы хотите выполнить скрипт, вы должны иметь право на это (находясь в группе/владельце с установленным битом набора), и если вы хотите читать файлы, вы также должны иметь право читать эти файлы. В противном случае вы должны выполнить файл как sudo, потому что root может получить доступ ко всем файлам.

Узнайте об этом здесь: https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions

0

Как уже говорилось выше, это проблема разрешения, чтобы решить эту проблему позволяют инструктировать sudo, чтобы ваш скрипт запустить без запроса пароля:

  1. Создать пользовательский файл sudoers:

    sudo visudo -f /etc/sudoers.d/90_your_user 
    
  2. Копирование следующее содержание в недавно созданном файле (индивидуальной настройкой в ​​соответствующем разделе):

    Cmnd_Alias PHP_SCRIPT = /path/to/my/script.php param1 param2 
    Cmnd_Alias ROOT_PROGS = PHP_SCRIPT 
    
    # Programs allowed to run without password prompt of your_user 
    your_user HOST=(root) NOPASSWD:ROOT_PROGS 
    

Вы можете выполнить свою программу с sudo /path/to/my/myscript.php без проблем с разрешениями и без Sudo запросит ваш пароль.

Смежные вопросы