From owner-freebsd-rc@FreeBSD.ORG Wed Jun 15 16:27:55 2005 Return-Path: X-Original-To: freebsd-rc@FreeBSD.org Delivered-To: freebsd-rc@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E580216A41C; Wed, 15 Jun 2005 16:27:55 +0000 (GMT) (envelope-from rionda@gufi.org) Received: from vsmtp1.tin.it (vsmtp1.tin.it [212.216.176.141]) by mx1.FreeBSD.org (Postfix) with ESMTP id A650743D49; Wed, 15 Jun 2005 16:27:55 +0000 (GMT) (envelope-from rionda@gufi.org) Received: from kaiser.sig11.org (82.48.161.190) by vsmtp1.tin.it (7.0.027) id 42B04AD2000076AD; Wed, 15 Jun 2005 18:27:45 +0200 Received: by kaiser.sig11.org (Postfix, from userid 1000) id C9D66610F; Wed, 15 Jun 2005 18:27:44 +0200 (CEST) Date: Wed, 15 Jun 2005 18:27:44 +0200 From: Matteo Riondato To: bug-followup@FreeBSD.org, edwin@mavetju.org, mmolteni@cisco.com, freebsd-rc@freebsd.org Message-ID: <20050615162744.GP1053@kaiser.sig11.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i Cc: Subject: Re: kern/63954: devfs loses permissions X-BeenThere: freebsd-rc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion related to /etc/rc.d design and implementation." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2005 16:27:56 -0000 Patch for this against /etc/rc.d/devfs follows and can be found at http://www.riondabsd.net/diff/devfs.diff. Please note that this patch includes fix for PR bin/65693 (wildcarded device names in devfs.conf ). I hope someone will pick this up and commit the patch. --- devfs.old Wed Jun 8 22:50:32 2005 +++ devfs Wed Jun 15 14:50:37 2005 @@ -37,25 +37,44 @@ read_devfs_conf } + +do_action() +{ + case "$1" in + l*) if [ -c $2 -a ! -e $3 ]; then + ln -fs $2 $3 + fi + ;; + o*) if [ -c $2 ]; then + chown $3 $2 + fi + if echo $3 | grep -q : ; then + uid=${3%%:*} + gid=${3##*:} + devfs rule add path $2 user $uid group $gid + devfs rule apply path $2 user $uid group $gid + else + devfs rule add path $2 user $3 + devfs rule apply path $2 user $3 + fi + ;; + p*) if [ -c $2 ]; then + chmod $3 $2 + fi + devfs rule add path $2 mode $3 + devfs rule apply path $2 + ;; + esac +} + 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 + for dev_name in ${device}; do + do_action ${action} ${dev_name} ${parameter} + done done < /etc/devfs.conf fi } Best Regards -- Rionda aka Matteo Riondato G.U.F.I. Staff Member (http://www.gufi.org) FreeSBIE Developer (http://www.freesbie.org)