Q: Will udev support symlinks?
A: Yes, It now does. Multiple symlinks per device node too.
-Q: How will udev support changes to device permissions?
-A: On shutdown, udev will save the state of existing device permissions to
- its database, and then used the on the next boot time.
-
Q: How will udev handle the /dev filesystem?
A: /dev can be a ramfs, or a backing filesystem. udev does not care what
kind of filesystem it runs on.
@echo \#define UDEV_CONFIG_DIR \"$(configdir)\" >> $@
@echo \#define UDEV_CONFIG_FILE \"$(configdir)/udev.conf\" >> $@
@echo \#define UDEV_RULES_FILE \"$(configdir)/rules.d\" >> $@
- @echo \#define UDEV_PERMISSION_FILE \"$(configdir)/permissions.d\" >> $@
@echo \#define UDEV_LOG_DEFAULT \"yes\" >> $@
@echo \#define UDEV_BIN \"$(DESTDIR)$(sbindir)/udev\" >> $@
@echo \#define UDEVD_BIN \"$(DESTDIR)$(sbindir)/udevd\" >> $@
install-config:
$(INSTALL) -d $(DESTDIR)$(configdir)/rules.d
- $(INSTALL) -d $(DESTDIR)$(configdir)/permissions.d
@if [ ! -r $(DESTDIR)$(configdir)/udev.conf ]; then \
echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.conf $(DESTDIR)$(configdir); \
$(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.conf $(DESTDIR)$(configdir); \
echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.rules $(DESTDIR)$(configdir)/rules.d/50-udev.rules; \
$(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.rules $(DESTDIR)$(configdir)/rules.d/50-udev.rules; \
fi
- @if [ ! -r $(DESTDIR)$(configdir)/permissions.d/50-udev.permissions ]; then \
- echo $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.permissions $(DESTDIR)$(configdir)/permissions.d/50-udev.permissions; \
- $(INSTALL_DATA) $(LOCAL_CFG_DIR)/udev.permissions $(DESTDIR)$(configdir)/permissions.d/50-udev.permissions; \
- fi
install-dev.d:
$(INSTALL) -d $(DESTDIR)$(dev_ddir)/default
uninstall: uninstall-man uninstall-dev.d
- rm $(hotplugdir)/10-udev.hotplug
- rm $(configdir)/rules.d/50-udev.rules
- - rm $(configdir)/permissions.d/50-udev.permissions
- rm $(configdir)/udev.conf
- rmdir $(configdir)/rules.d
- - rmdir $(configdir)/permissions.d
- rmdir $(configdir)
- rm $(sbindir)/$(ROOT)
- rm $(sbindir)/$(DAEMON)
empty blue screen. What's wrong?
A. You have some wrong permissions. I'm guessing you can probably log in as root
- but not as your normal user. Basically you need to edit the
- /etc/udev/udev.permissions file to set the correct permissions to the nodes
- in /dev. I added the following:
-
- null:root:users:0666
- urandom:root:users:0644
-
- setting the correct permissions to null and urandom allowed me to login
- as myself and not at root.
+ but not as your normal user. Basically you need to set the right
+ permissions with a rule. Setting the correct permissions to null and urandom
+ allowed me to login as myself and not at root.
While you are there you might want to set the permissions to ptmx as well
- or you may have trouble getting a bash prompt in an xterm. i.e.
- ptmx:root:users:0666 Also refer to the next question.
+ or you may have trouble getting a bash prompt in an xterm. Also refer to the
+ next question.
Q. I'm having trouble getting a bash prompt from my xterm. i.e. I bring up a
terminal and all I have is a blank screen with a blinking cursor.
# udev_rules - The name and location of the udev rules file
udev_rules="@configdir@/rules.d"
-# udev_permissions - The name and location of the udev permission file
-udev_permissions="@configdir@/permissions.d"
-
# default_mode - set the default mode for all nodes that have no
-# explicit match in the permissions file
+# permissions specified
default_mode="0600"
# default_owner - set the default owner for all nodes that have no
-# explicit match in the permissions file
+ # permissions specified
default_owner="root"
# default_group - set the default group for all nodes that have no
-# explicit match in the permissions file
+ # permissions specified
default_group="root"
# udev_log - set to "yes" if you want logging, else "no"
static struct sysfs_attribute *find_sysfs_attribute(struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device, char *attr);
-LIST_HEAD(config_device_list);
-LIST_HEAD(perm_device_list);
-
-
/* compare string with pattern (supports * ? [0-9] [!A-Z]) */
static int strcmp_pattern(const char *p, const char *s)
{
return 1;
}
-static struct perm_device *find_perm_entry(const char *name)
-{
- struct perm_device *perm;
-
- list_for_each_entry(perm, &perm_device_list, node) {
- if (strcmp_pattern(perm->name, name))
- continue;
- return perm;
- }
- return NULL;
-}
-
/* extract possible {attr} and move str behind it */
static char *get_format_attribute(char **str)
{
struct sysfs_class_device *class_dev_parent;
struct sysfs_device *sysfs_device = NULL;
struct config_device *dev;
- struct perm_device *perm;
char *pos;
udev->mode = 0;
goto exit;
perms:
- /* apply permissions from permissions file to empty fields */
- perm = find_perm_entry(udev->name);
- if (perm != NULL) {
- if (udev->mode == 0000)
- udev->mode = perm->mode;
- if (udev->owner[0] == '\0')
- strfieldcpy(udev->owner, perm->owner);
- if (udev->group[0] == '\0')
- strfieldcpy(udev->group, perm->group);
- }
-
- /* apply permissions from config to empty fields */
+ /* apply default permissions to empty fields */
if (udev->mode == 0000)
udev->mode = default_mode;
if (udev->owner[0] == '\0')
exit:
return 0;
}
-
-int namedev_init(void)
-{
- int retval;
-
- retval = namedev_init_rules();
- if (retval)
- return retval;
-
- retval = namedev_init_permissions();
- if (retval)
- return retval;
-
- dump_config_dev_list();
- dump_perm_dev_list();
- return retval;
-}
#define MAX_SYSFS_PAIRS 5
#define RULEFILE_SUFFIX ".rules"
-#define PERMFILE_SUFFIX ".permissions"
struct sysfs_pair {
char file[FILE_SIZE];
int config_line;
};
-struct perm_device {
- struct list_head node;
-
- char name[NAME_SIZE];
- char owner[USER_SIZE];
- char group[USER_SIZE];
- unsigned int mode;
-};
-
extern struct list_head config_device_list;
-extern struct list_head perm_device_list;
extern int namedev_init(void);
extern int namedev_name_device(struct udevice *udev, struct sysfs_class_device *class_dev);
-extern int namedev_init_permissions(void);
-extern int namedev_init_rules(void);
extern void dump_config_dev(struct config_device *dev);
extern void dump_config_dev_list(void);
-extern void dump_perm_dev(struct perm_device *dev);
-extern void dump_perm_dev_list(void);
#endif
#include "logging.h"
#include "namedev.h"
+LIST_HEAD(config_device_list);
static int add_config_dev(struct config_device *new_dev)
{
dump_config_dev(dev);
}
-static int add_perm_dev(struct perm_device *new_dev)
-{
- struct perm_device *dev;
- struct perm_device *tmp_dev;
-
- /* if we already have that entry, just update the values */
- list_for_each_entry(dev, &perm_device_list, node) {
- if (strcmp(new_dev->name, dev->name) != 0)
- continue;
-
- /* don't overwrite values from earlier entries */
- if (dev->mode == 0000)
- dev->mode = new_dev->mode;
- if (dev->owner[0] == '\0')
- strfieldcpy(dev->owner, new_dev->owner);
- if (dev->owner[0] == '\0')
- strfieldcpy(dev->group, new_dev->group);
-
- return 0;
- }
-
- /* not found, add new structure to the perm list */
- tmp_dev = malloc(sizeof(*tmp_dev));
- if (!tmp_dev)
- return -ENOMEM;
-
- memcpy(tmp_dev, new_dev, sizeof(*tmp_dev));
- list_add_tail(&tmp_dev->node, &perm_device_list);
- /* dump_perm_dev(tmp_dev); */
-
- return 0;
-}
-
-void dump_perm_dev(struct perm_device *dev)
-{
- dbg_parse("name='%s', owner='%s', group='%s', mode=%#o",
- dev->name, dev->owner, dev->group, dev->mode);
-}
-
-void dump_perm_dev_list(void)
-{
- struct perm_device *dev;
-
- list_for_each_entry(dev, &perm_device_list, node)
- dump_perm_dev(dev);
-}
-
/* extract possible KEY{attr} */
static char *get_key_attribute(char *str)
{
return NULL;
}
-static int namedev_parse_rules(const char *filename, void *data)
+static int namedev_parse(const char *filename, void *data)
{
char line[LINE_SIZE];
char *bufline;
return retval;
}
-static int namedev_parse_permissions(const char *filename, void *data)
+int namedev_init(void)
{
- char line[LINE_SIZE];
- char *bufline;
- char *temp;
- char *temp2;
- char *buf;
- size_t bufsize;
- size_t cur;
- size_t count;
- int retval = 0;
- struct perm_device dev;
- int lineno;
+ struct stat stats;
+ int retval;
- if (file_map(filename, &buf, &bufsize) == 0) {
- dbg("reading '%s' as permissions file", filename);
- } else {
- dbg("can't open '%s' as permissions file", filename);
+ if (stat(udev_rules_filename, &stats) != 0)
return -1;
- }
-
- /* loop through the whole file */
- cur = 0;
- lineno = 0;
- while (cur < bufsize) {
- count = buf_get_line(buf, bufsize, cur);
- bufline = &buf[cur];
- cur += count+1;
- lineno++;
-
- if (count >= LINE_SIZE) {
- info("line too long, rule skipped %s, line %d",
- filename, lineno);
- continue;
- }
-
- /* eat the whitespace */
- while ((count > 0) && isspace(bufline[0])) {
- bufline++;
- count--;
- }
- if (count == 0)
- continue;
-
- /* see if this is a comment */
- if (bufline[0] == COMMENT_CHARACTER)
- continue;
-
- strncpy(line, bufline, count);
- line[count] = '\0';
- dbg_parse("read '%s'", line);
-
- /* parse the line */
- memset(&dev, 0x00, sizeof(struct perm_device));
- temp = line;
-
- temp2 = strsep(&temp, ":");
- if (!temp2) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- strfieldcpy(dev.name, temp2);
-
- temp2 = strsep(&temp, ":");
- if (!temp2) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- strfieldcpy(dev.owner, temp2);
- temp2 = strsep(&temp, ":");
- if (!temp2) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- strfieldcpy(dev.group, temp2);
-
- if (!temp) {
- dbg("cannot parse line '%s'", line);
- continue;
- }
- dev.mode = strtol(temp, NULL, 8);
-
- dbg_parse("name='%s', owner='%s', group='%s', mode=%#o",
- dev.name, dev.owner, dev.group, dev.mode);
-
- retval = add_perm_dev(&dev);
- if (retval) {
- dbg("add_perm_dev returned with error %d", retval);
- goto exit;
- }
- }
-
-exit:
- file_unmap(buf, bufsize);
- return retval;
-}
-
-int namedev_init_rules(void)
-{
- struct stat stats;
-
- stat(udev_rules_filename, &stats);
if ((stats.st_mode & S_IFMT) != S_IFDIR)
- return namedev_parse_rules(udev_rules_filename, NULL);
+ retval = namedev_parse(udev_rules_filename, NULL);
else
- return call_foreach_file(namedev_parse_rules, udev_rules_filename,
- RULEFILE_SUFFIX, NULL);
-}
+ retval = call_foreach_file(namedev_parse, udev_rules_filename, RULEFILE_SUFFIX, NULL);
-int namedev_init_permissions(void)
-{
- struct stat stats;
-
- stat(udev_permissions_filename, &stats);
- if ((stats.st_mode & S_IFMT) != S_IFDIR)
- return namedev_parse_permissions(udev_permissions_filename, NULL);
- else
- return call_foreach_file(namedev_parse_permissions, udev_permissions_filename,
- PERMFILE_SUFFIX, NULL);
+ return retval;
}
udev_root="$PWD/udev/"
udev_db="$PWD/udev/.udevdb"
udev_rules="$PWD/$RULES"
-udev_permissions="$PWD/udev.permissions"
EOF
mkdir udev
udev_root="$PWD/udev/"
udev_db="$PWD/udev/.udevdb"
udev_rules="$PWD/$RULES"
-udev_permissions="$PWD/udev.permissions"
EOF
mkdir udev
udev_root="$PWD/udev/"
udev_db="$PWD/udev/.udevdb"
udev_rules="$PWD/$RULES"
-udev_permissions="$PWD/udev.permissions"
EOF
mkdir udev
my $udev_bin = "../udev";
my $udev_root = "udev-root/"; # !!! directory will be removed !!!
my $udev_db = ".udevdb";
-my $perm = "udev.permissions";
my $main_conf = "udev-test.conf";
my $conf_tmp = "udev-test.rules";
EOF
},
{
- desc => "permissions test",
- subsys => "block",
- devpath => "/block/sda",
- exp_name => "node",
- exp_perms => "5000::0444",
- conf => <<EOF
-BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444"
-EOF
- },
- {
- desc => "permissions ttyUSB0:root:uucp:0660",
- subsys => "tty",
- devpath => "/class/tty/ttyUSB0",
- exp_name => "ttyUSB0",
- exp_perms => "0:14:0660",
- conf => <<EOF
-KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n"
-EOF
- },
- {
- desc => "permissions tty0::root:0444",
- subsys => "tty",
- devpath => "/class/tty/tty0",
- exp_name => "tty0",
- exp_perms => "0:0:0444",
- conf => <<EOF
-KERNEL="tty0", NAME="tty0"
-EOF
- },
- {
- desc => "permissions tty1:root::0555",
- subsys => "tty",
- devpath => "/class/tty/tty1",
- exp_name => "tty1",
- exp_perms => "0:0:0555",
- conf => <<EOF
-KERNEL="tty1", NAME="tty1"
-EOF
- },
- {
- desc => "permissions tty2:::0777",
- subsys => "tty",
- devpath => "/class/tty/tty2",
- exp_name => "tty2",
- exp_perms => "0:0:0777",
- conf => <<EOF
-KERNEL="tty2", NAME="tty2"
-EOF
- },
- {
- desc => "permissions tty3::: (default mode applied)",
- subsys => "tty",
- devpath => "/class/tty/tty3",
- exp_name => "tty3",
- exp_perms => "0:0:600",
- conf => <<EOF
-KERNEL="tty3", NAME="tty3"
-EOF
- },
- {
- desc => "permissions i2c-300:root:sys:0744",
- subsys => "i2c-dev",
- devpath => "/class/i2c-dev/i2c-300",
- exp_name => "i2c-300",
- exp_perms => "0:3:0744",
- conf => <<EOF
-KERNEL="i2c-300", NAME="i2c-300"
-EOF
- },
- {
- desc => "permissions i2c-fake1:root:7:0007",
- subsys => "i2c-dev",
- devpath => "/class/i2c-dev/i2c-fake1",
- exp_name => "i2c-fake1",
- exp_perms => "0:7:0007",
- conf => <<EOF
-KERNEL="i2c-fake1", NAME="i2c-fake1"
-EOF
- },
- {
- desc => "permissions ttyS[01]:0:5:0700",
- subsys => "tty",
- devpath => "/class/tty/ttyS1",
- exp_name => "ttyS1",
- exp_perms => "0:5:0700",
- conf => <<EOF
-KERNEL="ttyS1", NAME="ttyS1"
-EOF
- },
- {
- desc => "permissions ttyS[4-9]:tty:5:0060",
- subsys => "tty",
- devpath => "/class/tty/ttyS7",
- exp_name => "ttyS7",
- exp_perms => "0:5:0060",
- conf => <<EOF
-KERNEL="ttyS7", NAME="ttyS7"
-EOF
- },
- {
- desc => "permissions tty4:0:5:0707",
- subsys => "ttyS4",
- devpath => "/class/tty/tty4",
- exp_name => "tty4",
- exp_perms => "0:5:0707",
- conf => <<EOF
-KERNEL="tty4", NAME="tty4"
-EOF
- },
- {
- desc => "permissions tty4?:0:5:0007",
- subsys => "tty",
- devpath => "/class/tty/tty44",
- exp_name => "tty44",
- exp_perms => "0:5:0007",
- conf => <<EOF
-KERNEL="tty44", NAME="tty44"
-EOF
- },
- {
- desc => "permissions tty3[!3]:::0467",
- subsys => "tty",
- devpath => "/class/tty/tty35",
- exp_name => "tty35",
- exp_perms => "0:0:0467",
- conf => <<EOF
-KERNEL="tty35", NAME="tty35"
-EOF
- },
- {
- desc => "permissions tty33:bad:name:0500",
+ desc => "permissions USER=bad GROUP=name",
subsys => "tty",
devpath => "/class/tty/tty33",
exp_name => "tty33",
- exp_perms => "0:0:0500",
- conf => <<EOF
-KERNEL="tty33", NAME="tty33"
-EOF
- },
- {
- desc => "permissions rtc:0:users:0600",
- subsys => "misc",
- devpath => "/class/misc/rtc",
- exp_name => "misc/rtc",
- exp_perms => "0:100:0600",
+ exp_perms => "0:0:0600",
conf => <<EOF
-KERNEL="rtc", NAME="misc/rtc"
+KERNEL="tty33", NAME="tty33", OWNER="bad", GROUP="name"
EOF
},
{
- desc => "permissions misc:0:users:0600",
- subsys => "misc",
- devpath => "/class/misc/psaux",
- exp_name => "misc/psaux",
- exp_perms => "0:100:0600",
- conf => <<EOF
-KERNEL="psaux", NAME="misc/psaux"
-EOF
- },
- {
- desc => "permissions set OWNER=5000",
+ desc => "permissions OWNER=5000",
subsys => "block",
devpath => "/block/sda",
exp_name => "node",
EOF
},
{
- desc => "permissions set GROUP=100",
+ desc => "permissions GROUP=100",
subsys => "block",
devpath => "/block/sda",
exp_name => "node",
EOF
},
{
- desc => "permissions set mode=0777",
+ desc => "permissions MODE=0777",
subsys => "block",
devpath => "/block/sda",
exp_name => "node",
EOF
},
{
- desc => "permissions set OWNER=5000 GROUP=100 MODE=0777",
+ desc => "permissions OWNER=5000 GROUP=100 MODE=0777",
subsys => "block",
devpath => "/block/sda",
exp_name => "node",
EOF
},
{
- desc => "permissions override OWNER to 5000",
+ desc => "permissions OWNER to 5000",
subsys => "tty",
devpath => "/class/tty/ttyUSB0",
exp_name => "ttyUSB0",
- exp_perms => "5000:14:0660",
+ exp_perms => "5000::",
conf => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", OWNER="5000"
EOF
},
{
- desc => "permissions override GROUP to 100",
+ desc => "permissions GROUP to 100",
subsys => "tty",
devpath => "/class/tty/ttyUSB0",
exp_name => "ttyUSB0",
- exp_perms => ":100:0660",
+ exp_perms => ":100:0600",
conf => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", GROUP="100"
EOF
},
{
- desc => "permissions override MODE to 0060",
+ desc => "permissions MODE to 0060",
subsys => "tty",
devpath => "/class/tty/ttyUSB0",
exp_name => "ttyUSB0",
- exp_perms => ":14:0060",
+ exp_perms => "::0060",
conf => <<EOF
KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", MODE="0060"
EOF
},
{
- desc => "permissions override OWNER, GROUP, MODE",
+ desc => "permissions OWNER, GROUP, MODE",
subsys => "tty",
devpath => "/class/tty/ttyUSB0",
exp_name => "ttyUSB0",
print CONF "udev_root=\"$udev_root\"\n";
print CONF "udev_db=\"$udev_db\"\n";
print CONF "udev_rules=\"$conf_tmp\"\n";
-print CONF "udev_permissions=\"$perm\"\n";
+print CONF "default_mode=\"0600\"\n";
+print CONF "default_owner=\"root\"\n";
+print CONF "default_group=\"root\"\n";
close CONF;
my $test_num = 1;
+++ /dev/null
-#name:user:group:mode
-ttyUSB0:root:uucp:0660
-ttyUSB1:root:uucp:0666
-visor:500:500:0666
-dsp1:::0666
-boot_disk?:::0666
-
-#used for permissions tests in udev-test.pl
-tty0::root:0444
-tty1:root::0555
-tty2:::0777
-tty3:::
-rtc:0:6:0770
-misc/*:0:users:0600
-i2c-fake1:root:7:0007
-i2c*:root:sys:0744
-ttyS[01]:0:5:0700
-ttyS[5-9]:root:5:0060
-tty4::tty:0707
-tty4?::tty:0007
-tty3[!3]:::0467
-tty33:bad:name:0500
All rule files are read in lexical order. The default value is
.IR /etc/udev/rules.d/ .
.TP
-.B udev_permissions
-The name of the udev permission file or directory to look for files with the
-suffix
-.IR .permissions .
-All permission files are read in lexical order. The default value is
-.IR /etc/udev/permissions.d/ .
-.TP
.B udev_log
The switch to enable/disable logging of udev information
The default value is
for files with the suffix .rules
udev_rules="/etc/udev/rules.d/"
-# udev_permissions - The name of the udev permission file or directory
- to look for files with the suffix .permissions
-udev_permissions="/etc/udev/udev.permissions"
-
# udev_log - set to "yes" if you want logging, else "no"
udev_log="yes"
distribution provided rules file.
.TP
.B OWNER, GROUP, MODE
-The permissions for this device. Every specified value overwrites the value
-given in the permissions file.
+The permissions for this device. Every specified value overwrites the default
+value specified in the config file.
.P
.RB "The " NAME " ," SYMLINK " and " PROGRAM
fields support simple printf-like string substitutions:
NAME="%k", SYMLINK="cdrom%e"
.fi
.P
-The permissions and ownership of the created device file are read from
-the files located in the
-.I /etc/udev/permissions.d/
-directory, or at the location specified by the
-.I udev_permission
-value in the
-.I /etc/udev/udev.conf
-file.
-.br
-Every line lists a device name followed by owner, group and permission
-mode. All values are separated by colons. The name field may contain a
-pattern to apply the values to a whole class of devices.
-.sp
-.RI "A sample " udev.permissions " file might look like this:"
-.sp
-.nf
-#name:user:group:mode
-input/*:root:root:644
-ttyUSB1:0:8:0660
-video*:root:video:0660
-dsp1:::0666
-.fi
-.P
A number of different fields in the above configuration files support a simple
form of shell style pattern matching. It supports the following pattern characters:
.TP
wait_for_class_device(class_dev, &error);
- /* init rules, permissions */
+ /* init rules */
namedev_init();
/* name, create node, store in db */
extern char sysfs_path[SYSFS_PATH_MAX];
extern char udev_root[PATH_MAX];
extern char udev_db_path[PATH_MAX+NAME_MAX];
-extern char udev_permissions_filename[PATH_MAX+NAME_MAX];
extern char udev_config_filename[PATH_MAX+NAME_MAX];
extern char udev_rules_filename[PATH_MAX+NAME_MAX];
extern mode_t default_mode;
%defattr(-,root,root)
%doc COPYING README TODO ChangeLog HOWTO* docs/*
%doc etc/udev/udev.rules.{examples,gentoo,redhat}
-%doc etc/udev/udev.permissions.{gentoo,redhat}
%attr(755,root,root) /sbin/udev
%attr(755,root,root) /usr/bin/udevinfo
%attr(755,root,root) /sbin/udevsend
%attr(755,root,root) %dir /etc/udev/
%config(noreplace) %attr(0644,root,root) /etc/udev/udev.conf
%attr(755,root,root) %dir /etc/udev/rules.d/
-%attr(755,root,root) %dir /etc/udev/permissions.d/
%config(noreplace) %attr(0644,root,root) /etc/udev/rules.d/50-udev.rules
-%config(noreplace) %attr(0644,root,root) /etc/udev/permissions.d/50-udev.permissions
%attr(-,root,root) /etc/hotplug.d/default/udev.hotplug
%attr(755,root,root) /etc/init.d/udev
%attr(0644,root,root) %{_mandir}/man8/udev*.8*
char sysfs_path[SYSFS_PATH_MAX];
char udev_root[PATH_MAX];
char udev_db_path[PATH_MAX+NAME_MAX];
-char udev_permissions_filename[PATH_MAX+NAME_MAX];
char udev_rules_filename[PATH_MAX+NAME_MAX];
char udev_config_filename[PATH_MAX+NAME_MAX];
mode_t default_mode;
strcpy(udev_db_path, UDEV_DB);
strcpy(udev_config_filename, UDEV_CONFIG_FILE);
strcpy(udev_rules_filename, UDEV_RULES_FILE);
- strcpy(udev_permissions_filename, UDEV_PERMISSION_FILE);
strcpy(default_owner, "root");
strcpy(default_group, "root");
continue;
}
- if (strcasecmp(variable, "udev_permissions") == 0) {
- strfieldcpy(udev_permissions_filename, value);
- no_trailing_slash(udev_permissions_filename);
- continue;
- }
-
if (strcasecmp(variable, "default_mode") == 0) {
default_mode = strtol(value, NULL, 8);
continue;
dbg_parse("udev_config_filename = %s", udev_config_filename);
dbg_parse("udev_db_path = %s", udev_db_path);
dbg_parse("udev_rules_filename = %s", udev_rules_filename);
- dbg_parse("udev_permissions_filename = %s", udev_permissions_filename);
dbg_parse("udev_log = %d", udev_log);
parse_config_file();
dbg("udev_config_filename = %s", udev_config_filename);
dbg("udev_db_path = %s", udev_db_path);
dbg("udev_rules_filename = %s", udev_rules_filename);
- dbg("udev_permissions_filename = %s", udev_permissions_filename);
dbg("udev_log = %d", udev_log);
}