Admin logging SoC project requirements
Gerald (Jerry) Carter
jerry at samba.org
Tue May 30 03:07:27 GMT 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Michael Krax wrote:
> I have a little bit trouble locating the spots where
> to place calls to admin_log().
>
> Canidates in the second case are (ordered from lowest
> to highest level, as far as I understand it):
>
> * add_smbfilepwd_entry() in pdb_smbpasswd.c (and
> equivalents in the other backends)
>
> * smbpasswd_add_sam_account() in pdb_smbpasswd.c
> and all the other backends
>
> * pdb_add_sam_account() in pdb_interface.c (what about
> create_user()?)
>
> * in the admin block in _samr_create_user() in srv_samr_nt.c
> *and* in local_password_change() in passdb.c
The trick is to catch events at the lowest common
denominator so there is only one code path to maintain.
For user's this would probably be in pdb_add_sam_account().
The RAP and RPC code paths think down to here.
> So we keep this in mind, I do start with the
> "user-added"- and the "machine-account-invalid" type
> of events; if there is time I'd like looking into
> auditing, too.
That's fine. But for the success of the SoC based
project, I think only the plumbing and logging a minimum
number of admin events (to verify functionality)
is acceptable.
> Apparently the eventlog framework Marcin Porwit worked upon
> is now in Samba3. Integration with it would be (for now) by
> way of syslog, ie.:
Yes. See the HOWTO at http://wiki.samba.org/index.php/Event_Logging.
Centeris sets this up for you via their Likewise console.
You can download betas from www.centeris.com if you want to
avoid the initial hassle of setting Eventlogging up for yourself.
> admin_log() -> writes to syslog (or whatever configured) -> syslog (or
> other backend storage) is parsed and "eventlogadm" is called
> (as in http://www.samba.org/~jerry/Samba-EventLog-HOWTO.txt)
> # tail -f /var/log/messages |\
> my_program_to_parse_into_eventlog_records |\
> eventlogadm SyslogLinux
>
> Later on, there should be direct support for eventlog in adminlog.
This is a bit of a philosophical issue. If the admin log
interface writes directly to the eventlog tdbs then those
eventlogs are not long strictly caches of logs stored elsewhere.
I prefer personally to log via syslogd and have some script
import the data from there into the tdbs.
> Reading your example about the missing DC credentials
> I noticed that you were also providing some hints to
> the admin how to solve the problem. I'm not quite sure
> if the admin log should provide such information. But:
>
> A solution could be to provide an external collection
> with (more or less) detailed information on a certain
> error. In that case, we need a unique id for every
> logging event (my example does not do this yet).
That was my next suggestion. Unique event IDs are a must
in either case I think.
> So there are two different prototypes for the admin_log function (please
> ignore the different parameters in the sample patch, it was a first try):
>
> 1.
> void admin_log(int eventType, /* determines the syslog facility */
> int priority, /* as in syslog(...) */
> const char *format_str, ...);
>
> eventType corresponds to something like ADMIN_LOG_TYPE_AUTH,
> ADMIN_LOG_TYPE_PRINT... We could pass all *AUTH messages to syslog
> facility AUTHPRIV, all others to SYSLOG (that's what I mean with
> "determine").
>
> 2.
> void admin_log(int uniqueEventId, const char *format_str, ...);
> /* uniqueEventId references an array containing all the other
> information (eventType, priority etc.) necessary */
>
> A compromise between the two options would be to join the argument list
> so that we do not need a uniqueEventId but can provide one.
These look pretty good. I think it is a good idea to
combine the two prototypes though. Couple of questions.
* Should we all an admin to turn off a class of eventTypes
(log auth but not printing)? I'm inclined to always log.
* I think we need both event type and ID (perhaps as bit
masks on how NTSTATUS codes are done in win32).
* I don't really think that we need to use multiple syslog
facilities. I could be persuaded otherwise but I'm more
inclined to use LOCAL_7 or something. The reason is there
is not always a one-to-one mapping between our event type
and a syslog facility.
cheers, jerry
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org
iD8DBQFEe7bvIR7qMdg1EfYRApq2AKCfCpEI9SHeOvZXczqeROoBTd5wdQCgssVc
w67EEPz+sx2L2UnrjpgFhkM=
=SGs9
-----END PGP SIGNATURE-----
More information about the samba-technical
mailing list