[[OSX ServerのACL]]
指定したディレクトリに対してユーザ権限を与えるシェルスクリプトを作成しました。
#!/bin/sh
# user or group
TARGET=権限を持つ事になるユーザまたはグループ名
TARGET_DIR=影響を与えたいディレクトリ名
find ${TARGET_DIR} | while read FILENAME
do
if [ -d "${FILENAME}" ]
then
chmod +a "${TARGET} allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" "${FILENAME}"
elif [ -f "${FILENAME}" ]
then
chmod +a "${TARGET} allow write,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" "${FILENAME}"
fi
done
ACLの設定を解除する場合以下のスクリプトが役に立ちます。
#!/bin/sh
# user or group
TARGET_DIR=.
find ${TARGET_DIR} | while read FILENAME
do
chmod -N "${FILENAME}"
done
さらに応用例です。
ひとつだけのファイルかディレクトリに影響を与えたい場合以下のようにします。
#!/bin/sh
# user or group
TARGET=権限を与えるユーザまたはグループ名
FILENAME=対象ファイル/ディレクトリ名
if [ -d "${FILENAME}" ]
then
chmod +a "${TARGET} allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" "${FILENAME}"
elif [ -f "${FILENAME}" ]
then
chmod +a "${TARGET} allow write,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" "${FILENAME}"
fi
逆に複数のディレクトリやファイルに影響を与えたい場合以下のようにすると便利です。
#!/bin/sh
# user or group
TARGET=権限を与えるユーザまたはグループ名
for TARGET_DIR in 権限を追加したいディレクトリやファイルをスペースで区切って列挙
do
find ${TARGET_DIR} | while read FILENAME
do
if [ -d "${FILENAME}" ]
then
chmod +a "${TARGET} allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" "${FILENAME}"
elif [ -f "${FILENAME}" ]
then
chmod +a "${TARGET} allow write,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" "${FILENAME}"
fi
done
done