Date: Fri, 28 Jan 2000 08:04:30 -0800 (PST) From: ichimura@shimada.nuee.nagoya-u.ac.jp To: freebsd-gnats-submit@FreeBSD.org Subject: bin/16422: newfs always make root's / directory Message-ID: <20000128160430.28D8615CA5@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number:         16422
>Category:       bin
>Synopsis:       newfs always make root's / directory
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jan 28 08:10:04 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Ichimura Kazuhito
>Release:        3.3-Release
>Organization:
Nagoya University
>Environment:
FreeBSD cados20 3.3-RELEASE FreeBSD 3.3-RELEASE #2: Mon Jan 24 01:33:14 JST 2000     ichimura@cados20:/usr/src/sys/compile/cados20  i386
>Description:
I want to use removable disk. And root mount it using "amd" command.
So I run "newfs" command.
But created / directry's owner is not me but root(uid 0).
group is wheel(gid 0), too.
And permition is always 755.
So I couldn't write my disk...
Is this FreeBSD's policy or Bug?
>How-To-Repeat:
root# chmod 666 /dev/SOMEDISK*
root# su foo
foo%  newfs /dev/SOMEDISK
foo%  exit
root# mount /dev/SOMEDISK /SOMEWHERE
root# ls -ld /SOMEWHERE
drwxr-xr-x  2 root  wheel  512 Jan 29 00:45 /SOMEWHERE/
>Fix:
Is is patch for /usr/src/sbin/newfs/mkfs.c
It is very short.
*** mkfs.c.orig	Mon Aug 30 00:14:52 1999
--- mkfs.c	Sat Jan 29 00:55:41 2000
***************
*** 981,987 ****
  	if (mfs)
  		node.di_mode = IFDIR | 01777;
  	else
! 		node.di_mode = IFDIR | UMASK;
  	node.di_nlink = PREDEFDIR;
  	if (Oflag)
  		node.di_size = makedir((struct direct *)oroot_dir, PREDEFDIR);
--- 981,994 ----
  	if (mfs)
  		node.di_mode = IFDIR | 01777;
  	else
! 	{
! 		mode_t mask;
! 		mask = umask( UMASK );
! 		umask( mask );
! 		node.di_mode = IFDIR | (0777&~mask);
! 	}
! 	node.di_uid = getuid();
! 	node.di_gid = getgid();
  	node.di_nlink = PREDEFDIR;
  	if (Oflag)
  		node.di_size = makedir((struct direct *)oroot_dir, PREDEFDIR);
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000128160430.28D8615CA5>
