[OpenAFS] Is member of a machine group honored as
system:authuser?
Garance A Drosehn
drosih@rpi.edu
Fri, 26 Jan 2018 16:45:45 -0500
On 25 Jan 2018, at 17:50, Ximeng Guan wrote:
>
> The actual scenario is that there are daemon service binaries in that
> installation path which we would like each machine of the group to
> launch by its local root, every time the machine is rebooted (through
> SysVinit script or systemd). You may think of those machines as the
> workhorse part of a simulation program that listens on certain port
> for job submissions by client users. The program is parallelized by
> MPI and can potentially distribute a simulation job among those
> machines.
>
> In other words while we do want to block machines out of the machine
> group from accessing the AFS path, for those in the machine group we
> would like them to gain access to the specific AFS path at boot, right
> after the AFS service is up but preferably without the need of any
> human user authentication.
>
> I think that's a more complete description of my usage scenario. I
> hope this discussion helps others who may have similar need in the
> future.
Hmm. Well, there's another tactic which I use in a few situations. I'm
not sure if it would work for yours.
I create a host-specific key in our krb5 database. I take that and put
it in the appropriate file under /etc on the machine which needs access.
I then do a 'pts createuser rcmd.<host>', where <host> is the short
hostname of the host in question. So I might create a krb5 hostkey for
'host/garance.test.rpi.edu@RPI.EDU', and add a PTS user for
'rcmd.garance'.
Then if I am logged in as root on that machine, I can type:
kinit -k # no password needed
aklog # no password needed
And then 'root' will have access to things which have been permitted to
rcmd.garance in our campus space. This is different than machine-group
tactic, because it is only userid root on that machine who will have
access to the directories which have been permitted to rcmd.<host>.
Other users on the same machine will not gain access.
But if your daemon service binaries are running as root, then maybe
that'll work for you. You'd also have to pay attention to
token-expiration times, which you wouldn't have to do with
machine-groups.
Then to get rid of access you could do:
unlog
kdestroy
But note that means that ALL root-owned processes will lose access. So
if you have multiple daemons using aklog, then unlogging from one of
them will cause all of them to lose access. So that's a significant
concern when doing unlog/kdestroy.
Yet another tactic we do is to create some fake user in PTS, and stash
away the password to it somewhere where it is "safe" (say, as a file
inside of /etc/security). We could then have some daemon process start
up use that hidden password to authenticate to the fake user, and then
that daemon will have access to the directories permitted to the fake
user. Once again you'd have to pay attention to token-expiration times
(via one method or another).
All of these were initially used at RPI before I took over maintenance
of the AFS cell at RPI, and I suspect that which method was used
depended on who was setting up the daemon or other service.
--
Garance Alistair Drosehn = drosih@rpi.edu
Senior Systems Programmer or gad@FreeBSD.org
Rensselaer Polytechnic Institute; Troy, NY; USA