mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
58 lines
1.8 KiB
Diff
58 lines
1.8 KiB
Diff
|
From c112873b5bc9ebbae39c32f502bc6211f33546cc Mon Sep 17 00:00:00 2001
|
||
|
From: Kay Sievers <kay.sievers@vrfy.org>
|
||
|
Date: Mon, 30 May 2011 02:12:02 +0200
|
||
|
Subject: [PATCH 1/2] rules: static_node - use 0660 if group is given to get
|
||
|
the cigar
|
||
|
|
||
|
>> On Tue, May 24, 2011 at 15:33, Tom Gundersen <teg@jklm.no> wrote:
|
||
|
>
|
||
|
> Close, but no cigar. Looks like the static nodes are not assigned
|
||
|
> permissions 0660 even if a gid is set (the nodes have perms 0600).
|
||
|
>
|
||
|
> Cheers,
|
||
|
>
|
||
|
> Tom
|
||
|
---
|
||
|
udev/udev-rules.c | 10 ++++++++--
|
||
|
1 files changed, 8 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/udev/udev-rules.c b/udev/udev-rules.c
|
||
|
index 48395e7..56a258d 100644
|
||
|
--- a/udev/udev-rules.c
|
||
|
+++ b/udev/udev-rules.c
|
||
|
@@ -2709,8 +2709,9 @@ void udev_rules_apply_static_dev_perms(struct udev_rules *rules)
|
||
|
case TK_A_STATIC_NODE: {
|
||
|
char filename[UTIL_PATH_SIZE];
|
||
|
struct stat stats;
|
||
|
+
|
||
|
/* we assure, that the permissions tokens are sorted before the static token */
|
||
|
- if (mode == 0 && uid == 0 && gid == 0)
|
||
|
+ if (uid == 0 && gid == 0)
|
||
|
goto next;
|
||
|
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(rules->udev), "/",
|
||
|
&rules->buf[cur->key.value_off], NULL);
|
||
|
@@ -2718,14 +2719,19 @@ void udev_rules_apply_static_dev_perms(struct udev_rules *rules)
|
||
|
goto next;
|
||
|
if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
|
||
|
goto next;
|
||
|
- if (mode != 0 && mode != (stats.st_mode & 0777)) {
|
||
|
+
|
||
|
+ if (mode == 0 && gid > 0)
|
||
|
+ mode = 0660;
|
||
|
+ if (mode != (stats.st_mode & 0777)) {
|
||
|
chmod(filename, mode);
|
||
|
info(rules->udev, "chmod '%s' %#o\n", filename, mode);
|
||
|
}
|
||
|
+
|
||
|
if ((uid != 0 && uid != stats.st_uid) || (gid != 0 && gid != stats.st_gid)) {
|
||
|
chown(filename, uid, gid);
|
||
|
info(rules->udev, "chown '%s' %u %u\n", filename, uid, gid);
|
||
|
}
|
||
|
+
|
||
|
utimensat(AT_FDCWD, filename, NULL, 0);
|
||
|
break;
|
||
|
}
|
||
|
--
|
||
|
1.7.5.2
|
||
|
|