Bug 47134 - Требует явного указания shebang при использовании политик скриптов (OSError: [Errno 8] Exec format error)
Summary: Требует явного указания shebang при использовании политик скриптов (OSError: ...
Status: CLOSED NOTABUG
Alias: None
Product: Branch p10
Classification: Unclassified
Component: gpupdate (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: Valery Sinelnikov
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-06 15:35 MSK by Evgeny Shesteperov
Modified: 2023-08-09 09:36 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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-скриптами