bin/105060: adduser does not support the setting of the mode of the home directory

Dr. Markus Waldeck waldeck at gmx.de
Thu Nov 2 07:50:24 UTC 2006


>Number:         105060
>Category:       bin
>Synopsis:       adduser does not support the setting of the mode of the home directory
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Nov 02 07:50:21 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Dr. Markus Waldeck
>Release:        6.1
>Organization:
>Environment:
FreeBSD fb 6.1-RELEASE FreeBSD 6.1-RELEASE #0: Sun May 7 04:32:43 UTC 2006 root at opus.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
>Description:
There is not possibility to set the mode of the home directory when a new user is created.
>How-To-Repeat:

>Fix:
This patch requires the patch which is included in PR bin/104248!

diff -ru adduser.orig/adduser.8 adduser/adduser.8
--- adduser.orig/adduser.8	Wed Aug 23 07:46:15 2006
+++ adduser/adduser.8	Wed Nov  1 20:13:27 2006
@@ -35,6 +35,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl CDENShq
+.Op Fl A Ar mode
 .Op Fl G Ar groups
 .Op Fl L Ar login_class
 .Op Fl d Ar partition
@@ -157,6 +158,8 @@
 any values saved in this file.
 .Sh OPTIONS
 .Bl -tag -width indent
+.It Fl A Ar mode
+Set file permission for the home directory.
 .It Fl C
 Create new configuration file and exit.
 This option is mutually exclusive with the
diff -ru adduser.orig/adduser.sh adduser/adduser.sh
--- adduser.orig/adduser.sh	Wed Aug 23 07:46:15 2006
+++ adduser/adduser.sh	Wed Nov  1 20:43:35 2006
@@ -76,6 +76,7 @@
 show_usage() {
 	echo "usage: ${THISCMD} [options]"
 	echo "  options may include:"
+	echo "  -A		file permission for home directory"
 	echo "  -C		save to the configuration file only"
 	echo "  -D		do not attempt to create the home directory"
 	echo "  -E		disable this account after creation"
@@ -195,6 +196,7 @@
 	echo "defaultgroups=$ugroups"	>> ${ADDUSERCONF}
 	echo "passwdtype=$passwdtype" 	>> ${ADDUSERCONF}
 	echo "homeprefix=$homeprefix" 	>> ${ADDUSERCONF}
+	echo "homemode=$homemode" 	>> ${ADDUSERCONF}
 	echo "defaultshell=$ushell"	>> ${ADDUSERCONF}
 	echo "udotdir=$udotdir"		>> ${ADDUSERCONF}
 	echo "msgfile=$msgfile"		>> ${ADDUSERCONF}
@@ -246,10 +248,10 @@
 		if [ "$uhome" = "$NOHOME" ]; then
 			_home='-d "$uhome"'
 		else
-			_home='-m -d "$uhome"'
+			_home='-m -d "$uhome" -A $uhomemode'
 		fi
 	elif [ -n "$Dflag" -a -n "$uhome" ]; then
-		_home='-d "$uhome"'
+		_home='-d "$uhome" -A $uhomemmode'
 	fi
 	case $passwdtype in
 	no)
@@ -442,6 +444,28 @@
 	fi
 }
 
+# get_homemode
+#	Reads the account's home directory file permission. Used both with interactive input
+#	and batch input. In batch mode the value in /etc/adduser.conf if present or 0755 
+#       is used.
+#
+get_homemode() {
+	_input=
+	uhomemode="$homemode"
+
+	if [ -z "$fflag" ]; then
+		echo -n "Home directory file permission [${uhomemode}]: "
+		read _input
+	else
+		_input=${uhomemode}
+	fi
+
+	if [ -n "$_input" ]; then
+		uhomemode="$_input"
+		homemode="$uhomemode"
+	fi
+}
+
 # get_uid
 #	Reads a numeric userid in an interactive or batch session. Automatically
 #	allocates one if it is not specified.
@@ -601,6 +625,7 @@
 		get_class
 		get_shell
 		get_homedir
+		get_homemode
 		get_password
 		get_expire_dates
 
@@ -667,6 +692,7 @@
 	get_class
 	get_shell
 	get_homedir
+	get_homemode
 
 	while : ; do
 		echo -n "Use password-based authentication? [$_usepass]: "
@@ -777,6 +803,7 @@
 	printf "%-10s : %s\n" "Class" "$uclass"
 	printf "%-10s : %s %s\n" "Groups" "${ulogingroup:-$username}" "$ugroups"
 	printf "%-10s : %s\n" "Home" "$uhome"
+	printf "%-10s : %s\n" "Home Mode" "$uhomemode"
 	printf "%-10s : %s\n" "Shell" "$ushell"
 	printf "%-10s : %s\n" "Locked" "$_disable"
 	while : ; do
@@ -821,6 +848,7 @@
 ulogingroup=
 uclass=
 uhome=
+uhomemode=0755
 upass=
 ushell=
 udotdir=/usr/share/skel

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list