On Tuesday 05 August 2014 17:05:11 you wrote:
> On Tue, Aug 5, 2014 at 3:13 PM, Laszlo Papp <lp...@kde.org> wrote:
> 
> >
> >
> >
> > On Tue, Aug 5, 2014 at 3:06 PM, tito <farmat...@tiscali.it> wrote:
> >
> >> On Tuesday 05 August 2014 15:21:49 you wrote:
> >> > On Tue, Aug 5, 2014 at 2:14 PM, Laszlo Papp <lp...@kde.org> wrote:
> >> >
> >> > >
> >> > >
> >> > >
> >> > > On Tue, Aug 5, 2014 at 2:06 PM, tito <farmat...@tiscali.it> wrote:
> >> > >
> >> > >> On Tuesday 05 August 2014 14:47:53 you wrote:
> >> > >> > On Tue, Aug 5, 2014 at 1:42 PM, tito <farmat...@tiscali.it> wrote:
> >> > >> >
> >> > >> > > On Tuesday 05 August 2014 14:27:57 you wrote:
> >> > >> > > > I disagree. There is nothing to reject here. It fixes _my
> >> issue_ at
> >> > >> hand.
> >> > >> > > > If you want to fix other bugs in your system that you are
> >> facing in
> >> > >> > > > reality, by all means, fix them in a separate change.
> >> > >> > > >
> >> > >> > > > I definitely do not agree with dynamically allocated buffer
> >> for the
> >> > >> > > simple
> >> > >> > > > reasons of:
> >> > >> > > >
> >> > >> > > > 1) Slow.
> >> > >> > > > 2) You would still need a maximum anyway.
> >> > >> > > > 3) Needless code complication.
> >> > >> > > >
> >> > >> > > > Let us keep things simple and good, you know the good old KISS
> >> > >> principle.
> >> > >> > > >
> >> > >> > > > P.S.: please do not bikeshed.
> >> > >> > > >
> >> > >> > > >
> >> > >> > > > On Tue, Aug 5, 2014 at 1:17 PM, tito <farmat...@tiscali.it>
> >> wrote:
> >> > >> > > >
> >> > >> > > > > On Tuesday 05 August 2014 12:46:08 you wrote:
> >> > >> > > > > > Here is my tested fix without being to debug the busybox
> >> code,
> >> > >> so
> >> > >> > > only
> >> > >> > > > > code
> >> > >> > > > > > reading and understanding were my friends:
> >> > >> > > > > >
> >> > >> > > > > > commit 9610650b6ce2a4c1904f78a2dcdb47cad3d2e3d1
> >> > >> > > > > > Author: Laszlo Papp <lp...@kde.org>
> >> > >> > > > > > Date:   Tue Aug 5 11:42:24 2014 +0100
> >> > >> > > > > >
> >> > >> > > > > >     Allow 256 bytes long usernames as per Unix standards
> >> > >> (usually)
> >> > >> > > > > >
> >> > >> > > > > > diff --git a/libpwdgrp/pwd_grp.c b/libpwdgrp/pwd_grp.c
> >> > >> > > > > > index 2060d78..368c252 100644
> >> > >> > > > > > --- a/libpwdgrp/pwd_grp.c
> >> > >> > > > > > +++ b/libpwdgrp/pwd_grp.c
> >> > >> > > > > > @@ -23,8 +23,8 @@
> >> > >> > > > > >
> >> > >> > >
> >> > >>
> >>  /**********************************************************************/
> >> > >> > > > > >  /* Sizes for statically allocated buffers. */
> >> > >> > > > > >
> >> > >> > > > > > -#define PWD_BUFFER_SIZE 256
> >> > >> > > > > > -#define GRP_BUFFER_SIZE 256
> >> > >> > > > > > +#define PWD_BUFFER_SIZE LOGIN_NAME_MAX+256
> >> > >> > > > > > +#define GRP_BUFFER_SIZE LOGIN_NAME_MAX+256
> >> > >> > > > > >
> >> > >> > > > > >
> >> > >> > >
> >> > >>
> >>  /**********************************************************************/
> >> > >> > > > > >  /* Prototypes for internal functions. */
> >> > >> > > > > >
> >> > >> > > > >
> >> > >> > > > > Hi,
> >> > >> > > > > yes I've thought also about this solution but rejected it
> >> because:
> >> > >> > > > >
> >> > >> > > > > 1) there will not be enough space to hold the home dir if
> >> named
> >> > >> the
> >> > >> > > same
> >> > >> > > > > as the user
> >> > >> > > > >     so you need at least:
> >> > >> > > > >
> >> > >> > > > > #define PWD_BUFFER_SIZE LOGIN_NAME_MAX+ 6 (for home) +
> >> > >> LOGIN_NAME_MAX
> >> > >> > > (or
> >> > >> > > > > PATH_MAX?) + 256 (for the rest)
> >> > >> > > > >
> >> > >> > > > >    yet this might not be enough as in my passwd file I see a
> >> 101
> >> > >> char
> >> > >> > > long
> >> > >> > > > > passwd.
> >> > >> > > > >    Add  the gecos fields (arbitrary lenght)  to it and the
> >> default
> >> > >> > > shell
> >> > >> > > > > and we are short on space again.
> >> > >> > > > >
> >> > >> > > > > 2) same for #define GRP_BUFFER_SIZE LOGIN_NAME_MAX+256:
> >> > >> > > > >     here you need to take into account the group member list
> >> with
> >> > >> > > > >     an arbitrary number of members:
> >> > >> > > > >
> >> > >> > > > >
> >> > >> > > > >     #define GRP_BUFFER_SIZE LOGIN_NAME_MAX+256+
> >> LOGIN_NAME_MAX*n:
> >> > >> > > > >
> >> > >> > > > > The only clean solution to fix it forever is dynamically
> >> allocated
> >> > >> > > buffers
> >> > >> > > > > created at the time you read in the line from the passwd
> >> files.
> >> > >> > > > >
> >> > >> > > > > Ciao,
> >> > >> > > > > Tito
> >> > >> > > > >
> >> > >> > > > >
> >> > >> > > > > P.S.: please don't top post.
> >> > >> > > > >
> >> > >> > > > >
> >> > >> > > > > >
> >> > >> > > > > > On Tue, Aug 5, 2014 at 11:22 AM, Laszlo Papp <
> >> lp...@kde.org>
> >> > >> wrote:
> >> > >> > > > > >
> >> > >> > > > > > > Yeah, mayhaps... Thanks for the prompt reply. I tried to
> >> > >> debug the
> >> > >> > > > > code,
> >> > >> > > > > > > but the busybox code here is a bit messy heavily abusing
> >> > >> macros in
> >> > >> > > C
> >> > >> > > > > and
> >> > >> > > > > > > all that. It ain't easy I must confess!
> >> > >> > > > > > >
> >> > >> > > > > > > For instance, see this section:
> >> > >> > > > > > >
> >> > >> > > > > > >
> >> http://git.busybox.net/busybox/tree/libpwdgrp/pwd_grp.c#n227
> >> > >> > > > > > >
> >> > >> > > > > > > The _source_ is included several times always getting a
> >> new
> >> > >> meaning
> >> > >> > > > > based
> >> > >> > > > > > > on some defines... Now, check this function:
> >> > >> > > > > > >
> >> > >> > > > > > >
> >> > >> > >
> >> http://git.busybox.net/busybox/tree/libpwdgrp/pwd_grp_internal.c#n20
> >> > >> > > > > > >
> >> > >> > > > > > > "resultbuf" will be always different depending on which
> >> > >> include it
> >> > >> > > is.
> >> > >> > > > > > > Since it is failing at the pw_name check in there, I
> >> wanted to
> >> > >> > > print it
> >> > >> > > > > > > out, but no easy joy there as printing it like that will
> >> yield
> >> > >> > > > > compilation
> >> > >> > > > > > > error when the file is being included next time from
> >> above.
> >> > >> > > > > > >
> >> > >> > > > > > > Right, I thought instead of doing some "#if a == b"
> >> hackery,
> >> > >> > > debugging
> >> > >> > > > > > > would be easier, BUT:
> >> > >> > > > > > >
> >> > >> > > > > > > 1) The default build is stripped, yuck!
> >> > >> > > > > > >
> >> > >> > > > > > > 2) The unstripped build cannot locate the symbols (*).
> >> > >> > > > > > >
> >> > >> > > > > > > So, I am giving up on this for now; this is not the type
> >> of
> >> > >> source
> >> > >> > > code
> >> > >> > > > > > > that is so pleasant to work with. ;-)
> >> > >> > > > > > >
> >> > >> > > > > > > Cheers, L.
> >> > >> > > > > > >
> >> > >> > > > > > > * (gdb) b main
> >> > >> > > > > > >
> >> > >> > > > > > > Breakpoint 2 at 0x407c71
> >> > >> > > > > > > (gdb) r
> >> > >> > > > > > > Starting program:
> >> > >> /home/lpapp/Projects/busybox/busybox_unstripped
> >> > >> > > > > deluser
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > > warning: Could not load shared library symbols for
> >> > >> linux-vdso.so.1.
> >> > >> > > > > > > Do you need "set solib-search-path" or "set sysroot"?
> >> > >> > > > > > >
> >> > >> > > > > > > Breakpoint 2, 0x0000000000407c71 in main ()
> >> > >> > > > > > > (gdb) list
> >> > >> > > > > > > No symbol table is loaded.  Use the "file" command.
> >> > >> > > > > > > (gdb)
> >> > >> > > > > > >
> >> > >> > > > > > >
> >> > >> > > > > > >
> >> > >> > > > > > > On Mon, Aug 4, 2014 at 10:40 PM, tito <
> >> farmat...@tiscali.it>
> >> > >> > > wrote:
> >> > >> > > > > > >
> >> > >> > > > > > >> On Monday 04 August 2014 19:06:39 Laszlo Papp wrote:
> >> > >> > > > > > >> > Hi,
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > sudo busybox adduser
> >> > >> > > > > > >> >
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> > passwd: unknown user
> >> > >> > > > > > >> >
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > Yet, the user is created in /etc/shadow:
> >> > >> > > > > > >> >
> >> > >> > > > > > >> >
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff:!:16286:0:99999:7:::
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > This is at least one issue, but there is another here:
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > sudo busybox deluser
> >> > >> > > > > > >> >
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> > deluser: unknown user
> >> > >> > > > > > >> >
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > So, basically, once you create that long username, you
> >> > >> cannot
> >> > >> > > > > remove it
> >> > >> > > > > > >> > anymore with busybox and it keeps polluting your
> >> system.
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > You have to gain other means to clean up! I am using
> >> this
> >> > >> > > version
> >> > >> > > > > over
> >> > >> > > > > > >> here:
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > BusyBox v1.22.1 (2014-06-02 14:47:37 MSK) multi-call
> >> > >> binary.
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > Could you please look into this and potentially fix
> >> it?
> >> > >> Thanks
> >> > >> > > in
> >> > >> > > > > > >> advance.
> >> > >> > > > > > >> >
> >> > >> > > > > > >> > Cheers, L.
> >> > >> > > > > > >> >
> >> > >> > > > > > >> Hi,
> >> > >> > > > > > >> if disabling libb's internal pwd/grp lib and by jumping
> >> > >> through
> >> > >> > > some
> >> > >> > > > > hops
> >> > >> > > > > > >> it
> >> > >> > > > > > >> works for me:
> >> > >> > > > > > >>
> >> > >> > > > > > >> I need to add the group first as my system's groupadd
> >> command
> >> > >> > > called
> >> > >> > > > > by
> >> > >> > > > > > >> bb's adduser
> >> > >> > > > > > >> supports only groupnames of max 32 chars.
> >> > >> > > > > > >>
> >> > >> > > > > > >> ./busybox addgroup
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> ./busybox adduser
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> -G
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> Adding user
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> `fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
> >> > >> > > > > > >> to group
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> `fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
> >> > >> > > > > > >> ...
> >> > >> > > > > > >> Adding user
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> to group
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> Done.
> >> > >> > > > > > >> Enter new UNIX password:
> >> > >> > > > > > >> Retype new UNIX password:
> >> > >> > > > > > >> passwd: password updated successfully
> >> > >> > > > > > >>
> >> > >> > > > > > >> and then I could also delete it:
> >> > >> > > > > > >>
> >> > >> > > > > > >> ./busybox deluser
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> ./busybox delgroup
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >> delgroup: unknown group
> >> > >> > > > > > >>
> >> > >> > > > >
> >> > >> > >
> >> > >>
> >> fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
> >> > >> > > > > > >>
> >> > >> > > > > > >> (deluser correctly deleted also the group)
> >> > >> > > > > > >>
> >> > >> > > > > > >> I suspect that the buffer size used in
> >> libbpwdgrp/pwd_grp.c
> >> > >> is to
> >> > >> > > > > small:
> >> > >> > > > > > >>
> >> > >> > > > > > >> #define PWD_BUFFER_SIZE 256
> >> > >> > > > > > >> #define GRP_BUFFER_SIZE 256
> >> > >> > > > > > >>
> >> > >> > > > > > >> as it is meant for the whole struct pw passwd (or
> >> struct gr
> >> > >> group)
> >> > >> > > > > fields
> >> > >> > > > > > >> which could be easily be bigger:
> >> > >> > > > > > >>
> >> > >> > > > > > >> grep ffff* /etc/shadow | wc
> >> > >> > > > > > >>       1       1     240
> >> > >> > > > > > >> grep ffff* /etc/passwd | wc
> >> > >> > > > > > >>       1       2     286
> >> > >> > > > > > >>
> >> > >> > > > > > >> I think that the buffers' size must be increased for
> >> example
> >> > >> to:
> >> > >> > > > > > >>
> >> > >> > > > > > >> #define PWD_BUFFER_SIZE
> >> LOGIN_NAME_MAX+LOGIN_NAME_MAX+256
> >> > >> > > > > > >>
> >> > >> > > > > > >> we need one LOGIN_NAME_MAX size for the login and one
> >> more
> >> > >> for the
> >> > >> > > > > home
> >> > >> > > > > > >> dir
> >> > >> > > > > > >> if same as login, plus 256 for the remaining data
> >> (passwd,
> >> > >> gecos,
> >> > >> > > > > shell,
> >> > >> > > > > > >> etc).
> >> > >> > > > > > >>
> >> > >> > > > > > >> #define GRP_BUFFER_SIZE
> >>  LOGIN_NAME_MAX+256+LOGIN_NAME_MAX*n
> >> > >> (?)
> >> > >> > > > > > >>
> >> > >> > > > > > >> we need one LOGIN_NAME_MAX size for the group name (for
> >> > >> which we
> >> > >> > > > > > >> actually enforce the same size as for the username)
> >> plus 256
> >> > >> for
> >> > >> > > the
> >> > >> > > > > > >> remaining data
> >> > >> > > > > > >> plus LOGIN_NAME_MAX * n group member names.
> >> > >> > > > > > >>
> >> > >> > > > > > >> So for my limited understanding using static buffers
> >> here is
> >> > >> > > rather
> >> > >> > > > > > >> difficult
> >> > >> > > > > > >> as the size of data is not easily predictable.
> >> > >> > > > > > >> I don't know how real libc manages it (maybe realloc on
> >> > >> ERANGE?)
> >> > >> > > > > > >>
> >> > >> > > > > > >> Your particular example for me is fixed by using.
> >> > >> > > > > > >>
> >> > >> > > > > > >> #define PWD_BUFFER_SIZE 1024
> >> > >> > > > > > >>
> >> > >> > > > > > >> #define GRP_BUFFER_SIZE 1024
> >> > >> > > > > > >>
> >> > >> > > > > > >> But to me it seems not an optimal solution,
> >> > >> > > > > > >> so other more experienced developers should
> >> > >> > > > > > >> take a look at it.
> >> > >> > > > > > >>
> >> > >> > > > > > >> Hope this helps.
> >> > >> > > > > > >> Ciao,
> >> > >> > > > > > >> Tito
> >> > >> > > > > > >>
> >> > >> > > > > > >> PS: in libbbpwdgrp functions we need to check for
> >> errors:
> >> > >> > > > > > >>
> >> > >> > > > > > >>    0 or ENOENT or ESRCH or EBADF or EPERM or ...
> >> > >> > > > > > >>               The given name or gid was not found.
> >> > >> > > > > > >>
> >> > >> > > > > > >>        EINTR  A signal was caught.
> >> > >> > > > > > >>
> >> > >> > > > > > >>        EIO    I/O error.
> >> > >> > > > > > >>
> >> > >> > > > > > >>        EMFILE The maximum number (OPEN_MAX) of files
> >> was open
> >> > >> > > already
> >> > >> > > > > in
> >> > >> > > > > > >> the calling process.
> >> > >> > > > > > >>
> >> > >> > > > > > >>        ENFILE The maximum number of files was open
> >> already
> >> > >> in the
> >> > >> > > > > system.
> >> > >> > > > > > >>
> >> > >> > > > > > >>        ENOMEM Insufficient memory to allocate group
> >> > >> structure.
> >> > >> > > > > > >>
> >> > >> > > > > > >>        ERANGE Insufficient buffer space supplied.
> >> > >> > > > > > >>
> >> > >> > > > > > >> as for example the xgroup_study function in the addgroup
> >> > >> applet
> >> > >> > > > > > >> assigns a wrong gid if getgrgid fails for example for
> >> ERANGE
> >> > >> > > > > > >>
> >> > >> > > > > > >>         /* Check if the desired gid is free
> >> > >> > > > > > >>          * or find the first free one */
> >> > >> > > > > > >>         while (1) {
> >> > >> > > > > > >>                 printf("gid %d\n", g->gr_gid);
> >> > >> > > > > > >>                 if (!getgrgid(g->gr_gid)) {
> >> > >> > > > > > >>                         return; /* found free group:
> >> return
> >> > >> */
> >> > >> > > > > > >>                 }
> >> > >> > > > > > >>
> >> > >> > > > > > >>
> >> > >> > > Hi,
> >> > >> > > I doubt it fixes your issue
> >> > >> >
> >> > >> >
> >> > >> > What you are basically telling me here that I submitted untested
> >> changes
> >> > >> > for my use cases, directly or indirectly. Either way, I refuse this
> >> > >> claim
> >> > >> > since I _did_ test the change for my use case.
> >> > >> >
> >> > >> >
> >> > >> > >  because I tested the same fix and it did in fact
> >> > >> >
> >> > >> > fail. Please test:
> >> > >> > >
> >> > >> > > 1) ./busybox addgroup LONGUSERNAME   (this fails in subtle ways
> >> as a
> >> > >> > > already in use gid is assigned)
> >> > >> > > 2) ./busybox adduser LONGUSERNAME -G LONGUSERNAME
> >> > >> > > 3) ./busybox deluser LONGUSERNAME
> >> > >> > > 4) ./busybox delgroup LONGUSERNAME
> >> > >> > >
> >> > >> >
> >> > >> > I do not see how this is any relevant to my initial steps. This is
> >> a
> >> > >> > completely different test step with a different issue. As I said
> >> > >> earlier,
> >> > >> > please welcome contributors rather than being blocker just because
> >> they
> >> > >> fix
> >> > >> > one particular and real bug, and not every "imaginary" use case
> >> that can
> >> > >> > just exist in the world out there.
> >> > >> >
> >> > >>
> >> > >> Hi,
> >> > >> there is nothing imaginary here, i just would like to point out that
> >> > >> due to the fact that busybox adduser program by default creates
> >> > >> a home dir with the same name as the user the buffer size you
> >> > >> propose in your fix may not be big enough to hold all the data
> >> > >> and that this fact will affect also other commands that use
> >> > >> the functions in libbbpwdgrp in subtle ways.
> >> > >> I of course welcome you as a contributor and by the way I have
> >> > >> no decisional power to accept or reject your patches (which is fine
> >> > >> for me), but nonetheless sometimes I disagree with you for the sake
> >> > >> of cleaner solutions (from my point of view).
> >> > >>
> >> > >
> >> > > This script disagrees with you:
> >> > >
> >> > > #!/bin/bash
> >> > >
> >> > > USERNAME='e'
> >> > > for i in {1..232}
> >> > > do
> >> > >     USERNAME+='f'
> >> > > done
> >> > > echo $USERNAME
> >> > >
> >> > > ./busybox adduser -D $USERNAME
> >> > > ./busybox deluser $USERNAME
> >> > >
> >> >
> >> > Furthermore, I am planning to use -H for now, so I am not in any way
> >> > affected by this (other than -H is broken here for some reason because
> >> it
> >> > does create the home folder in /etc/passwd, but that is discussion for
> >> > another thread).
> >> Hi,
> >>
> >> --no-create-home
> >>               Do not create the home directory, even if it doesn't exist.
> >>
> >> #adduser prova --no-create-home
> >> Adding user `prova' ...
> >> Adding new group `prova' (1005) ...
> >> Adding new user `prova' (1004) with group `prova' ...
> >> Not creating home directory `/home/prova'.
> >> Enter new UNIX password:
> >> Retype new UNIX password:
> >> passwd: password updated successfully
> >> Changing the user information for prova
> >> Enter the new value, or press ENTER for the default
> >>         Full Name []:
> >>         Room Number []:
> >>         Work Phone []:
> >>         Home Phone []:
> >>         Other []:
> >> Is the information correct? [Y/n] y
> >> # grep prova /etc/passwd
> >> prova:x:1004:1005:,,,:/home/prova:/bin/bash
> >> #ls -la /home | grep prova
> >>
> >> This is the expected behaviour. Real adduser on debian does the same.
> >>
> >
> > Please forget about Debian's adduser when discussing it. Different
> > distributions have different wrappers, so it is not the main direction. In
> > fact, debian even has custom policies in those wrappers. I was
> > investigating about it, and it seems even -r (system user) is having that
> > passwd entry, which I personally believe _strange_ at this point. I am yet
> > to understand why it is done so. In my opinion, it is wrong, at least from
> > certain point of view because:
> >
> > * If you do not intend to create a home directory at this point, but later
> > manually, you will end up having the wrong entry in /etc/passwd.
> >
> > * Even if you never create a home directory, it might whisper that the
> > home folder was removed manually by someone. At least, this is a potential
> > confusion.
> >
> > I think at this point - based on my current information -, busybox could
> > do better than the desktop tool here. It would not be the first reasonable
> > separation from the desktop family (past hint: flexibility about usernames
> > and passwords).
> >
> 
> After a bit of thinking and investigation, I believe this has been a
> historical oversight from the GNU tool developers. Here [1] is the
> definition of the home entry in the /etc/passwd file:
> 
> 
>    1. *Home directory*: The absolute path to the directory the user will be
>    in when they log in. If this directory does not exists then users directory
>    becomes /
> 
> In other words, when you do not create a home folder, it will be "/" by
> default, 

Hi,
it will be "/" only in case the home dir does not exist at login time
as the login program does chdir to the home dir else
you would be locked out of a broken system (damaged partition
mounted to /home,  /root folder corrupted on main file system).
This is what I understand, not that you should put "/" in the passwd
files.

Ciao,
Tito
 

> and I think that is the entry or empty should be put into the
> /etc/passwd file by default in such cases. When someone intends to create a
> home folder later for the same user without deletion and recreation, one
> can use usermod with the corresponding option (-d/--home) on desktop which
> will modify the /etc/passwd entry, too. So, I do not see any point in the
> default "/home/foo" put in /etc/passwd for user "foo" created intentionally
> without home directories.
> 
> Busybox could have a helper like that later. Do you remember that I was
> planning to add support for changing the username before anyway? This could
> be tied up with that into one applet or so. I remember you had a very long
> and descriptive reply with your ideas, too.
> 
> I think it would be much saner behavior than what the desktop util does
> without breaking the definition of that entry, while preserving a
> potentially smaller footprint, too, in that file. That is also inline with
> busybox's goal IMHO.
> 
> [1] http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/
> 
> 
> >
> > Cheers, L.
> >
> 
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to