efaedfde92
devfs(8) rules in rc(8). It is most useful for applying rules to devfs(5) mount points in /dev or inside jails. The following line of script is sufficient to mount a relatively useful+secure devfs(5) in a jail: devfs_mount_jail /some/jail/dev Some new shell routines available to scripts that source rc.subr(5): o devfs_link - Makes it a little easier to create symlinks o devfs_init_rulesets - Create devfs(8) rulesets from devfs.rules o devfs_set_ruleset - Set a ruleset to a devfs(5) mount o devfs_apply_ruleset - Apply a ruleset to a devfs(5) mount o devfs_domount - Mount devfs(5) and apply some ruleset o devfs_mount_jail - Mount devfs(5) and apply a ruleset appropriate to jails. Additional rulesets can be specified in /etc/devfs.rules. If the devfs_system_ruleset variable is defined in rc.conf and it contains the name of a ruleset defined in /etc/defaults/devfs.rules or user supplied rulesets in /etc/devfs.rules then that ruleset will be applied to /dev at startup by the /etc/rc.d/devfs script. It can also be applied post-startup: /etc/rc.d/devfs start This is a more flexible mechanism than the previous method of using /etc/devfs.conf. However, that method is still available. Note: since devfs(8) doesn't provide any way for creating symlinks as part of a ruleset, anyone wishing to create symlinks in a devfs(5) as part of the bootup sequence will still have to rely on /etc/devfs.conf.
52 lines
843 B
Bash
52 lines
843 B
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: devfs
|
|
# REQUIRE: LOGIN
|
|
# BEFORE: securelevel
|
|
# KEYWORD: FreeBSD
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="devfs"
|
|
start_cmd='devfs_start'
|
|
stop_cmd=':'
|
|
|
|
devfs_start()
|
|
{
|
|
if [ -n "$devfs_system_ruleset" ]; then
|
|
devfs_init_rulesets
|
|
devfs_set_ruleset $devfs_system_ruleset /dev
|
|
devfs_apply_ruleset $devfs_system_ruleset /dev
|
|
fi
|
|
read_devfs_conf
|
|
}
|
|
|
|
read_devfs_conf()
|
|
{
|
|
if [ -r /etc/devfs.conf ]; then
|
|
cd /dev
|
|
while read action device parameter; do
|
|
case "${action}" in
|
|
l*) if [ -c ${device} -a ! -e ${parameter} ]; then
|
|
ln -fs ${device} ${parameter}
|
|
fi
|
|
;;
|
|
o*) if [ -c ${device} ]; then
|
|
chown ${parameter} ${device}
|
|
fi
|
|
;;
|
|
p*) if [ -c ${device} ]; then
|
|
chmod ${parameter} ${device}
|
|
fi
|
|
;;
|
|
esac
|
|
done < /etc/devfs.conf
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|