I'd love for someone (perhaps you) to implement the security stuff we need. I'm attaching a write up of our plans: - Peter - At 09:24 PM 2/9/99 -0500, you wrote: >How up-to-date is the projects web page? I am looking for >a semester project for my distributed computing class, and >CODA seemed like an interesting (and relevant) subject. I >am quite familiar with Linux, although I've not patched the >kernel before. Anyone have any recommendations/suggestions? > >Noah
This is to summarize the security discussion yesterday. Terms: - local id: an id assigned by the OS - CodaCred: an id passed to Venus by the OS hopefully with platform independent information containing the - PAG - fsuid or euid - real uid of the calling process. Purpose: PAG - see earlier discussion, and below euid, fsuid - the identity of the caller to be used in matching a Codacred against a token ruid - passed for special situations (do we have any?) For each OS the Coda kernel module will provide these three objects for stuffing into a Codacred. Venus will not contain any platform dependent code for authentication, authorization and capabilities. - codaid: the identity of the user as determined by the auth2 server and as used by the fileserver. There will be no codaid corresponding to root. The priviliged codaid's are the members of the Coda group system:administrators. - clog will pass a session key and Local id using pioctl's to Venus. Associated with this collection will be: - a Coda user id to be used in granting permission for operations - an indication on wether to honour the pag or euid/fsuid of the caller. We will call the token euid or PAG based depending on wether Venus matches the PAG or euid of the caller to find the token. conclusions ----------- a) Coda (server and client) will grant permissions based on a codaid associated with the caller, but in exceptional cases Venus will take into account other information passed in the CodaCred. The fileserver will not ever know anything apart from the Codaid of the caller, and use this in conjunction with the authenticated conections. If no codaid is found System:AnyUser will be used. The localid or Codacred will not be used but for identifying the codaid of the caller. b) Coda will not maintain a 0 id, to avoid any similarity to root. Files will be created with the codaid of the caller. c) A chown operation to any user should be allowed, like any other change of attributes, but should squash a setuid bit. d) Coda will never assign suid bits to files not owned by root. The combination of holding localid root and having system:administrator tokens will allow the user to set the suid bit on a file owned by root. Coda will only enforce the possesion of a system:administrator token. e) Root will be allowed to gain Coda tokens but: - it will be made possible for root, to conveniently start a new pag and have tokens for the new pag only. - a warning will be issued, reminding root that tokens may give priviliges to other processes running with root localid. f) To allow for daemons like samba to gain correct permissions for users who have clogged on the Coda client running the samba server, an euid in the cred is used to find the token of the user. Such users of Samba like machines must use the "euid - match" option in clog, that is a non-pag based clog. This means that someone who executes "su" with euid based tokens will lose his previous tokens. Depending on the behaviour of programs like "su" this may or may not be different for PAG based tokens depending on wether su executes a "newpag" (formerly setpag) system call. g) A machine may use a Coda account with a password in a root owned read only file on the local disk to gain Coda tokens. h) New volumes will be created with ACL System:Administrator all, System:anyuser rl. At present we will recommend a site policy of giving System:Administrators "all" rights for easy assistance with repair and resolution. i) Venus and Codasrv will have a "demo" flag which will grant all permissions to the user. This will make it painless to try out disconnected operation. j) Venus will store sessions keys in RVM and not remove them until replaced with a new set. k) Venus will honour expired tokens when the client is disconnected. l) Venus will use the codaid as the owner of the CML m) Update and volutil should use authenticated connections asap. n) Certain pioctl based operations such as hoard, cfs {flushcache, flushobject, mount etc} may seriously affect a coda installation. In addition to having valid tokens in relation to filesystem objects affected, the user may be required to be a) a system administrator (mount,unmount) b) a system administrator _or_ root _or_ primary user: flush, flushobject, hoard