Vous êtes sur la page 1sur 14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

UsodeListasdeControldeAcceso(ACLs)en
Linux
IgnacioArenazaNuo
Proyectoescomposlinux.org(iarenaza@escomposlinux.org)
Copyright2003IgnacioArenazaNuo
Permisoparacopiar,distribuiromodificarestedocumentodeacuerdoalosterminosdelaLicenciade
DocumentacionLibredeGNU(GNUFreeDocumentationLicense),Version1.1oposterior,publicada
porlaFreeSoftwareFoundation.EstedocumentonocontieneSeccionesInvariantes(withnoInvariant
Sections),niTextosdePortada(withnoFrontCoverTexts)niTextosdeContraportada(withnoBack
CoverTexts).
Historialderevisiones
Revisin$Revision:1.4$
Submitted.

$Date:2004/03/2821:08:16$

Resumen
Elpresentedocumentomuestralasposibilidadesdelmodelodepermisosbasadoenlistasdecontrolde
accesooACLs.Unavezdiscutidoelmodelo,semuestracomoimplementardichomodelodeseguridad
enunsistemaGNU/Linuxycomosepuedenaprovecharlasposibilidadesqueestemodeloofrece,tanto
enelserviciobsicodeaccesoaficheroscomopormediodeunsistemadecomparticindeficheroscon
SAMBA.
Tabladecontenidos
1.ListasdeControldeAcceso
1.1.Introduccin
1.2.ACLsenLinux
1.3.CmoincorporarACLsanuestrosistemaLinux
2.UsodelasACLs
2.1.CreacindeunaACLbsica.
2.2.ACLspordefecto
3.ACLsySamba
3.1.ValoresdeConfiguracindeWinbindenelficherosmb.conf
3.2.ConfiguracindelNameServiceSwitch
3.3.Ejecucindeldemoniowinbindd
4.Licencia
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

1/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

1.ListasdeControldeAcceso
1.1.Introduccin
UnadelascaractersticasqueseechanenfaltaenlossistemasLinuxactuales,especialmenteenentornos
corporativos,eslaposibilidaddeespecificarlospermisosdeaccesoalosficherosconmayor
granularidad.LossistemasLinuxsiguenelmodelodepermisosUnixtradicionalsegementandoeltipode
accesoentrescategoras:
Elpropietariodelfichero(User)
Elgrupoalqueperteneceelfichero(Group)
Elrestodeusuariosdelsistemaquenoestnenningunadelasdoscategorasanteriores(Other).
tambinconocidocomomodeloUGO(User,Group,Other).
Sinembargo,estastrescategorasserevelaninsuficientesenunagrancantidaddesituaciones,donde
deseariamospoderespecificarpermisosdiferenciadosparavariosusuariosogruposdeterminados.
AquesdondeentranenjuegolospermisosbasadosenListasdeControldeAcceso,msconocidos
comoACLs.Enestesistemadepermisoslosficherosnotienenunjuegofijodepermisos(comoenel
modelotradicional,quetienetrespermisosyslotres),sinoquelospermisosdelficherosonenrealidad
unalistadeEntradasdeControldeAcceso(oACEs).CadaunadeestasACEscontieneunpar
(usuario/grupo,permiso)queindicauntipodeaccesodeterminadoparaunusuarioogrupo,yelconjunto
detodasellasformanlaACLquemarcaeltipodeaccesopermitidoenunfichero.
Estesistemaeselutilizadoentreotros,porlossistemasdeficherosNTFS(deWindowsNTysucesores),
elsistemaUFSdeSolarisyelsistemaHFSdeHPUX.

1.2.ACLsenLinux
Hayundatoquesesueledesconocersinembargoyesqueelsistemadeficherosext2,desdesudiseo
original,previlainclusindeestetipodesistemasdecontroldeaccesoyestabanincludoslos
enganches(hooks)necesariosparasuimplementacinposterior,deforma100%transparentey
compatiblehaciaatrs.
Puesbien,desdehacevariosaosexistenvariosproyectosparaincorporarlossistemasbasadosenACL
enlosdiferentessistemasdeficherossoportadosporLinux,yespecialmenteenext2(porsereltipode
sistemadeficherosmsextendidohastaelmomentoenlossistemasLinux).
UnodeelloseselproyectoRSBAC,cuyosobjetivossonmuchomsambiciosos(realmentemuchoms,
suobjetivoesconseguirunsistemaLinuxconunniveldeseguridadequivalentealnivelB1delantiguo
LibroNaranjaTCSEC),peroqueincorporatambinunaimplementacin100%operativadeACLspara
ext2.
OtrodeelloseselproyectoLinuxExtendedAttributesandAccessControlLists,queoriginalmentetena
comoobjetivoincorporarelsistemadeACLsalsistemadeficherosext2(yposteriormenteext3cuando
esteapareci).Posteriormente,alserelsistemadeACLselegidoporelequipodeSambaparasu
implementacindeACLssobreext2(parapoderofertarrecursoscompartidosviaSMBconACLsal
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

2/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

igualquelossistemasWindowsNTyposteriores)hasidoelcandidatooficialdeACLsenext2parasu
inclusindefinitivaenelkernel.Dehecho,desdelaversin2.5.23formapartedelkernelestndar.
Paraellosehahechounesfuerzodecoordinacinyestandarizacinbastantegrandeconlos
desarrolladoresdeotrossistemasdeficheroscomoXFSyJFS(principalmente,aunquenoslocon
estos)quetambinsoportabanACLsdesdesuorigen.Laideaeraofertarunacapaabstractacomnenel
VFS(VirtualFileSystem)deformaquelasaplicacionesyelrestodelsistemaoperativotrabajasenpor
igual,yconlamismaAPI,concualquieradelossistemasdeficherosquesoportasenACLs(ext2/ext3,
XFS,JFS,ReiserFS,etc.).
Elresultado:yaestndisponibleslossistemasdeficherosconACLsenelncleoestndar,ensuversin
dedesarrollo.Sinembargo,noesnecesarioesperarhastalaestabilizacindelactualncleodedesarrollo
paradisfrutardelasventajasdelasACLs.Todoslossistemasdeficherosmencionadosarribaestn
disponiblesbiencomopartedelkernelestndar,biencomoparches,paralasversionesestablesdel
ncleo.Ysonparchesconcalidaddeproduccin,conlocualsonperfectamenteutilizablesenentornos
cuyaestabilidadseaunacondicinindispensable.
Enelcasodelsistemadeficherosext2/ext3,quesonelobjetivodelproyectoLinuxExtendedAttributes
andAccessControlLists,lasACLssoninclusotransparentesparaaquellosncleosquenolleven
incorporadoslosparchesnecesarios,deformaquesiaccidentalmentesearrancaelsistemaconunncleo
sinsoporteparaACLsnoocurreabsolutamentenada,salvoobviamentequenodisponemosdelas
caractersticasavanzadasdelasACLsyslotenemosanuestradisposicinelmodelodepermisos
tradicional.
Acondicindequetengamosunejecutabledee2fsckquesoporteACLs,inclusosielncleonolo
soporta,podemosejecutare2fscksobreelsistemadeficherosdeformasegura.Encasodetenerun
e2fscksinsoportedeACLs,elnicoproblemaquetendremosenestecasoeslaprdidadelasACLs,
peronuncalaprdidadedatos.
Lasversionesdee2fsprogs(elpaquetedondeseincluyenlasutilidadesdeext2)apartirdelaversion
1.28yaincorporansoportedeserieparaAtributosExtendidos(ExtendedAttributesoEAs),queesla
caractersticadelsistemadeficherosnecesariaparapoderimplementarlasACLs.Enelsitiodelpropio
proyectosepuedenencontrarparchesparaalgunasversionesanterioresdee2fsprogs,encasodeser
necesario.

1.3.CmoincorporarACLsanuestrosistemaLinux
QudebemoshacerportantoparadisfrutardeACLsennuestrossistemasdeficherosext2/ext3ya
mismo?Loquesigueesunresumendelasinstruccionesdadasenelpropiositiodelproyecto,dondese
indicapasoapasotodoelprocesoaseguir.Voyapresuponerenestecasoquenuestrosistemano
disponedesistemasdeficherosconEAsyACLs,conlocualmevoyasaltarlospasosdecopiade
respaldodelasACLsactuales(ylalimpiezadelsistema).
1. Loprimeroesobtenerunacopiadee2fsprogsquesoporteEAsyACLs.Laversion1.28o
posteriorservir.Encasocontrario,hayqueobtenerlosparchesmencionadosarribaylasfuentes
denuestraversionactualdee2fsprogs(seguramentenuestradistribucintendrdisponibleslas
fuentesensurepositoriohabitual)yconstruirdenuevolosejecutableseinstalarlosenelsistema.
Alternativamentepodemosoptarporinstalardirectamenteunaversin1.28oposterior
directamente,sinparchearlaactualmenteusadaennuestradistribucin.
2. AcontinuacindebemoscompilarunkernelconsoporteparaEAsyACLs.Paraellodebemos
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

3/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

descargarlosparchescorrespondientesanuestroncleoyaplicarlosdelasiguienteforma(el
directoriolinux/indicalaubicacindondetenemosdesempaquetadaslasfuentesdelncleo):

$cdlinux/
$zcat../linuxa.b.cxattrx.y.z.diff.gz|patchp1
$zcat../linuxa.b.caclx.y.z.diff.gz|patchp1

Unavezparcheadoesnecesarioincluirenlacompilacinlassiguientesopcionesalmenos
(disponiblesenlacategoriaFileSystems):

CONFIG_FS_POSIX_ACL=y(POSIXAccessControlLists)
CONFIG_EXT3_FS_XATTR=y(Ext3extendedattributes)
CONFIG_EXT3_FS_POSIX_ACL=y(Ext3POSIXAccessControlLists)
CONFIG_EXT2_FS_XATTR=y(Ext2extendedattributes)
CONFIG_EXT2_FS_POSIX_ACL=y(Ext2POSIXAccessControlLists)

Losnombrespuedenvariarligeramentedeunaversindelkernelaotra.Lasopciones
xxx_XATTRsonparaactivarlosAtributosExtendidos,ylasopcionesxxx_POSIX_ACLpara
activarlasACLs.Losvaloresxxx_EXT2_xxxsonparasistemasdeficherosext2ylosvalores
xxx_EXT3_xxxparaext3.
Existenotrasdosopcionesms(almenosenelkernel2.4.19,queeselqueestoyusandopara
escribiresto):
I. Ext2extendedattributeblocksharing(IG_EXT2_FS_XATTR_SHARING):quepermiteel
usodeunmismobloquecomnparaalmacenarlosatributosextendidosdevariosnodosi,
enelcasodequedichosatributosseanindnticosentodoslosnodosi.
II. Ext2extendeduserattributes(CONFIG_EXT2_FS_XATTR_USER):quepermitealos
procesosdeusuarioalmacenaratributosextendidosadicionalesenlosnodosi.Porejemplo
paraalmacenarcualquiertipodeinformacinadicionalquedichosprocesosdeseen,comoel
juegodecaracteresusuadoenelfichero(ocualquierotracosaquesenosocurra).
Porsupuesto,losdosvaloresanterioresexistendeidnticaformaparaelsistemadeficheroxext3.
3. ElsiguientepasoesconstruirlasutilidadesquesirvenparagestionarlosAEsylasACLsdelos
ficheros:getfattr,setfattr,getfacl,setfacl,etc.Tenemosquedescargarelpaqueteattrquees
necesarioparapoderconstruirdespueselpaqueteacl,queincluyelasutilidadesdegestindelas
ACLsens(elpaqueteattrincluyeademsalgunasutilidadesdegestindeatributosextendidos).
Esconvenienterevisarprimerosiexistenversionesyaempaquetasparanuestradistribucinde
Linux(tantoDebianGNU/LinuxcomoRedHat,entreotras,lastienen),yqueseaunaversinde
lasmismasqueseacompatibleconlarevisindelparcheaplicadaalncleoqueacabamosde
construir
Encasodenotenerlasennuestradistribucin,nosercompatiblesosimplementequerertenerla
ltimaversindisponiblecompiladapornosotrosmismos,estossonlospasosaseguir
(necesitaremoselentornodedesarrolloautoconfytodaslautilidadesdecompilacin/desarrollo
habituales,msalgnretoquemanual):
I. DesempaquetarlasutilidadesdegestindeAtributosExtendidos(attr2.0.10.src.tar.gzenel
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

4/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

momentodeescribiresto):

tarxzvfattr2.0.10.src.tar.gz
cdattr2.0.10

Acontinuacintenemosquecompilarlasherramientasens.Sinuestradistribucines
RedHatoDebianGNU/Linux,lasutilidadesvienenconlosficherosdeespecificaciny
controlnecesariosparacrearpaquetesnativos(verelficherodoc/INSTALL).
Encasocontrario,debemoscompilartododesdeceroconlassiguientesinstrucciones(enel
directoriorazdelosficherosextrados):

autoconf
./configure
make
suroot
makeinstallinstalllibinstalldev

Esteltimomtododejartodoslosejecutablesmslasbibliotecasdefuncionesdemanejo
deAEsbajo/usr/local.Engeneralelficherodoc/INSTALLdalasindicacionesnecesarias
paraobtenerlosejecutablesencualquieradeloscasos(includasalgunasindicacionespara
deshabilitarelcdigodedepuracin,etc).
II. DesempaquetarlasutilidadesdegestindeACLs(acl2.0.18.src.tar.gzenelmomentode
escribiresto):

tarxzvfacl2.0.18.src.tar.gz
cdacl2.0.18

Acontinuacintenemosquecompilarlasherramientasens.Comoenelcasoanterior,si
nuestradistribucintieneyacompiladasestasutilidadesyconcompatiblesconlaversinde
losparchesincludosenelncleo,lomssencilloesusarlospaquetesnativosdela
distribucin.
Encasocontrario,debemoscompilartododesdeceroconlassiguientesinstrucciones(enel
directoriorazdelosficherosextrados):

autoconf
./configure
make
suroot
makeinstallinstalllibinstalldev

Esteltimomtododejartodoslosejecutablesmslasbibliotecasdefuncionesdemanejo
deACLsbajo/usr/local.Comoenelcasoanterior,elficherodoc/INSTALLdalas
indicacionesnecesariasparaobtenerlosejecutablesencualquieradeloscasos.
III. PorltimodebemosobtenerunaversindelpaquetefileutilsparcheadoparasoportarEAsy
ACLs.DelocontrarionopodremoscopiarlosficherosconsusAEsyACLs,sacarenlos
listadoslaindicacindequehayaclsadicionalesalospermisostradicionales(yaquese
siguenmanteniendolospermisostradicionales),etc.
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

5/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

Enelpropiositiodelproyectosepuedeencontrarelparcheparaalgunasversionesdel
paquetefileutils.Engeneralestaeslapartemscomplicadadelproceso,alserunpaquete
completamenteexternoalsistemadeficherosylasutilidadesext2/ext3.Losproblemasse
presentarnsilaversindefileutilsquevamosautilizarnosecorrespondenexactamentea
lasindicadasenlosparches,yaquetendremosqueintegrarpartedeloscambiosamano,y
esosiempreesmscomplicado.
Unavezcompiladoeinstaladotodolomencionadoenlospuntosanterioresyatenemostodoslos
elementosnecesariosparapoderdisfrutardelosEAsylasACLsennuestrossistemasdeficheros
ext2/ext3.Slonosquedaunltimopaso,indicaralncleoqueenundeterminadosistemadeficheros
deseamosusarACLs(yEAs).
Paraellodebemoseditarelfichero/etc/fstabyaadirunaopcinadicionalaladeaquellossistemasde
ficherosalosquequeremosactivarlasACLs:acl.Tambinpodemosaadirunaopcinparaindicar
explcitamentequenoqueremosusarlasACLsenunsistemadeficheros,aunsidichosistemade
ficheroscontieneACLs:noacl.
ExisteunjuegodeopcionesadicionalparaactivarodesactivarelusodelosAEsdeusuario(sihemos
optadoporcompilarlosennuestroncleo):user_xattrynouser_xattr.Porcierto,quelosvalorespor
defectoparatodoslossistemasdeficherosext2/ext3encasodenoespecificarnadasonnoacly
nouser_xattr
Unavezhecholoanterior,slonosrestaarrancarconelnuevoncleoqueacabamosdecompilary
voil!,yatenemosnuestrasACLsdisponiblesylistasparausar.

2.UsodelasACLs
UnavezquehemoscompiladoelkernelconsoporteparaACLsyquehemoscompiladolasherramientas
necesariasparapodertrabajarconellas(ademsdeparchearaquellasutilidadesdegestindeficherosy
sistemasdeficherosparaquereconozcanlasACLsylasrespetenysepaninterpretarlas),podemosya
dedicarnosalagestindelaspropiasACLsensi.
Paraellodisponemosdedosutilidadesprincipalmente:
getfacl:quenospermiteconsultarlasACLsdeunficherodado.
setfacl:quenospermitemodificarlasACLsdeunficherodado.
Ambasutilidadessehayanperfectamentedocumentadasensusrespectivaspginasdelmanual
(setfacl(1)ygetfacl(1)),ypodemosencontrarunapequeaintroduccinenlapginadelmanualde
acl(5),vamosaveraqualgunosejemplossencillosqueilustrarnelusobsicodeestasutilidades.

2.1.CreacindeunaACLbsica.
ExistencasosenloscualeseltradicionaljuegodepemisosUGO(User,Group,Others)noessuficiente.
Casosenlosquedesearamosquemsdeunusuarioomsdeungrupopudieseteneraccesoaun
fichero,peroconpermisosdiferenciados.ConelmodeloUGOestonoesposible,puestoqueslo
tenemossitioparalospermisosdeunnicoUsuarioounnicoGrupo.TodolodemscaeenelOther(el
resto).ConlasACLsestoessencillo.
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

6/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

Vamosapresuponerquetenemosundirectorioquecontieneunaseriedeficherosydossubdirectorios(a
suvezconficheros)comoseindicaenlasiguientefigura:

Tenemosasimismolossiguientetiposdeusuariosdiferenciados:
1. Losusuariosdelgrupodesistemasdeinformacin,quedebenteneraccesocompletoatodoslos
directoriosyficheros,parasumantenimiento.Llamaremosaestegruposistemas.
2. Losusuariosdelgrupodedesarrollo(llamaremosaestegrupodesarrollo),quedebenteneracceso
delecturayescritura(yejecucinensucaso)enelprimersubdirectorioytodossusficherosy
subdirectorios.Enestedirectorioesdondesedesarrollanlasnuevasversionesdelsoftwarequeusa
eltercergrupo.
Asimismodebeteneraccesodelectura/escrituraalsegundodelossubdirectoriosparaimplantar
lasnuevasversionesestablesdelsoftware.
3. Losusuariosdeexplotacin.Estegrupodebeteneraccesoenmodolectura(yeventualmente
ejecucion)sobrelosficherosdelaaplicacion.Llamaremosaestegrupoexplotacion.
4. Elrestodeusuariosdelsistemanodebentenerningntipodeaccesoaningunodelosficheroso
subdirectorios.
ConlascondicionesanterioresesimposibleusarelmodelodepermisostradicionalUGO,puestoque
tenemostresgruposdeusuariosdiferentes,sincontarelrestodeusuariosdelsistema.Esosignificaque
conunslogrupodeusuariosconpermisosasignadospordirectoriooficheronoesposibleacomodar
lospermisosparalostresgrupos.
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

7/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

UtilizandoACLsesfcilresolverelproblema,puestoquepodemosasignarunjuegodepermisos
diferenteparacadagrupodeusuarios.ParaellodebemoscrearlasACLsnecesariasparacadagrupode
usuariosydirectorioofichero.
1. Tenemosquedarpermisoscompletosalgrupodesistemassobretodoslosficherosydirectorios
implicados.Paraellousamossetfacldelasiguienteforma:

setfaclbkRdir_raiz
setfaclRmg:sistemas:rw

Vayamosporpartesconlasintaxisdesetfacl:
EnelprimercasousamoslaopcionbparaborrarlaACLqueyapudieratenereldirectorio
raz.UsamostambinlaopcinkparaborrarlaACLpordefectoquepudieratenerel
directorioraz(mssobreestodespus),yporltimousamoslaopcinRparaaplicarlos
cambiosdeformarecursivaatodoloquecuelgadeldirectorioraz.Conestoconseguimos
tenertodolimpioylistoparaempezar.
TericamentelaprimereveznohacefaltalimpiarlaACLpuestoqueannohemos
asignadoningunaACE,perodepasoaprovechamosparamostrarcomosehace:)
Enelsegundocasoindicamosdenuevoquequeremosaplicardeformarecursivalos
cambios(opcinR)peroestavezledecimosquequeremosmodificar(m)laACLdel
objetoencuestin.EnestecasoesnecesarioademsindicarelvalordelaACEque
deseamosaadiromodificar.setfacldistingueentreasignarunaACL(opcins)enlacual
seeliminanlasACEsexistentesyseaadelaACEespecificadaenlaorden,ymodificaruna
ACL(opcinm)enlacualpodemosmodificaroaadirunaACE.
EnestecasoqueremosaadirunanuevaACE.ParaellodebemosescribimoslaACEque
nosinteresa:

g:sistemas:rw

TodaslasACEstienentrescomponentesseparadaspor':'(enelcasodelasoperacionesde
borradodeACEseltercercomponenteesopcional).Elprimerodeloscomponentesindicasi
setratadeunACEdeusuario(valoru)odegrupo(valorg).Inclusoesposibleasignar
ACEsalgrupodeusuariosresto(other),peroestonosueleserhabitual,asqueomitiremos
lasintaxis(sepuedenencontrarmsdetallesenlapginadelmanualdesetfacl(1)).
ElsegundodeloscomponenteseselnombredeusuarioogrupoalqueseleaplicalaACE.
Sepuededarelnombresimblicooelvalornumricodeluidogidcorrespondiente.El
tercercomponenteeselvalordelpermisoasociadoaestaACE,ypuedeseruna
combinacincualquieradelasletrasr,w,xy,ounvalornumricooctal(comoenchmod).
Portanto,ennuestrocasotenemosqueesunaACEdegrupo(g),queseaplicaalgrupode
sistemasyqueleestamodandolospermisosdelecturayescritura(rw).
2. Acontinuaciontenemosquedarpermisosalgrupodedesarrollotantoeneldirectoriosubdir_1y
todosucontenido,comoeneldirectoriosubdir_2ytodosucontenido.Sinembargonotenemos
quedaraccesoalosficherosquecuelgandirectamentededir_raiz.Paraellousamossetfaclconla
sintaxisexplicadaenelpuntoanterior:
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

8/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

setfaclRmg:desarrollo:rwdir_raiz/subdir_1
setfaclRmg:desarrollo:rwdir_raiz/subdir_2

3. Porltimotenemosquedarpermisosalgrupodeexplotacineneldirectoriosubdir_2ytodosu
contenido:

setfaclRmg:explotacion:rxdir_raiz/subdir_2

Lonormalenestepuntoescomprobarcualessonlospermisosrealesquetienencadaunodelosficheros
ydirectoriosexistentes,paraversiefectivamenteseajustanalosrequisitosplanteados.
ParaellopodemosusargetfaclparavercualessonlasACLdecadaunodelosdirectoriosoficheros
implicados.Lasintaxisessencilla:

getfaclfichero...

Silousamosparaverelresultadodelasrdenesanteriorestenemos:

#getfacldir_raiz
#file:dir_raiz
#owner:root
#group:root
user::rwx
group::rx
group:sistemas:rw
mask::rwx
other::rx

Ellistadodepermisosqueobtenemosalejecutargetfaclsecomponedeentradasdetipouserygroup,
ademsdelasentradasparamaskyother.Enelcasodelasentradasuserygroup,tendremossiempreuna
entradaparaelpropietariodelficheroyelgrupodelfichero(sonlaslneasquenoindicanunusuarioo
grupoconcreto)ytantaslneasadicionalescomoACEsdeesetipohayamosasginadoalficheroo
directorio.LaentradaothereslaentradadelpermisotradicionalotherdelmodeloUGO.
Laentradamaskesespecial.Esaentrada,quesepuedemanipularconsetfaclpermiteespecificarel
mximodepermisosquesepuedenasignarendichoficheroconlasACEsdeusuarioygrupo.
VeamosahoralasACLdelrestodeficherosydirectorios:
#file:dir_raiz/fich_1#file:dir_raiz/dir_1/fich_4
#owner:root#owner:root
#group:root#group:root
user::rwuser::rw
group::rgroup::r
group:sistemas:rwgroup:sistemas:rw
mask::rwgroup:desarrollo:rw
other::rmask::rw
other::r
#file:dir_raiz/fich_2
#owner:root#getfacldir_raiz/dir_2
#group:root#file:dir_raiz/dir_2
user::rw#owner:root
group::r#group:root
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

9/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

group:sistemas:rwuser::rwx
mask::rwgroup::rx
other::rgroup:sistemas:rw
group:desarrollo:rw
#getfacldir_raiz/dir_1group:explotacion:rx
#file:dir_raiz/dir_1mask::rwx
#owner:rootother::rx
#group:root
user::rwx#getfacldir_raiz/dir_2/fich*
group::rx#file:dir_raiz/dir_2/fich_5
group:sistemas:rw#owner:root
group:desarrollo:rw#group:root
mask::rwxuser::rw
other::rxgroup::r
group:sistemas:rw
#getfacldir_raiz/dir_1/fich*group:desarrollo:rw
#file:dir_raiz/dir_1/fich_3group:explotacion:rx
#owner:rootmask::rw
#group:rootother::r
user::rw
group::r#file:dir_raiz/dir_2/fich_6
group:sistemas:rw#owner:root
group:desarrollo:rw#group:root
mask::rwuser::rw
other::rgroup::r
group:sistemas:rw
group:desarrollo:rw
group:explotacion:rx
mask::rw
other::r

2.2.ACLspordefecto
Todoloanteriorestmuybien,perotieneunproblema:losficherosydirectoriosnuevosquesecreenno
vanatenertodasesasACLsconlosvaloresadecuados,yportantotendremosqueestarcadadosportres
ajustandolosvaloresdelasACLsconlasrdenesanteriores.Evidentementeesonoesoperativoen
absoluto.EnnuestraayudalleganlasACLspordefecto(enrealidadhabraquehablardeACEspor
defecto,peroladocumentacinhabladeACLspordefecto,asquemantendremoslamismaterminologa
paranocrearmsconfusin).
LasACLspordefectonospermitenindicarculeseljuegodeACEsquequeremosqueseapliquen
automticamentealosnuevosficherosydirectoriosquesecreendentrodeundirectoriodado.Sediceen
estoscasosquelospermisosseheredandesdeeldirectoriopadre.
LasintaxisesidnticaaladeunaACEnormal,conladiferenciadequedebemosusarademslaopcin
d:

setfacldmg:sistemas:rwdir_raiz
setfacldmg:desarrollo:rwdir_raiz/dir_1
setfacldmg:desarrollo:rwdir_raiz/dir_2
setfacldmg:explotacion:rwdir_raiz/dir_2

SiusamosgetfaclparaverlaACLdeldirectoriorazporejemplo,tenemoslosiguiente:

#getfacldir_raiz

http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

10/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

#file:dir_raiz
#owner:root
#group:root
user::rwx
group::rx
group:sistemas:rw
mask::rwx
other::rx
default:user::rwx
default:group:sistemas:rwx
default:group::rx
default:mask::rwx
default:other::rx

Esdecir,seaadenunaseriedeACEsespeciales,detipodefaultquecontienenlainformacinautilizar
paralosnuevosficherosydirectoriosquesecreendentrodeste.

3.ACLsySamba
Apartirdelaversion2.2.0deSamba,esteincorporasoporteparaACLssielsistemaoperativonativolo
soporta.SihemosactivadolasACLscomoseindicaarribaennuestroncleo,slodebemosinstalarlas
bibliotecasdedesarrollodeatributosextendidos(libattr.aylibattr.h)ylistasdecontroldeacceso
(libacl.aylibacl.h)ennuestrosistemaparapoderrecompilarSambaconsoporteparaACLsnativo.Si
hemosseguidolasinstruccionesdecompilacineinstalacindadasarriba,estartodolonecesarioya
instalado.
Unavezcompiladoyparapoderusarloesnecesarioinstalarlasbibliotecasdeenlacedinamicode
atributos(libattr.so)ylistasdecontroldeacceso(libacl.so)enloslugareshabituales.Denuevo,sihemos
seguidolasinstruccionesdemsarriba,yatendremosinstaladotodolonecesario.
AhoraslonosrestacompilarsambaconlaopcindesoporteparaACLs.Loniconecesarioeneste
casoes,alahoradelanzarlaorden./configuredebemosaadirlaopcionwithaclsupportalalistade
opcionesqueusamoshabitualmente:
./configurewithaclsupport...otrasopcionesadicionales

ycompilareinstalarlosnuevosbinarios.ApartirdeestemomentoSambacontienetodoelcodigo
necesarioparatraducirlasACLsdelprotocoloSMBenACLsnativasyviceversa,conlocualtenemos
soportecompletoparaelmodelodepermisostradicionaldeMicrosoftWindowsNToposteriores.
Sinembargo,loanteriorporlogeneralnoessuficientesiutilizamosSambaintegradoenundominioNT
o2000(enmodomixto,yaquelaversinestabledeSamba2.2.xnotienesoporteparamodonativode
ActiveDirectory).Enestecasoqueremosusarlalistadeusuariosygruposdelpropiodominiopara
asignarlospermisosyACLsdelrecursocompartidoporSamba.
Locualsignificaquedichascuentasdeusuarioygrupodebenexistirenelsistemaoperativoanfitrin
dondeseejecutaSamba,yaquelasACLsdelsistemaoperativolascreaelncleodeLinuxyportanto
debeusarUIDsyGIDsexistentesenelsistema.
Lasolucinesdardealtatodasesascuentasenelsistemaanfitrin.Perosilohacemosdeformamanual
tenemosdosgrandesinconvenientes:
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

11/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

1. Elnmerodecuentaspuedesermuyalto(grancantidaddetrabajo)ypodemosnoconocerlas
contraseasdebuenaparte(olatotalidad)dedichascuentas.
2. Apartirdeestemomentotenemosdosbasesdedatosdeusuariosquemantenerdeforma
sincronizada(manualmente),locualessiempreundesastreapuntodesuceder.
PorsuerteloschicosdeSambalohantenidoencuenta,yapartirdelaversion2.1.xdeSambahan
incorporadounnuevocomponentealafamiliadesolucionesSMB:winbind.
WinbindesunmduloqueseintegraenelsistemaNameServiceSwitch(NSS)yqueesuncomponente
msdelsistemaquepuedeenumerarusuariosygrupos.Seuneasalsistematradicionalbasadoen
ficheroslocalesyalossistemasdegestindeusuariosbasadosenredcomoNIS,NIS+oLDAPentre
otros.Esportantouncomponentemsquesecompilaconelrestodesambayquegeneraunaseriede
biblitecasdeenlacedinmicoparaelsistemaNSS.
LonicoquetenemosquehacereslanzarlaejecucindeWinbind(correcomoundemoniodesistema),
aadirenelficherodeconfiguracindeSambaunaspocasdirectivasdeconfiguracindeWinbindpara
indicarlelosrangosdeUIDsyGIDsagestionar,yconfigurarelNameServiceSwitchparaqueconsulte
aWinbindcuandonoencuentrelosusuariosenelrestodesubsistemasconfigurados.Comoelsistema
NSSutilizacachsdenombres,elrendimientodeWinbindesbastanterpidoinclusoensistemascon
unospocosmilesdeusuarios(elautorloutilizadeformarutinariaconunas1.000cuentasdeusuariosen
unaredderealocalconunimpactodevelocidadaceptable).

3.1.ValoresdeConfiguracindeWinbindenelficherosmb.conf
Loprimeroquetenemosquehacereseditarelficherosmb.confyaadirlosparmetrosquequeremos
queutilicewinbindd(eldemonioqueofertaelservicioWinbid).Paraellotenemosqueaadirlas
directivas:

winbindseparator="."
#usarlosujidsde10000a20000paralosusuariosdeldominio
winbinduid=1500020000
#usarlosujidsde10000a20000paralosgruposdeldominio
winbindgid=1500020000
#permitirlaenumeraciondelosusuariosygruposdeldominio
winbindenumusers=yes
winbindenumgroups=yes
#tiempo,ensegundos,paraelcacheodelainformacion
winbindcachetime=60

Donde:
1. winbindseparator:indicaelcarcterausarcomoseparadorentreelnombredeldominioalque
perteneceSambayelnombredeusuarioogrupoindividual.Winbindconstruyenombresde
usuariosdeltipoDOMINIO_separador_USUARIOyDOMINIO_separador_GRUPO.Por
ejemplo:ESCOMPOSLINUX.iarenazausandoelvalorindicadoenelejemplodearriba.
2. winbinduids:indicaelrangodeUIDsdelsistemaanfitrionqueWinbindusaparamapearlos
usuariosdeldominioNTenlosusuariosnativosdelsistemalocal.LoquehaceWinbindescrear
deformaartificialtantosusuarioslocales(UIDs)comousuarioshayaeneldominio,yhaceruna
asignacionestticaentreambos.Estainformacinseguardaenunficherodebasesdedatosque
convienenoperder(llamadowinbindd_idmap.tdb,ubicadoen/var/lib/sambaenelcasodeDebian
http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

12/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

GNU/Linux)oborrar,yaquelaasignacionpuedeserdiferentelaproximavezqueseconstruyala
basededatos(deformaautomaticaporpartedeWinbindsivequeestafalta).
EsmuyimportanteasegurarsedequeelrangodeUIDs(yGIDsparaelvalorsiguiente)noestn
siendoyausadosporotrossubsistemasdeenumeracin/validacindeusuarios(NIS,NIS+,LDAP,
etc.)
3. winbindgids:idnticoalparmetroanterior,peroparaelrangodeidentificadoresdegruposGIDs)
ausar.Sealmacenanenelmismoficheroqueantes.
4. winbindenumusers:indicasiqueremosquewinbindgenerelalistadeusuariosenrespuestaala
ejecucindelasfuncionesdebibliotecasetpwent(),getpwent()yendpwent()quesirvenpara
enumerartodoslosusuariosexistentesysusdatosasociados.
Eninstalacionesconmuchosusuarios(variosmilesodecenasdemiles)puedeserinteresante
suprimirestaenumeracin(valor"no")porrazonesderendimiento.Sinembargo,algunos
programassecomportandeformaextraaenestoscasos,conlocualhabrquehacerpruebasen
dichoscasos.
5. winbindenumgroups:Idnticoalcasoanterior,peroparalasfuncionesdebibliotecasetgrent(),
getgrent()yendgrent(),quesirvenparaenumerarlosgruposexistentesenelsistemaanfitrin.
6. winbindcachetime:tiempoensegundosacachearlainformacinsobreusuariosygruposdel
dominioantesdevolverapedirlosdatosalcontroladordeldominiodenuevo.
Unavezajustadoslosvaloresanteriores,debemosreinciarlosdemoniosdeSamba.

3.2.ConfiguracindelNameServiceSwitch
PorltimonosquedaconfigurarelsistemaNSSparaengancharWinbindcomopartedelmismo.Para
ellodebemoscopiarlasbibliotecasdeenlacedinamicocompiladasdurantelacompilacindeSambaen
eldirectorio/lib:elficherollamadolibnss_winbind.so.2ycrearunenlacesimblicoaestellamado
libnss_winbind.so.
Unavezcopiadosdichosficheros,debemosconfigurarelsistemaNameServiceSwitchparaqueutilice
dichosservicios.Paraelloeditamoselfichero/etc/nsswitch.confyaadimoselnombrewinbindalas
entradaspasswd:ygroup::

passwd:files...otros...winbind
group:files...otros...winbind

3.3.Ejecucindeldemoniowinbindd
Paraponerenmarchaeldemoniowinbindd,bastaconlanzarlocomousuarioroot.Sinuestrosistema
tienearranquedetipoSystemV,podemosagregarunscriptquelolanceduranteelarranquedelmismo
(despusdehaberlanzadoeldemonionmbdyaquerequieredesusservicios)yquelodetengadurantela
paradadelsistema.
UnavezpuestoenmarchawinbindcomopartedelsistemaNSS,podemosusarlasordenes:

getentpasswd

http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

13/14

13/3/2015

UsodeListasdeControldeAcceso(ACLs)enLinux

getentgroup

paraobtenerunlistadodetodoslosusuariosygruposlocalesdelamquina,listadoquedeberacontener
todoslosusuariosygruposcreado(importados)porwinbind:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
...
DOMINIO/aajuria:x:10011:10000:AnderAjuria:/home/DOMINIO/aajuria:/bin/false
DOMINIO/aalberdi:x:10012:10000:AmaiaAlberdI:/home/DOMINIO/aalberdi:/bin/false
DOMINIO/aalcelay:x:10014:10000:AmaiaAlcelay:/home/DOMINIO/aalcelay:/bin/false
...

locualnosmuestraquewinbindestfuncionandocorrectamente.

4.Licencia
Copyright(c)20022003,IgnacioArenazaNuo
Permisoparacopiar,distribuiromodificarestedocumentodeacuerdoalosterminosdelaLicenciade
DocumentacionLibredeGNU(GNUFreeDocumentationLicense),Version1.1oposterior,publicada
porlaFreeSoftwareFoundation.EstedocumentonocontieneSeccionesInvariantes(withnoInvariant
Sections),niTextosdePortada(withnoFrontCoverTexts)niTextosdeContraportada(withnoBack
CoverTexts).

http://www.escomposlinux.org/iarenaza/articuloacls/aclslinuxsamba.html

14/14

Vous aimerez peut-être aussi