On Thu, Jun 20, 2019 at 06:05:57PM +0300, Alexander Miroshnichenko wrote: > On четверг, 20 июня 2019 г. 17:50:11 MSK, Dominick Grift wrote: > > On Thu, Jun 20, 2019 at 05:41:38PM +0300, Alexander Miroshnichenko wrote: > > > Create interface ssh_search_dir to allow ssh_server search for keys > > > in non-standard location. > > > > > > Signed-off-by: Alexander Miroshnichenko > > > --- > > > policy/modules/services/ssh.if | 18 ++++++++++++++++++ > > > 1 file changed, 18 insertions(+) > > > > > > diff --git a/policy/modules/services/ssh.if > > > b/policy/modules/services/ssh.if > > > index 0941f133711e..51c64ded00c4 100644 > > > --- a/policy/modules/services/ssh.if > > > +++ b/policy/modules/services/ssh.if > > > @@ -680,6 +680,24 @@ interface(`ssh_agent_exec',` > > > can_exec($1, ssh_agent_exec_t) > > > ') > > > +######################################## > > > +## > > > +## Search for keys in non-standard location > > > +## > > > +## > > > +## > > > +## Domain allowed access. > > > +## > > > +## > > > +# > > > +interface(`ssh_search_dir',` > > > + gen_require(` > > > + type sshd_t; > > > + ') > > > + > > > + allow sshd_t $1:dir search_dir_perms; > > > > This is generally not allowed. The caller should generally be the source. > > Regardless of the above. Keys should be in user home directories. I > > wonder what specific scenario prompted you to propose this interface? > > GIT hosting software like gitolite/gitosis/gitea manage users ssh keys and > store them own location like /var/lib/gitolite/.ssh . /var/lib/gitolite have > gitosis_var_lib_t type, /var/lib/gitolite/.ssh have gitosis_ssh_home_t type > (in patched policy which I want to submit). > If sshd does not have { search getattr } permissions to full path to ssh key > user fail to login. > Can you propose corret way to give such permissions to multiple policies? > It is incorrect to label /var/lib/gitolite as user_home_dir_t type, IMHO. Yes this sucks. I would probably do the following instead: 1. echo "ignoredirs=/var/lib/gitolite" >> /etc/selinux/semanage.conf 2. semodule -B && restorecon -RvF /var/lib/gitolite 3. gitosis_read_lib_files(sshd_t) Dont bother with labeling /var/lib/gitolite/.ssh differently > > > > +') > > > + > > > ######################################## > > > ## > > > ## Read ssh home directory content ... > > > -- Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02 https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02 Dominick Grift