blob: 696eca9232c55197defe80359d11d6f61c6b72dc (
plain) (
tree)
|
|
. /etc/sysconfig/devices
#---------------------------------------------------------------------
##
## @param module filename
## Add a file in /etc/modules.d to get some modules autoloaded
##
#---------------------------------------------------------------------
function add_module_autoload()
{
local MODULE_FILENAME=${1##*/}
if [ ! -f $INSTALL_ROOT/etc/modules.d/$MODULE_FILENAME ]; then
mkdir -p $INSTALL_ROOT/etc/modules.d &&
cp $1 $INSTALL_ROOT/etc/modules.d
fi &&
local MOD="$INSTALL_ROOT/etc/modules.conf"
local INC="include /etc/modules.d/$MODULE_FILENAME"
grep -q "$INC" $MOD ||
echo "$INC" >> $MOD
# Avoid that -b option of depmod takes the kernel version as the path for /lib/modules
if [ -z $INSTALL_ROOT ]; then
depmod -a -C $MOD $(get_kernel_version)
else
depmod -a -C $MOD -b $INSTALL_ROOT $(get_kernel_version)
fi
}
#---------------------------------------------------------------------
##
## @param module filename
## Add a file in /etc/modules.d to get some modules autoloaded
##
#---------------------------------------------------------------------
function remove_module_autoload()
{
local MODULE_FILENAME=${1##*/}
local MOD="$INSTALL_ROOT/etc/modules.conf"
local TMP="$INSTALL_ROOT/tmp/modules.conf"
local INC="include /etc/modules.d/$MODULE_FILENAME"
cp $MOD $TMP &&
grep -v "$INC" $TMP > $MOD &&
rm $TMP &&
rm $INSTALL_ROOT/etc/modules.d/$MODULE_FILENAME
# Avoid that -b option of depmod takes the kernel version as the path for /lib/modules
if [ -z $INSTALL_ROOT ]; then
depmod -a -C $MOD $(get_kernel_version)
else
depmod -a -C $MOD -b $INSTALL_ROOT $(get_kernel_version)
fi
}
#---------------------------------------------------------------------
##
## Detects cd recorders and list them on standard output
##
#---------------------------------------------------------------------
function cdr_detect()
{
local CDROM_INFO_FILE=/proc/sys/dev/cdrom/info
local CDR_MATCH_STRING="Can write CD-R:"
local CDROM_DEVICES_MATCH_STRING="drive name:"
local CDROM_DEVICES_STRING=$(grep "${CDROM_DEVICES_MATCH_STRING}" ${CDROM_INFO_FILE} | tr -d ' ' | tr -s '\t')
local CDR_STRING=$(grep "${CDR_MATCH_STRING}" ${CDROM_INFO_FILE} | tr -d ' ' | tr -s '\t')
local CD_RECORDER
if [ -n "${CDR_STRING}" ]; then
local NUM_CDROM_DEVICES=$(echo "${CDR_STRING}" | wc -w )
for i in $(seq 2 $NUM_CDROM_DEVICES); do
if [ $(echo "${CDR_STRING}" | cut -f$i) = 1 ]; then
CD_RECORDER=$(echo "${CDROM_DEVICES_STRING}" | cut -f$i)
echo "$CD_RECORDER"
fi
done
else
echo "Unable to detect CD-R recorder"
return 1
fi
return 0
}
#---------------------------------------------------------------------
## @param group name allowed to burn
##
## Check permission for cdrom recorders
##
#---------------------------------------------------------------------
function check_cdr_perms()
{
local CDR_DEVICES=$("cdr_detect")
if [ $? == 0 ]; then
case ${DEVICES} in
static) for DEV in $CDR_DEVICES; do
message "Changing permissions for cdrom recorder device /dev/${DEV}"
if [ $1 == "burning" ]; then
chmod 0660 "/dev/${DEV}"
chown root:burning "/dev/${DEV}"
else
chmod 0600 "/dev/${DEV}"
chown root:root "/dev/${DEV}"
fi
done
;;
udev) ;; # Udev default rules handle this now
esac
else
message "No CD recorder device found, please adjust its permissions manually"
fi
}
#---------------------------------------------------------------------
## @param permissions type, must be {burning_group_users_with_suid_bit,burning_group_users,root_only}
## @param program name
## Check permission for cdrom recorders
##
#---------------------------------------------------------------------
function apply_cdr_perms()
{
case $1 in
burning_group_users_with_suid_bit) create_group burning
chown root:burning $2
chmod 4710 $2
check_cdr_perms burning
message "\nDon't forget to add the users allowed to burn in the burning group\n";;
burning_group_users) create_group burning
chown root:burning $2
chmod 0750 $2
check_cdr_perms burning
message "\nDon't forget to add the users allowed to burn in the burning group\n";;
root_only) chown root:root $2
chmod 0700 $2
check_cdr_perms root;;
esac
}
|