. /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 }