[Samba-it] OT: problema posix acl

Alessandro Dentella sandro at e-den.it
Wed Mar 9 11:13:41 MST 2011


On Wed, Mar 09, 2011 at 06:23:17PM +0100, Marco Gaiarin wrote:
> Mandi! Alessandro Dentella
>   In chel di` si favelave...
> 
> > Io dico che *in origine* non deve avere file 0700. Se nella sua home i file
> > sono 770, non dovrà fare assolutamente *nulla* e tutto funzionerà. Quando fa
> > la copia del file nella classe terzac, la maschera non inibisce la
> > possibilità di copia
> 
> Mi hai spalancato un mondo.

Ottimo!

> Questo spiegherebbe il funzionamento ''casuale'': le mie home non hanno
> gruppi privati, e può essere che abbia messo la netmask in samba a 700.
> 
> Due domande:
> 
> 1) se ovviamente copio cartelle 700 maschero le ACL, ma se poi do un
>  chmod, le smaschero? Ho fatto una veloce prova e sembra di si, nel
> senso che effettivamente le ACL di defaut vengono propagate a rami di
> cartelle, e sono solo mascherate.

Si, non è che mascheri le ACL (nel senso di nasconderle), ma applichi una
maschera alle acl (solita maschera di bit...): nessun gruppo può avere
permessi maggiori del proprietario del gruppo. Quando cambi la maschera le
ACL tornano 'effective'.

Ti propongo un modo di pensare che, anche se non l'originario, serve per
capire e memorizzare il meccanismo.

  sandro at argoz:~/test_acl$ ll aa
  -rw-------+ 1 sandro sandro 0 2011-03-08 12:47 aa

è vero che c'è il '+' che ti ricorda che ci sono delle ACL, ma sei tentato
di pensare che le permission non sono allargate al gruppo. Nella realtà
poi il file "potrebbe" (non per come sono organizzate le cose nella realtà)
avere delle permission ad esempio al gruppo alunni che non pensiamo.

Allora subentra la risemantizzazione del 'group', Che a questo punto funziona
da maschera, qui è 0 che garantisce che nessun gruppo possa avere permessi
di alcun genere.

Insomma a colpo d'occhio non devi essere ingannato, se c'è --- allora
nessuno deve avere più poteri di ---, neanche per ACL estese.

Guarda inoltre questa sequenza::

  # imposto il gruppo a 770, il file è del gruppo 'sandro'

  sandro at argoz:~/test_acl$ sudo chmod 770 aa
  sandro at argoz:~/test_acl$ sudo chown root aa

  sandro at argoz:~/test_acl$ ll aa
  -rwxrwx---+ 1 root sandro 0 2011-03-08 12:47 aa

  # ora, per perfidia tolgo a sandro i permessi estesi:

  sandro at argoz:~/test_acl$ setfacl -m g:sandro:--- aa
  sandro at argoz:~/test_acl$ ll aa
  -rwxrwx---+ 1 root sandro 0 2011-03-08 12:47 aa
  sandro at argoz:~/test_acl$ getfacl aa
  # file: aa
  # owner: root
  # group: sandro     ##  il gruppo è 'sandro'
  user::rwx
  user:sandro:rwx
  group::r-x
  group:sandro:---    ## il gruppo sandro non ha permessi
  mask::rwx
  other::---

  $ cat aa

  ## Che succede? chi vince? 'sandro' proprietario del gruppo con permessi
  ## rxw o 'sandro' dei permessi estesi con permessi ---?

  vince il primo che viene analizzato dalla sequenza 'Access Check
  Algorithm' [1]


  Riporto sempre da [1] la frase da rileggere che dice con chiarezza questi
  concetti:

    The group class permissions represent the upper bound of the permissions
    granted by any entry in the group class. With minimal ACLs this is trivially
    the case. With extended ACLs, this is implemented by masking permissions
    (hence the name of the mask entry): permissions in entries that are a member
    of the group class which are also present in the mask entry are
    effective. Permissions that are absent in the mask entry are masked and thus
    do not take effect. See Table 2.

[1] http://www.suse.de/~agruen/acl/linux-acls/online/



> 2) se volessi scriptare una cura, quindi, basta un bel:
> 	find /dir -type d -exec chmod 770 {} \;
> 	find /dir -type f -exec chmod 660 {} \;
> o ci sono strategie più furbe?

Questo va bene, poi però devi assicurarti che vengano scritti anche i nuovi
file con 770. (Confidando che non ci siano file eseguibili.... ;-)

> 3) ma quindi a questo punto non sarebbe meglio mettere in samba:
> 	force security mode = 770
>  per gli share con ACL?

Si ma l'OP partiva da una situazione KDE ed io cerco di usare soluzioni che
possano essere funzionanti anche fuori da samba, quindi affidate al puro
fiesystem:

  setfacl -R -m d:g::rxw,d:o::--- /home/*

sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org             Soluzioni libere per le scuole
http://sqlkit.argolinux.org        SQLkit home page - PyGTK/python/sqlalchemy



More information about the samba-it mailing list