Skip site navigation (1)Skip section navigation (2)
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>