Project

General

Profile

Actions

Bug #2160

closed

[PATCH 2/2] New option in adduser for to set the mode of home

Added by juanfra684 over 12 years ago. Updated over 12 years ago.

Status:
Closed
Priority:
Low
Assignee:
-
Category:
-
Target version:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

Imported the last version of adduser from FreeBSD 9.0-CURRENT. The only
change is the new M option.
--

usr.sbin/adduser/adduser.8 | 4 +++
usr.sbin/adduser/adduser.sh | 40 +
++++++++++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/usr.sbin/adduser/adduser.8 b/usr.sbin/adduser/adduser.8
index aad06be..fbdfe75 100644
--- a/usr.sbin/adduser/adduser.8
++ b/usr.sbin/adduser/adduser.8
@ -38,6 +38,7 @
.Op Fl CDENShq
.Op Fl G Ar groups
.Op Fl L Ar login_class
.Op Fl M Ar mode
.Op Fl d Ar partition
.Op Fl f Ar file
.Op Fl g Ar login_group
@ -240,6 +241,9 @ Please note that the message
file can reference the internal variables of the
.Nm
script.
.It Fl M Ar mode
+Create the home directory with permissions set to
.Ar mode .
.It Fl N
Do not read the default configuration file.
.It Fl q
diff --git a/usr.sbin/adduser/adduser.sh b/usr.sbin/adduser/adduser.sh
index 3a8a9d3..500dbb0 100644
--- a/usr.sbin/adduser/adduser.sh
++ b/usr.sbin/adduser/adduser.sh
@ -82,6 +82,7 @ show_usage() {
echo " -E disable this account after creation"
echo " -G additional groups to add accounts to"
echo " -L login class of the user"
echo " -M file permission for home directory"
echo " -N do not read configuration file"
echo " -S a nonexistent shell is not an error"
echo " -d home directory"
@ -191,6 +192,7 @ save_config() {
echo "# NOTE: only some variables are saved." >> ${ADDUSERCONF}
echo "# Last Modified on `${DATECMD}`." >> ${ADDUSERCONF}
echo '' >> ${ADDUSERCONF}
+ echo "defaultHomePerm=$uhomeperm" >> ${ADDUSERCONF}
echo "defaultLgroup=$ulogingroup" >> ${ADDUSERCONF}
echo "defaultclass=$uclass" >> ${ADDUSERCONF}
echo "defaultgroups=$ugroups" >> ${ADDUSERCONF}
@ -248,6 +250,12 @ add_user() {
if [ "$uhome" = "$NOHOME" ]; then
_home='-d "$uhome"'
else
+ # Use home directory permissions if specified
+ if [ -n "$uhomeperm" ]; then
+ _home='-m -d "$uhome" -M "$uhomeperm"'
+ else
+ _home='-m -d "$uhome"'
+ fi
_home='-m -d "$uhome"'
fi
elif [ -n "$Dflag" -a -n "$uhome" ]; then
@ -450,6 +458,29 @ get_homedir() {
fi
}

# get_homeperm
# Reads the account's home directory permissions
#
+get_homeperm() {
uhomeperm=$defaultHomePerm
+ _input=
+ _prompt=

if [ -n "$uhomeperm" ]; then
+ _prompt="Home directory permissions [${uhomeperm}]: "
+ else
+ _prompt="Home directory permissions (Leave empty for default): "
+ fi
+ if [ -z "$fflag" ]; then
+ echo -n "$_prompt"
+ read _input
+ fi

if [ -n "$_input" ]; then
+ uhomeperm="$_input"
+ fi
}
# get_uid # Reads a numeric userid in an interactive or batch session. Automatically # allocates one if it is not specified.
@ -602,6 +633,7 @ input_from_file() {
get_class
get_shell
get_homedir
+ get_homeperm
get_password
get_expire_dates
ugroups="$defaultgroups"
@ -671,6 +703,7 @ input_interactive() {
get_class
get_shell
get_homedir
+ get_homeperm

while : ; do
echo n "Use password-based authentication? [$_usepass]: "
@ -781,6 +814,7 @ input_interactive() {
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" "$uhomeperm"
printf "
-10s : s\n" "Shell" "$ushell"
printf "
-10s : %s\n" "Locked" "$_disable"
while : ; do
@ -825,6 +859,7 @ ugecos=
ulogingroup=
uclass=
uhome=
+uhomeperm=
upass=
ushell=
udotdir=/usr/share/skel
@ -851,6 +886,7 @ defaultclass=
defaultLgroup=
defaultgroups=
defaultshell="${DEFAULTSHELL}"
+defaultHomePerm=
  1. Make sure the user running this program is root. This isn't a security
  2. measure as much as it is a useful method of reminding the user to
    @ -939,6 +975,10 @ for _switch ; do
    esac
    shift; shift
    ;;
    + M)
    + defaultHomePerm=$2
    + shift; shift
    + ;;
    -N)
    readconfig=
    shift
    -

    1.7.7
Actions #1

Updated by swildner over 12 years ago

I've committed both patches along with a little bit more stuff I found in
FreeBSD.

Also, I settled on "user names" in rmuser.sh, because the rest of the script
was using it this way.

Actions

Also available in: Atom PDF