Разрешение на выполнение всем файлам, созданным в определенном каталоге по умолчанию [дубликат]

На этот вопрос уже есть ответ здесь:

Я хотел бы узнать, есть ли какой-нибудь способ предоставить разрешение на выполнение всем файлам, созданным в определенной директории по умолчанию.

Т.е.,

Если я создаю файл, скажем foo.sh в каталоге fooscripts, он должен иметь разрешение на выполнение по умолчанию. Но если я создам тот же файл вне fooscripts, он должен иметь обычное разрешение.

3
задан 5 June 2016 в 02:40

2 ответа

Используя inotifywait

Как упомянуто, можно использовать inotify-tools (inotifywait) смотреть определенный каталог за изменениями, например, сценарием ниже, и впоследствии установить новый исполняемый файл файлов рекурсивно.

Сценарий использует inotifywait - команда, которая инициирована определенными событиями, установленными -e - опция. К счастью команда может использоваться в сочетании с несколькими типами событий.
Так как Вы хотите, чтобы файлы в каталоге были исполняемым файлом в сценарии, два события установлены:

-e move

который заметит файлы, перемещенные в каталог, и

-e create

который заметит новые файлы, созданные в каталоге.

Кроме того, опции:

-m -r 

должны сделать команду выполненной, неограниченно долго ("контролируют") и рекурсивно в каталоге, в то время как:

--format '%w%f'

производит каталог (путь к файлу, %w) плюс имя файла (%f) это вызвало событие.


Больше на опциях inotifywait может быть найден здесь, или, как всегда, в man inotifywait

Сценарий

#!/bin/sh
# you might want to change the directory below into the targeted directory
DIR="/home/jacob/Bureaublad/test123"
inotifywait -m -r -e move -e create --format '%w%f' "$DIR" | while read f

do
  chmod +x "$f"
done

Как использовать

  1. Необходимо будет, вероятно, установить inotify-tools во-первых:

    sudo apt-get install inotify-tools
    
  2. Скопируйте сценарий в пустой файл, сохраните его как set_executable.sh

  3. В заголовке сценария, установленного путь к целенаправленной папке:

    # change the directory below into the targeted directory
    DIR="/home/jacob/Bureaublad/test123"
    

    ... и тестовый прогон сценарий от терминала.

  4. Если все хорошо работает, добавьте сценарий для Запущения Приложений: Тире> Приложения Запуска> Добавляет.

Примечание:

Отметьте это notifywait действия на изменениях (события). Это подразумевает, что файлы, которые были добавлены или созданы перед сценарием, работали, не будет произведен. Ни будет это пере - установило исполняемый файл файлов вручную и при преднамеренной установке их, чтобы не быть исполняемым файлом, в то время как они в целенаправленном каталоге.

4
ответ дан 5 June 2016 в 02:40

Нет. Вы могли использовать inotify для наблюдения каталога и chmod новые файлы.

Вот то, как узнать приблизительно inotify:

man -k inotify
for i in $( man -k inotify | awk '{ print $1 }' ) ; do 
    man $i 
    read -p "Print?: " ans 
    if [[ "x$ans" = "xy" ]] ; then 
        man -t $i | lpr -J $i 
    fi 
done
# sr is from surfraw, Shell Users Revoultionary Front Rage Against the Web
sr google inotify
1
ответ дан 5 June 2016 в 02:40

Другие вопросы по тегам:

Похожие вопросы: