Bug 47134

Summary: Требует явного указания shebang при использовании политик скриптов (OSError: [Errno 8] Exec format error)
Product: Branch p10 Reporter: Evgeny Shesteperov <alimektor>
Component: gpupdateAssignee: Valery Sinelnikov <greh>
Status: CLOSED NOTABUG QA Contact: qa-p10 <qa-p10>
Severity: normal    
Priority: P5 CC: amakeenk
Version: не указана   
Hardware: x86_64   
OS: Linux   

Description Evgeny Shesteperov 2023-08-06 15:35:42 MSK
Версия

-   gpupdate-0.9.12.6-alt1

Стенд

-   ALT Server в качестве Samba DC
-   ALT Workstation в качестве клиента

Шаги воспроизведения

1.  Добавить logon-скрипт для Default Domain Policy (например, через RSAT): Перейти в Компьютер
    → Настройки системы → Скрипты → Запуск, указать как startup.sh.
2.  Создать скрипт:

    uuid_policy="$(samba-tool gpo listall | grep -B1 'Default Domain Policy' | head -1 | cut -f '2' -d ':' | xargs)" && \
    cd /var/lib/samba/sysvol/samba.testdomain/Policies/${uuid_policy} && \
    echo 'echo [STARTUP] $(date): ${@} >> /var/log/date.log' >> MACHINE/Scripts/Startup/startup.sh

3.  Применить политику и перезагрузиться:

    # gpupdate &> gpupdate.log && gpoa --loglevel 0 &> gpoa.log && reboot

4.  Проверить выполнение скрипта:

    # cat /var/log/date.log

Ожидаемый результат: скрипт выполнен при загрузке системы.

Фактический результат: скрипт не выполнен при загрузке системы.

В логах выполнения обновления политики характерное
OSError: [Errno 8] Exec format error

Добавляю в startup.sh shebang и всё начинает работать как надо.

-   https://stackoverflow.com/questions/27606653/oserror-errno-8-exec-format-error
Comment 1 Valery Sinelnikov 2023-08-07 15:54:17 MSK
Символ shebang (#!) в начале скрипта указывает операционной системе, какой интерпретатор следует использовать для выполнения скрипта.
Добавление символа shebang в начало скрипта - это стандартная практика, которая делает скрипты переносимыми и гарантирует их корректное выполнение на различных системах. Это не ограничивает вас в использовании только скриптов на языке оболочки (например, bash), вы также можете указать путь к интерпретатору для других языков программирования.
Comment 2 Evgeny Shesteperov 2023-08-09 09:36:26 MSK
Добавил примечание в Wiki: https://www.altlinux.org/Групповые_политики/Управление_logon-скриптами