You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.2 KiB
75 lines
2.2 KiB
{% calculate comment='#', pkg('sys-apps/calculate-server'), unbound %}
|
|
# vim: set syntax=sh
|
|
#
|
|
# Copyright 2014 Calculate Ltd. http://www.calculate-linux.org
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
# added for calculate server 2.2
|
|
# FUNC: change_permissions
|
|
# DESC: change permissions for all files and directories into specified
|
|
change_permissions() {
|
|
local directory=$1
|
|
[[ -d $1 ]] || return
|
|
|
|
local out="$(getfacl $directory 2>/dev/null)"
|
|
if ! (grep -q default:user:900:rwx <<<$out && grep -q ^user:900:rwx <<<$out)
|
|
then
|
|
setfacl -R -m d:u:900:rwx,u:900:rwx $directory
|
|
fi
|
|
|
|
addwrite ${directory}
|
|
# get owner from parent directory
|
|
local diruid=$(stat -c"%u" ${directory})
|
|
local dirgid=$(stat -c"%g" ${directory})
|
|
local dirowner="${diruid}:${dirgid}"
|
|
# get permissions from parent directory
|
|
local dirmode=0$(stat -c%a ${directory})
|
|
|
|
# turnoff execute for all (permission for files in parent directory)
|
|
if type bc &>/dev/null;
|
|
then
|
|
local filemode=0$(echo "obase=8;$(( $dirmode & 0666 ))" | bc)
|
|
elif type printf &>/dev/null;
|
|
then
|
|
local filemode=$(printf "0%o" $(( $dirmode & 0666 )) )
|
|
else
|
|
local filemode=
|
|
fi
|
|
# set for all files and directories dirowner
|
|
find ${directory} \! -uid ${diruid} -o \! -gid ${dirgid} -exec chown ${dirowner} {} \;
|
|
# set permissions for all directories in parent directory
|
|
find ${directory} \! -perm ${dirmode} -type d -exec chmod ${dirmode} {} \;
|
|
if [[ -n $filemode ]]
|
|
then
|
|
# set permissions for all files in parent directory
|
|
find ${directory} \! -perm ${filemode} -type f -exec chmod ${filemode} {} \;
|
|
fi
|
|
}
|
|
|
|
# system has "remote" share
|
|
if grep "\[remote\]" /etc/samba/smb.conf &>/dev/null
|
|
then
|
|
pre_pkg_preinst() {
|
|
einfo "Performing permissions change for packages directory"
|
|
change_permissions ${PKGDIR}
|
|
}
|
|
|
|
post_src_unpack() {
|
|
einfo "Performing permissions change for distdir directory"
|
|
change_permissions ${PORTAGE_ACTUAL_DISTDIR}
|
|
}
|
|
else
|
|
post_src_unpack() {
|
|
:
|
|
}
|
|
|
|
pre_pkg_preinst() {
|
|
:
|
|
}
|
|
fi
|