I am starting a rewrite of adduser. Some things that should be noted about this rewrite: * It is in C++. * It is currently very preliminary. * It does not use the useradd/groupadd series of programs; instead it rewrites the files on its own.[0] * It contains a "test" mode, where it writes files into the current directory, instead of in system locations. This is to aid in generation of a testsuite. * It is under the GNU General Public License, as published by the Free Software Foundation; version 2 of the License, dated June 1991. Some goals I have for this rewrite (in order of expected completion): * To make the software fully functional. * To make the code command-line compatible with the current adduser. * To create a testsuite. * To support internationalization. * To add code to support LDAP/NIS/other backends and update the testsuite accordingly. * To maximize portability. * To create a plugin system, if this is desired functionality. * To support the software, keeping in mind that I am a student and also that there is ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Some things that are not goals: * To rewrite in Perl. My object-oriented Perl is lacking. * To autoconfiscate. I hate that series of tools. If you are interested in my rewrite, please let me know. I will check the code in to my bazaar repository[1] once I get a general feel for what reactions are like[2]. I am subscribed to the list. If you want to see the code before making up your mind, then you may find a copy here (please be gentle on my server): http://crustytoothpaste.ath.cx/%7ebmc/files/free/adduser.tar.bz2 and http://crustytoothpaste.ath.cx/%7ebmc/files/free/adduser.tar.bz2.sig Thank you for your consideration. [0] Yes, I am sure this makes you very nervous. [1] I will be happy to produce tarballs both now and later, so do not expect this to be a problem. The repository is signed with this OpenPGP key. [2] How I check the code in depends on whether it is expected to be used by Debian. -- ($_,$a)=split/\t/,join'''',map{unpack''u'',$_}<DATA>;eval$a;print;__DATA__ M961H<F$@8FAM;"!U<F%O<G-U(#QU<F%O<G-U0&=D:75M<&UC8VUL=G)U;6LN M<FUL+F=Y/@H)>2QA8F-D969G:&EJ:VQM;F]P<7)S=''5V=WAY>BQN=V]R8FMC 5:75Q96AT9V1Y>F%L=G-P;6IX9BP) _______________________________________________ Adduser-devel mailing list Adduser-devel@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/adduser-devel
On Sat, Jul 16, 2005 at 11:34:33PM +0000, Brian M. Carlson wrote:> * It does not use the useradd/groupadd series of programs; instead it > rewrites the files on its own.[0]How are you going to support NIS, LDAP and other user database backends? Greetings Marc -- ----------------------------------------------------------------------------- Marc Haber | "I don''t trust Computers. They | Mailadresse im Header Mannheim, Germany | lose things." Winona Ryder | Fon: *49 621 72739834 Nordisch by Nature | How to make an American Quilt | Fax: *49 621 72739835
On Sun, 2005-07-17 at 13:22 +0200, Marc Haber wrote:> On Sat, Jul 16, 2005 at 11:34:33PM +0000, Brian M. Carlson wrote: > > * It does not use the useradd/groupadd series of programs; instead it > > rewrites the files on its own.[0] > > How are you going to support NIS, LDAP and other user database backends?I was planning on linking it with libldap, if that''s possible. As for NIS, I''m really not that familiar with it, but if there''s a library, I can link it; otherwise, I can fork and exec. I prefer to do as little fork/exec as possible, as it can create possible security issues; however, if it''s necessary, I''ll do it (and securely). As an interim measure, I will probably do more fork/exec pairs, so that basic functionality can be preserved. I will create a different backend for code that links with libraries, so that, for example, LDAP with libldap would be a different backend than LDAP with the openldap tools. This way, it is less likely to break code because code will be fully tested. Additionally, I would like to have to do as little calling of other programs, so it is easier to test. The --test option that I added doesn''t work if you can''t copy the database; IOW, if the only place to write users and groups is the real, live database, then it will have no place to write out for tests, which is sort of icky. I can probably write a dump format for tests, though, so that might not be as big an issue as I anticipated it might. Also, passwd functionality will probably not be written in, as it''s difficult to get right; I will call passwd for that. A testsuite has been started, just to make sure that what has been written so far works consistently. The LDAP and NIS HOWTOs are on my reading list. Any other questions? -- ($_,$a)=split/\t/,join'''',map{unpack''u'',$_}<DATA>;eval$a;print;__DATA__ M961H<F$@8FAM;"!U<F%O<G-U(#QU<F%O<G-U0&=D:75M<&UC8VUL=G)U;6LN M<FUL+F=Y/@H)>2QA8F-D969G:&EJ:VQM;F]P<7)S=''5V=WAY>BQN=V]R8FMC 5:75Q96AT9V1Y>F%L=G-P;6IX9BP) -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part Url : http://lists.alioth.debian.org/pipermail/adduser-devel/attachments/20050717/63b72bf9/attachment.pgp