Я запускаю программное обеспечение, для которого нужны определенные права для различных подпапок. Поэтому я использую crontab для обновления тех прав постоянно.
На одном сервере я использую perl-сценарий, какие группы все команды и который выполняется один crontab.
запись crontab:
* * * * * root /root/Permissions.sh /dev/null 2&1
Permissions.sh:
#!/usr/bin/perl
system ("chmod -R 755 /pathToMainFolder/softwareFolder");
system ("chown -R root:user /pathToMainFolder/softwareFolder");
system ("chmod -R 775 /pathToMainFolder/softwareFolder/subfolder");
system ("chown -R root:user /pathToMainFolder/softwareFolder/subfolder");
system ("chmod -R 775 /pathToMainFolder/softwareFolder/someFile");
system ("chown -R root:user /pathToMainFolder/softwareFolder/someFile");
system ("chmod 775 /pathToMainFolder/softwareFolder");
Это хорошо работает, но на другом сервере, программное обеспечение расположено в подпапке, имя которой включает пространство
/pathToMainFolder/sub Folder/softwareFolder
Я не знаю, как записать Permissions.sh для включения этого пространства, поскольку с и не выходя из пространства, сценарий, кажется, не работает.
Ни один:
system ("chmod -R 755 /pathToMainFolder/sub Folder/softwareFolder");
ни:
system ("chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder");
кажется, работает.
Я затем пытался просто скопировать 7 команд непосредственно в crontab:
* * * * * root chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder
* * * * * root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/subfolder
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/subfolder
* * * * * root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/someFile
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/someFile
* * * * * root chmod 775 /pathToMainFolder/sub\ Folder/softwareFolder
Это помогло так или иначе как они, где теперь выполняется правильно, но crontab, кажется, не уважает последовательность команд.
Mar 1 10:19:01 local CRON[53069]: (root) CMD (chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/subfolder)
Mar 1 10:19:01 local CRON[53070]: (root) CMD (chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/someFile)
Mar 1 10:19:01 local CRON[53071]: (root) CMD (chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/subfolder)
Mar 1 10:19:01 local CRON[53073]: (root) CMD (chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder)
Mar 1 10:19:01 local CRON[53072]: (root) CMD (chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/someFile)
Mar 1 10:19:01 local CRON[53074]: (root) CMD (chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder)
Mar 1 10:19:01 local CRON[53075]: (root) CMD (chmod 775 /pathToMainFolder/sub\ Folder/softwareFolder)
Поскольку различные команды работают рекурсивно, крайне важно, чтобы они были выполнены в правильном порядке.
Я нашел https://stackoverflow.com/questions/9639434/running-two-commands-sequentially-in-a-cron-job и https://help.ubuntu.com/community/CronHowto, таким образом, я пытался использовать &&
выполниться chown
и chmod
команды последовательно, но так или иначе это не работает вообще.
* * * * * root chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder && root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/subfolder && root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/someFile && root chmod 775 /pathToMainFolder/sub\ Folder/softwareFolder
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder && root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/subfolder && root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/someFile
Я не получаю сообщение об ошибке, но выполнение ls -al
из папок показал, что команды не выполняются правильно.
Есть ли любой способ зафиксировать Permissions.sh, который я думаю, был бы лучший способ получить эту работу снова, или где еще сделал я делаю ошибку.
Примечание: Я мог переместить целое программное обеспечение из sub Папки, но затем я должен буду вручную изменить ссылки на многие рабочие станции, которые были бы болью в ***.
Используя удар и doublequotes.
#/bin/bash
chmod -R 755 "/pathToMainFolder/sub Folder/softwareFolder"
chown -R root:user "/pathToMainFolder/sub Folder/softwareFolder"
chmod -R 775 "/pathToMainFolder/sub Folder/softwareFolder/subfolder"
chown -R root:user "/pathToMainFolder/sub Folder/softwareFolder/subfolder"
chmod -R 775 "/pathToMainFolder/sub Folder/softwareFolder/someFile"
chown -R root:user "/pathToMainFolder/sub Folder/softwareFolder/someFile"
chmod 775 "/pathToMainFolder/sub Folder/softwareFolder"
Сохраняют и выполняют этот сценарий от крона.