SELinux non consente a oddjobd-mkhomedir di creare la home directory dell'utente in una posizione non standard


9

Stiamo utilizzando SSSD per autenticare gli utenti sui server CentOS. oddjobd-mkhomedir funziona perfettamente quando la home directory predefinita è / home, ma su un server particolare, abbiamo dovuto cambiare la home directory predefinita in / data, che si trova su un mount SAN.

Ora, ogni volta che un utente tenta di accedere, viene rilasciato in una shell bash con il seguente messaggio.

Creating home directory for first.last.

Could not chdir to home directory /data/X.Y.local/first.last: No such file or directory

-bash-4.1$

Vedo il seguente messaggio di rifiuto AVC per ogni tentativo:

type=AVC msg=audit(1492004159.114:1428): avc:  denied  { create } for  pid=2832 
comm="mkhomedir" name="x.y.local"
scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023
tcontext=system_u:object_r:default_t:s0 tclass=dir

Si sono assicurati di cambiare il contesto per / data.

 drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data

Se / data ha lo stesso contesto di / home, perché SELinux sta limitando oddjobd alla creazione di /data/XYlocal/first.last?

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

[AGGIORNARE]

Non sono sicuro se questo è il modo corretto per risolverlo, ma dopo aver aggiunto le tre voci seguenti l'utente è ora in grado di accedere e accedere alle proprie home directory. Per le directory dei nuovi utenti vengono create in base al contesto definito di seguito.

semanage fcontext -a -t home_root_t /data
semanage fcontext -a -t user_home_dir_t /data/x.y.local
semanage fcontext -a -t user_home_t "/data/x.y.local(/.*)?"

È questo il modo corretto per aggirare questo problema?


Non sono sicuro che questo sia rilevante per il tuo problema, ma in passato mi ha causato dolore: linux.die.net/man/8/nfs_selinux
0xSheepdog

Risposte:


4

L'ultima sezione con semanage fcontextè il modo corretto di impostare permanentemente il contesto sì. Dovrai correre restoreconper farlo entrare in vigore però.

restorecon -Rv /data

restoreconprenderà in considerazione qualsiasi cosa /etc/selinux/targeted/contexts/files/file_contexts.local, che dovrebbe avere i tuoi contesti personalizzati che hai appena aggiunto usandosemanage

Per impostare temporaneamente questi contesti, fare riferimento al chconcomando:

chcon -Rv -t home_root_t /data 

1

Quando si riposizionano le home directory, la soluzione migliore è probabilmente quella di utilizzare il meccanismo EQUAL semanage fcontextcome descritto in questa risposta in caso di errore del server :

semanage fcontext -a -e /home /data

Questo per garantire che tutte le regole della posizione di casa originale vengano applicate anche a quella nuova.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.