Add login test program
authorSam Moore <[email protected]>
Sun, 29 Sep 2013 17:34:21 +0000 (01:34 +0800)
committerSam Moore <[email protected]>
Sun, 29 Sep 2013 17:34:21 +0000 (01:34 +0800)
commit753c39d77028653dd24fe4856b34ee15eb9a3078
tree33ba061988b5bc6a344fafa21d188aeb81ab8fa9
parentcabd25b727d3899ece1232aac0e59d8ec22f1f69
Add login test program

So... it essentially mimics what /etc/shadow does. This might be easier than LDAP.

I was going to just use debian's login system, but realised some things:

POSIX C has a bunch of helpful functions that essentially parse /etc/passwd and provide a structure with all the relevant fields, like "pw_passwd".
Of course, the "pw_passwd" entry is always empty... because someone realised that storing hashes of passwords in /etc/passwd was not great :P

So /etc/passwd actually has no password information and is world readable, but /etc/shadow has everything (and is root readable only).
There are no wrapper functions for /etc/shadow because... user space programs aren't really meant to run as root.

Essentially linux was designed so that non-root programs can't fuck about with shell accounts. If you want to fuck about with shell accounts
you have to run as root and manually implement the parsing of /etc/shadow.

But I figured there was nothing stopping us from just making our own "shadow" file with hashed passwords.
That way people don't even need shell accounts. Well... the administrator needs to modify the file somehow...

LDAP probably gives more flexibility. It's probably better. Although it's also bloated.

To test the program, use the login "sonic" and the password "HEDGEHOG" (or something else to test failure).
testing/login/login.c [new file with mode: 0644]
testing/login/shadow [new file with mode: 0644]

UCC git Repository :: git.ucc.asn.au