pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/40737: bad flag in useradd for Linux



On Thu, Feb 26, 2009 at 10:10:05AM +0000, Piotr Meyer wrote:
>  Patch in attachment and under following link:
>  http://aniou.smutek.pl/useradd-for-linux.diff

That is one of the options. Attached is what I have in mind --
it should work for the default installations on the various systems
and only fail if the user manually enabled CREATE_HOME on a system
without support for -M, but in that case failing is somewhat sensible an
option.

Joerg
Index: usergroupfuncs.Linux
===================================================================
RCS file: /home/joerg/repo/netbsd/pkgsrc/mk/pkginstall/usergroupfuncs.Linux,v
retrieving revision 1.4
diff -u -p -r1.4 usergroupfuncs.Linux
--- usergroupfuncs.Linux        2 Feb 2009 19:54:22 -0000       1.4
+++ usergroupfuncs.Linux        26 Feb 2009 17:11:07 -0000
@@ -83,6 +83,30 @@ user_exists()
        ${RM} -fr $_tmpdir; return 3
 }
 
+# The useradd command on Linux is a complete mess.
+# At least Red Hat derivatives want to create home directories
+# by default. They have support for -M, but no --help.
+# Other Linux distributions lack -M support, some at least have
+# --help.
+# LSB just wants useradd, but doesn't specify any behavior, so
+# it is useless for writing portable scripts.
+
+call_useradd()
+{
+       case $userid in
+       "")
+               ${USERADD}                                      \
+                       -c "$descr" -d "$home" -s "$shell"      \
+                       -g $group $user "$@"
+               ;;
+       *)
+               ${USERADD}                                      \
+                       -c "$descr" -d "$home" -s "$shell"      \
+                       -g $group -u $userid $user "$@"
+               ;;
+       esac
+}
+
 # adduser user group [userid] [descr] [home] [shell]
 adduser()
 {
@@ -104,18 +128,11 @@ adduser()
 
        if ${TEST} -n "${USERADD}" -a -x "${USERADD}"; then
                ${ECHO} "${PKGNAME}: Creating user \`\`$user''"
-               case $userid in
-               "")
-                       ${USERADD}                                      \
-                               -c "$descr" -d "$home" -s "$shell"      \
-                               -g $group $user -M
-                       ;;
-               *)
-                       ${USERADD}                                      \
-                               -c "$descr" -d "$home" -s "$shell"      \
-                               -g $group -u $userid $user -M
-                       ;;
-               esac
+               if grep -i -- "^CREATE_HOME.*yes" /etc/login.defs > /dev/null; 
then
+                       call_useradd -M
+               else
+                       call_useradd
+               fi
        fi
        return 0
 }


Home | Main Index | Thread Index | Old Index