【发布时间】:2014-06-13 19:28:59
【问题描述】:
我正在编写一个在 Mac OSX 下创建目录和复制文件的 bash 脚本。其中一些目录和文件需要放在系统拥有的文件夹中,例如/Library/Audio/Plug-Ins,所以我在sudo下运行脚本。这样的脚本可能看起来像:
复制插件.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 下运行时,所有创建的目录和复制的文件都归 root 所有。
我希望能够在 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
但我希望有一个更通用的解决方案。
据我所知,bash 没有 setuid。
【问题讨论】:
标签: macos bash permissions sudo setuid