Я пишу скрипт bash, который создает каталоги и копирует файлы в Mac OSX. Некоторые из этих каталогов и файлов должны быть помещены в папки, принадлежащие системе, такие как /Library/Audio/Plug-Ins, поэтому я запускаю сценарий под sudo. Такой сценарий может выглядеть следующим образом:Пользователь по умолчанию для файлов и каталогов, созданных в bash под sudo
copy-plugins.sh:
#!/usr/bin/env bash
mkdir -p /Library/Audio/Plug-Ins/My-Plugins
cp plugin-A.dylib /Library/Audio/Plug-Ins/My-Plugins
cp plugin-B.dylib /Library/Audio/Plug-Ins/My-Plugins
и называется:
$ sudo ./copy-plugins.sh
Однако при работе под Суда, все созданные каталоги и скопированные файлы принадлежат корню.
Я хотел бы иметь возможность запускать скрипт под sudo и иметь файлы, принадлежащие моему пользователю. я мог бы назвать CHOWN после каждого файла/каталога создается или скопирована
copy-plugins-cumbersome.sh:
#!/usr/bin/env bash
mkdir -p /Library/Audio/Plug-Ins/My-Plugins
chown 501:501 /Library/Audio/Plug-Ins/My-Plugins
cp plugin-A.dylib /Library/Audio/Plug-Ins/My-Plugins
chown 501:501 /Library/Audio/Plug-Ins/My-Plugins/plugin-A.dylib
cp plugin-B.dylib /Library/Audio/Plug-Ins/My-Plugins
chown 501:501 /Library/Audio/Plug-Ins/My-Plugins/plugin-B.dylib
, но я надеюсь на более общее решение.
Насколько я могу судить, нет никакого setuid для bash.
Использование ср -p создает файлы с _unknown пользователя и группы: '-rwxr-хт-х 1 _unknown _unknown 0 28 апреля 12:43 плагин-A.dylib' ' -rwxr-хт-х 1 _unknown _unknown 0 28 апр 12:43 plugin-B.dylib' странный .... –
Кажется, что нет способа установить uid из сценария bash, поэтому я принимаю этот ответ, хотя он лишь частично отвечает на вопрос. Благодаря! –
привет - в случае, если вы можете установить uid из sudo: 'sudo -u 501 your-script.sh' – suspectus