blob: 696eca9232c55197defe80359d11d6f61c6b72dc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
. /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
}
|