[OpenAFS] Cron jobs without service keytab
Mark Montague
markmont@umich.edu
Tue, 13 Apr 2004 10:10:39 -0400 (EDT)
On Tue, 13 Apr 2004, Lukas Kubin wrote:
> > No. Why don't you want to use keytabs? I'm not saying "you should
> > use keytabs" but if you can tell me why you do not want to use them,
> > I might be able to suggest another solution that would satisfy your
> > requirements.
>
> Sure. The reason is I wish the common users to work with the AFS system
> just like with any other common Linux system both on a multiuser
> application server and their workstations in campus.
> It would bring more administrative work to create and manage such
> specific principals. Also I would have to treat such principals like
> they were another users in our system - ie. I have to create additional
> LDAP, pts entries, set up their ACLs etc.
I don't think that what you want is possible. The reason is that,
unlike most deploments of NFS, AFS servers do not trust the AFS
clients to say who users are -- users have to prove their identities
to the server in order to access their AFS files. This is an
intentional feature of AFS -- some degree of transparancy and
ease of use was given up in favor of security, which is necessary
if AFS was to be a world-wide highly distributed networked filesystem.
Your options here include:
- For each user who wants to run a cron job that needs to
access protected files in AFS, set up an additional
Kerberos principal and PTS entry for them. The Kerberos
principal would be username/cron@REALMNAME and the PTS
principal would be username.cron You then create a keytab
for username/cron@REALMNAME which you put on the machine
that runs the cron job and permit so that only the user can
read it. You then grant the appropriate AFS filesystem
rights to username.cron using the "fs setacl" command so
that a script running with a token obtained from the keytab
can read and/or write to the necessary files in the
user's home directory. You then tell the user that the
first thing their cron job needs to do is get a token.
Russ posted a URL last week to a web page containing some
scripts that might be useful for this, or you can use
the commands:
kinit -k -t /path/to/keytab username/cron@REALMNAME
aklog
This is an additional hassle to set up, but it is in
exchange for real security -- when set up properly, AFS
will protect both the user's identity and their data.
Hopefully, most users won't need to run cron jobs. Of
those users who do need to run cron jobs, many cron jobs
might be able to run with just system:anyuser access to
things in AFS (for example, many cron jobs could be written
to use a temporary data directory on the local machine).
So hopefully, you won't need to set up any keytabs.
- An alternative option is to set up cron to acquire a
token for users. Note that this would be a Kerberos
principal of the form machinename/cron@REALMNAME with
a corresponding PTS entry of machinename.cron. All users
who ran cron jobs would get the same token. This has
the downside that if one user grants machinename.cron
write access to a subdirectory in their home directory,
all other users cronjobs will have write access to this
subdirectory, too. This is less secure and less flexible
than the first option above, and, depending on your system,
you may need to make changes to your cron daemon startup
script, your PAM configuration, your PAM modules, and/or
changes to the cron daemon source code.
Here at the College of Literature, Science, and the Arts at
the University of Michigan, we use the first option above.
AFS comes with more administrative overhead than other filesystems,
but it also has more features and better security. My opinion
is that the administrative overhead is reasonable and worth the
benefits that it brings.
If your requirements are to have something that the users do not
have to do anything special for, ever, then NFS is closer to
meeting your need. Note, however, that you'll be giving up a
lot of the features and security that AFS has. Also note that
some versions of NFS support Kerberos, and in these cases, if
you use the Kerberos support in NFS, you'll have the same sorts
of problems that you are currently having with AFS.
Sorry I can't provide the answer you were looking for.
Mark Montague
LS&A Information Technology
The University of Michigan
markmont@umich.edu