Uso de Listas de Control de Acceso (ACLs) en Linux

Post on 04-Sep-2015

227 views 4 download

description

Uso de Listas de Control de Acceso (ACLs) en Linux

Transcript of Uso de Listas de Control de Acceso (ACLs) en Linux

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    UsodeListasdeControldeAcceso(ACLs)enLinuxIgnacioArenazaNuo

    Proyectoescomposlinux.org(iarenaza@escomposlinux.org)

    Copyright2003IgnacioArenazaNuo

    Permisoparacopiar,distribuiromodificarestedocumentodeacuerdoalosterminosdelaLicenciadeDocumentacionLibredeGNU(GNUFreeDocumentationLicense),Version1.1oposterior,publicadaporlaFreeSoftwareFoundation.EstedocumentonocontieneSeccionesInvariantes(withnoInvariantSections),niTextosdePortada(withnoFrontCoverTexts)niTextosdeContraportada(withnoBackCoverTexts).

    HistorialderevisionesRevisin$Revision:1.4$ $Date:2004/03/2821:08:16$Submitted.

    Resumen

    ElpresentedocumentomuestralasposibilidadesdelmodelodepermisosbasadoenlistasdecontroldeaccesooACLs.Unavezdiscutidoelmodelo,semuestracomoimplementardichomodelodeseguridadenunsistemaGNU/Linuxycomosepuedenaprovecharlasposibilidadesqueestemodeloofrece,tantoenelserviciobsicodeaccesoaficheroscomopormediodeunsistemadecomparticindeficherosconSAMBA.

    Tabladecontenidos

    1.ListasdeControldeAcceso

    1.1.Introduccin1.2.ACLsenLinux1.3.CmoincorporarACLsanuestrosistemaLinux

    2.UsodelasACLs

    2.1.CreacindeunaACLbsica.2.2.ACLspordefecto

    3.ACLsySamba

    3.1.ValoresdeConfiguracindeWinbindenelficherosmb.conf3.2.ConfiguracindelNameServiceSwitch3.3.Ejecucindeldemoniowinbindd

    4.Licencia

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    1.ListasdeControldeAcceso

    1.1.Introduccin

    UnadelascaractersticasqueseechanenfaltaenlossistemasLinuxactuales,especialmenteenentornoscorporativos,eslaposibilidaddeespecificarlospermisosdeaccesoalosficherosconmayorgranularidad.LossistemasLinuxsiguenelmodelodepermisosUnixtradicionalsegementandoeltipodeaccesoentrescategoras:

    Elpropietariodelfichero(User)

    Elgrupoalqueperteneceelfichero(Group)

    Elrestodeusuariosdelsistemaquenoestnenningunadelasdoscategorasanteriores(Other).

    tambinconocidocomomodeloUGO(User,Group,Other).

    Sinembargo,estastrescategorasserevelaninsuficientesenunagrancantidaddesituaciones,dondedeseariamospoderespecificarpermisosdiferenciadosparavariosusuariosogruposdeterminados.

    AquesdondeentranenjuegolospermisosbasadosenListasdeControldeAcceso,msconocidoscomoACLs.Enestesistemadepermisoslosficherosnotienenunjuegofijodepermisos(comoenelmodelotradicional,quetienetrespermisosyslotres),sinoquelospermisosdelficherosonenrealidadunalistadeEntradasdeControldeAcceso(oACEs).CadaunadeestasACEscontieneunpar(usuario/grupo,permiso)queindicauntipodeaccesodeterminadoparaunusuarioogrupo,yelconjuntodetodasellasformanlaACLquemarcaeltipodeaccesopermitidoenunfichero.

    Estesistemaeselutilizadoentreotros,porlossistemasdeficherosNTFS(deWindowsNTysucesores),elsistemaUFSdeSolarisyelsistemaHFSdeHPUX.

    1.2.ACLsenLinux

    Hayundatoquesesueledesconocersinembargoyesqueelsistemadeficherosext2,desdesudiseooriginal,previlainclusindeestetipodesistemasdecontroldeaccesoyestabanincludoslosenganches(hooks)necesariosparasuimplementacinposterior,deforma100%transparenteycompatiblehaciaatrs.

    Puesbien,desdehacevariosaosexistenvariosproyectosparaincorporarlossistemasbasadosenACLenlosdiferentessistemasdeficherossoportadosporLinux,yespecialmenteenext2(porsereltipodesistemadeficherosmsextendidohastaelmomentoenlossistemasLinux).

    UnodeelloseselproyectoRSBAC,cuyosobjetivossonmuchomsambiciosos(realmentemuchoms,suobjetivoesconseguirunsistemaLinuxconunniveldeseguridadequivalentealnivelB1delantiguoLibroNaranjaTCSEC),peroqueincorporatambinunaimplementacin100%operativadeACLsparaext2.

    OtrodeelloseselproyectoLinuxExtendedAttributesandAccessControlLists,queoriginalmentetenacomoobjetivoincorporarelsistemadeACLsalsistemadeficherosext2(yposteriormenteext3cuandoesteapareci).Posteriormente,alserelsistemadeACLselegidoporelequipodeSambaparasuimplementacindeACLssobreext2(parapoderofertarrecursoscompartidosviaSMBconACLsal

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    igualquelossistemasWindowsNTyposteriores)hasidoelcandidatooficialdeACLsenext2parasuinclusindefinitivaenelkernel.Dehecho,desdelaversin2.5.23formapartedelkernelestndar.

    ParaellosehahechounesfuerzodecoordinacinyestandarizacinbastantegrandeconlosdesarrolladoresdeotrossistemasdeficheroscomoXFSyJFS(principalmente,aunquenosloconestos)quetambinsoportabanACLsdesdesuorigen.LaideaeraofertarunacapaabstractacomnenelVFS(VirtualFileSystem)deformaquelasaplicacionesyelrestodelsistemaoperativotrabajasenporigual,yconlamismaAPI,concualquieradelossistemasdeficherosquesoportasenACLs(ext2/ext3,XFS,JFS,ReiserFS,etc.).

    Elresultado:yaestndisponibleslossistemasdeficherosconACLsenelncleoestndar,ensuversindedesarrollo.Sinembargo,noesnecesarioesperarhastalaestabilizacindelactualncleodedesarrolloparadisfrutardelasventajasdelasACLs.Todoslossistemasdeficherosmencionadosarribaestndisponiblesbiencomopartedelkernelestndar,biencomoparches,paralasversionesestablesdelncleo.Ysonparchesconcalidaddeproduccin,conlocualsonperfectamenteutilizablesenentornoscuyaestabilidadseaunacondicinindispensable.

    Enelcasodelsistemadeficherosext2/ext3,quesonelobjetivodelproyectoLinuxExtendedAttributesandAccessControlLists,lasACLssoninclusotransparentesparaaquellosncleosquenollevenincorporadoslosparchesnecesarios,deformaquesiaccidentalmentesearrancaelsistemaconunncleosinsoporteparaACLsnoocurreabsolutamentenada,salvoobviamentequenodisponemosdelascaractersticasavanzadasdelasACLsyslotenemosanuestradisposicinelmodelodepermisostradicional.

    Acondicindequetengamosunejecutabledee2fsckquesoporteACLs,inclusosielncleonolosoporta,podemosejecutare2fscksobreelsistemadeficherosdeformasegura.Encasodetenerune2fscksinsoportedeACLs,elnicoproblemaquetendremosenestecasoeslaprdidadelasACLs,peronuncalaprdidadedatos.

    Lasversionesdee2fsprogs(elpaquetedondeseincluyenlasutilidadesdeext2)apartirdelaversion1.28yaincorporansoportedeserieparaAtributosExtendidos(ExtendedAttributesoEAs),queeslacaractersticadelsistemadeficherosnecesariaparapoderimplementarlasACLs.Enelsitiodelpropioproyectosepuedenencontrarparchesparaalgunasversionesanterioresdee2fsprogs,encasodesernecesario.

    1.3.CmoincorporarACLsanuestrosistemaLinux

    QudebemoshacerportantoparadisfrutardeACLsennuestrossistemasdeficherosext2/ext3yamismo?Loquesigueesunresumendelasinstruccionesdadasenelpropiositiodelproyecto,dondeseindicapasoapasotodoelprocesoaseguir.VoyapresuponerenestecasoquenuestrosistemanodisponedesistemasdeficherosconEAsyACLs,conlocualmevoyasaltarlospasosdecopiaderespaldodelasACLsactuales(ylalimpiezadelsistema).

    1. Loprimeroesobtenerunacopiadee2fsprogsquesoporteEAsyACLs.Laversion1.28oposteriorservir.Encasocontrario,hayqueobtenerlosparchesmencionadosarribaylasfuentesdenuestraversionactualdee2fsprogs(seguramentenuestradistribucintendrdisponibleslasfuentesensurepositoriohabitual)yconstruirdenuevolosejecutableseinstalarlosenelsistema.Alternativamentepodemosoptarporinstalardirectamenteunaversin1.28oposteriordirectamente,sinparchearlaactualmenteusadaennuestradistribucin.

    2. AcontinuacindebemoscompilarunkernelconsoporteparaEAsyACLs.Paraellodebemos

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    descargarlosparchescorrespondientesanuestroncleoyaplicarlosdelasiguienteforma(eldirectoriolinux/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.Lasopcionesxxx_XATTRsonparaactivarlosAtributosExtendidos,ylasopcionesxxx_POSIX_ACLparaactivarlasACLs.Losvaloresxxx_EXT2_xxxsonparasistemasdeficherosext2ylosvaloresxxx_EXT3_xxxparaext3.

    Existenotrasdosopcionesms(almenosenelkernel2.4.19,queeselqueestoyusandoparaescribiresto):

    I. Ext2extendedattributeblocksharing(IG_EXT2_FS_XATTR_SHARING):quepermiteelusodeunmismobloquecomnparaalmacenarlosatributosextendidosdevariosnodosi,enelcasodequedichosatributosseanindnticosentodoslosnodosi.

    II. Ext2extendeduserattributes(CONFIG_EXT2_FS_XATTR_USER):quepermitealosprocesosdeusuarioalmacenaratributosextendidosadicionalesenlosnodosi.Porejemploparaalmacenarcualquiertipodeinformacinadicionalquedichosprocesosdeseen,comoeljuegodecaracteresusuadoenelfichero(ocualquierotracosaquesenosocurra).

    Porsupuesto,losdosvaloresanterioresexistendeidnticaformaparaelsistemadeficheroxext3.

    3. ElsiguientepasoesconstruirlasutilidadesquesirvenparagestionarlosAEsylasACLsdelosficheros:getfattr,setfattr,getfacl,setfacl,etc.Tenemosquedescargarelpaqueteattrqueesnecesarioparapoderconstruirdespueselpaqueteacl,queincluyelasutilidadesdegestindelasACLsens(elpaqueteattrincluyeademsalgunasutilidadesdegestindeatributosextendidos).

    EsconvenienterevisarprimerosiexistenversionesyaempaquetasparanuestradistribucindeLinux(tantoDebianGNU/LinuxcomoRedHat,entreotras,lastienen),yqueseaunaversindelasmismasqueseacompatibleconlarevisindelparcheaplicadaalncleoqueacabamosdeconstruir

    Encasodenotenerlasennuestradistribucin,nosercompatiblesosimplementequerertenerlaltimaversindisponiblecompiladapornosotrosmismos,estossonlospasosaseguir(necesitaremoselentornodedesarrolloautoconfytodaslautilidadesdecompilacin/desarrollohabituales,msalgnretoquemanual):

    I. DesempaquetarlasutilidadesdegestindeAtributosExtendidos(attr2.0.10.src.tar.gzenel

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    momentodeescribiresto):

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

    Acontinuacintenemosquecompilarlasherramientasens.SinuestradistribucinesRedHatoDebianGNU/Linux,lasutilidadesvienenconlosficherosdeespecificacinycontrolnecesariosparacrearpaquetesnativos(verelficherodoc/INSTALL).

    Encasocontrario,debemoscompilartododesdeceroconlassiguientesinstrucciones(eneldirectoriorazdelosficherosextrados):

    autoconf ./configure make suroot makeinstallinstalllibinstalldev

    EsteltimomtododejartodoslosejecutablesmslasbibliotecasdefuncionesdemanejodeAEsbajo/usr/local.Engeneralelficherodoc/INSTALLdalasindicacionesnecesariasparaobtenerlosejecutablesencualquieradeloscasos(includasalgunasindicacionesparadeshabilitarelcdigodedepuracin,etc).

    II. DesempaquetarlasutilidadesdegestindeACLs(acl2.0.18.src.tar.gzenelmomentodeescribiresto):

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

    Acontinuacintenemosquecompilarlasherramientasens.Comoenelcasoanterior,sinuestradistribucintieneyacompiladasestasutilidadesyconcompatiblesconlaversindelosparchesincludosenelncleo,lomssencilloesusarlospaquetesnativosdeladistribucin.

    Encasocontrario,debemoscompilartododesdeceroconlassiguientesinstrucciones(eneldirectoriorazdelosficherosextrados):

    autoconf ./configure make suroot makeinstallinstalllibinstalldev

    EsteltimomtododejartodoslosejecutablesmslasbibliotecasdefuncionesdemanejodeACLsbajo/usr/local.Comoenelcasoanterior,elficherodoc/INSTALLdalasindicacionesnecesariasparaobtenerlosejecutablesencualquieradeloscasos.

    III. PorltimodebemosobtenerunaversindelpaquetefileutilsparcheadoparasoportarEAsyACLs.DelocontrarionopodremoscopiarlosficherosconsusAEsyACLs,sacarenloslistadoslaindicacindequehayaclsadicionalesalospermisostradicionales(yaquesesiguenmanteniendolospermisostradicionales),etc.

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    Enelpropiositiodelproyectosepuedeencontrarelparcheparaalgunasversionesdelpaquetefileutils.Engeneralestaeslapartemscomplicadadelproceso,alserunpaquetecompletamenteexternoalsistemadeficherosylasutilidadesext2/ext3.Losproblemassepresentarnsilaversindefileutilsquevamosautilizarnosecorrespondenexactamentealasindicadasenlosparches,yaquetendremosqueintegrarpartedeloscambiosamano,yesosiempreesmscomplicado.

    UnavezcompiladoeinstaladotodolomencionadoenlospuntosanterioresyatenemostodosloselementosnecesariosparapoderdisfrutardelosEAsylasACLsennuestrossistemasdeficherosext2/ext3.Slonosquedaunltimopaso,indicaralncleoqueenundeterminadosistemadeficherosdeseamosusarACLs(yEAs).

    Paraellodebemoseditarelfichero/etc/fstabyaadirunaopcinadicionalaladeaquellossistemasdeficherosalosquequeremosactivarlasACLs:acl.TambinpodemosaadirunaopcinparaindicarexplcitamentequenoqueremosusarlasACLsenunsistemadeficheros,aunsidichosistemadeficheroscontieneACLs:noacl.

    ExisteunjuegodeopcionesadicionalparaactivarodesactivarelusodelosAEsdeusuario(sihemosoptadoporcompilarlosennuestroncleo):user_xattrynouser_xattr.Porcierto,quelosvalorespordefectoparatodoslossistemasdeficherosext2/ext3encasodenoespecificarnadasonnoaclynouser_xattr

    Unavezhecholoanterior,slonosrestaarrancarconelnuevoncleoqueacabamosdecompilaryvoil!,yatenemosnuestrasACLsdisponiblesylistasparausar.

    2.UsodelasACLs

    UnavezquehemoscompiladoelkernelconsoporteparaACLsyquehemoscompiladolasherramientasnecesariasparapodertrabajarconellas(ademsdeparchearaquellasutilidadesdegestindeficherosysistemasdeficherosparaquereconozcanlasACLsylasrespetenysepaninterpretarlas),podemosyadedicarnosalagestindelaspropiasACLsensi.

    Paraellodisponemosdedosutilidadesprincipalmente:

    getfacl:quenospermiteconsultarlasACLsdeunficherodado.

    setfacl:quenospermitemodificarlasACLsdeunficherodado.

    Ambasutilidadessehayanperfectamentedocumentadasensusrespectivaspginasdelmanual(setfacl(1)ygetfacl(1)),ypodemosencontrarunapequeaintroduccinenlapginadelmanualdeacl(5),vamosaveraqualgunosejemplossencillosqueilustrarnelusobsicodeestasutilidades.

    2.1.CreacindeunaACLbsica.

    ExistencasosenloscualeseltradicionaljuegodepemisosUGO(User,Group,Others)noessuficiente.Casosenlosquedesearamosquemsdeunusuarioomsdeungrupopudieseteneraccesoaunfichero,peroconpermisosdiferenciados.ConelmodeloUGOestonoesposible,puestoqueslotenemossitioparalospermisosdeunnicoUsuarioounnicoGrupo.TodolodemscaeenelOther(elresto).ConlasACLsestoessencillo.

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    Vamosapresuponerquetenemosundirectorioquecontieneunaseriedeficherosydossubdirectorios(asuvezconficheros)comoseindicaenlasiguientefigura:

    Tenemosasimismolossiguientetiposdeusuariosdiferenciados:

    1. Losusuariosdelgrupodesistemasdeinformacin,quedebenteneraccesocompletoatodoslosdirectoriosyficheros,parasumantenimiento.Llamaremosaestegruposistemas.

    2. Losusuariosdelgrupodedesarrollo(llamaremosaestegrupodesarrollo),quedebenteneraccesodelecturayescritura(yejecucinensucaso)enelprimersubdirectorioytodossusficherosysubdirectorios.Enestedirectorioesdondesedesarrollanlasnuevasversionesdelsoftwarequeusaeltercergrupo.

    Asimismodebeteneraccesodelectura/escrituraalsegundodelossubdirectoriosparaimplantarlasnuevasversionesestablesdelsoftware.

    3. Losusuariosdeexplotacin.Estegrupodebeteneraccesoenmodolectura(yeventualmenteejecucion)sobrelosficherosdelaaplicacion.Llamaremosaestegrupoexplotacion.

    4. Elrestodeusuariosdelsistemanodebentenerningntipodeaccesoaningunodelosficherososubdirectorios.

    ConlascondicionesanterioresesimposibleusarelmodelodepermisostradicionalUGO,puestoquetenemostresgruposdeusuariosdiferentes,sincontarelrestodeusuariosdelsistema.Esosignificaqueconunslogrupodeusuariosconpermisosasignadospordirectoriooficheronoesposibleacomodarlospermisosparalostresgrupos.

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    UtilizandoACLsesfcilresolverelproblema,puestoquepodemosasignarunjuegodepermisosdiferenteparacadagrupodeusuarios.ParaellodebemoscrearlasACLsnecesariasparacadagrupodeusuariosydirectorioofichero.

    1. Tenemosquedarpermisoscompletosalgrupodesistemassobretodoslosficherosydirectoriosimplicados.Paraellousamossetfacldelasiguienteforma:

    setfaclbkRdir_raiz setfaclRmg:sistemas:rw

    Vayamosporpartesconlasintaxisdesetfacl:

    EnelprimercasousamoslaopcionbparaborrarlaACLqueyapudieratenereldirectorioraz.UsamostambinlaopcinkparaborrarlaACLpordefectoquepudieratenereldirectorioraz(mssobreestodespus),yporltimousamoslaopcinRparaaplicarloscambiosdeformarecursivaatodoloquecuelgadeldirectorioraz.Conestoconseguimostenertodolimpioylistoparaempezar.

    TericamentelaprimereveznohacefaltalimpiarlaACLpuestoqueannohemosasignadoningunaACE,perodepasoaprovechamosparamostrarcomosehace:)

    Enelsegundocasoindicamosdenuevoquequeremosaplicardeformarecursivaloscambios(opcinR)peroestavezledecimosquequeremosmodificar(m)laACLdelobjetoencuestin.EnestecasoesnecesarioademsindicarelvalordelaACEquedeseamosaadiromodificar.setfacldistingueentreasignarunaACL(opcins)enlacualseeliminanlasACEsexistentesyseaadelaACEespecificadaenlaorden,ymodificarunaACL(opcinm)enlacualpodemosmodificaroaadirunaACE.

    EnestecasoqueremosaadirunanuevaACE.ParaellodebemosescribimoslaACEquenosinteresa:

    g:sistemas:rw

    TodaslasACEstienentrescomponentesseparadaspor':'(enelcasodelasoperacionesdeborradodeACEseltercercomponenteesopcional).ElprimerodeloscomponentesindicasisetratadeunACEdeusuario(valoru)odegrupo(valorg).InclusoesposibleasignarACEsalgrupodeusuariosresto(other),peroestonosueleserhabitual,asqueomitiremoslasintaxis(sepuedenencontrarmsdetallesenlapginadelmanualdesetfacl(1)).

    ElsegundodeloscomponenteseselnombredeusuarioogrupoalqueseleaplicalaACE.Sepuededarelnombresimblicooelvalornumricodeluidogidcorrespondiente.EltercercomponenteeselvalordelpermisoasociadoaestaACE,ypuedeserunacombinacincualquieradelasletrasr,w,xy,ounvalornumricooctal(comoenchmod).

    Portanto,ennuestrocasotenemosqueesunaACEdegrupo(g),queseaplicaalgrupodesistemasyqueleestamodandolospermisosdelecturayescritura(rw).

    2. Acontinuaciontenemosquedarpermisosalgrupodedesarrollotantoeneldirectoriosubdir_1ytodosucontenido,comoeneldirectoriosubdir_2ytodosucontenido.Sinembargonotenemosquedaraccesoalosficherosquecuelgandirectamentededir_raiz.Paraellousamossetfaclconlasintaxisexplicadaenelpuntoanterior:

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

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

    3. Porltimotenemosquedarpermisosalgrupodeexplotacineneldirectoriosubdir_2ytodosucontenido:

    setfaclRmg:explotacion:rxdir_raiz/subdir_2

    Lonormalenestepuntoescomprobarcualessonlospermisosrealesquetienencadaunodelosficherosydirectoriosexistentes,paraversiefectivamenteseajustanalosrequisitosplanteados.

    ParaellopodemosusargetfaclparavercualessonlasACLdecadaunodelosdirectoriosoficherosimplicados.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,tendremossiempreunaentradaparaelpropietariodelficheroyelgrupodelfichero(sonlaslneasquenoindicanunusuarioogrupoconcreto)ytantaslneasadicionalescomoACEsdeesetipohayamosasginadoalficheroodirectorio.LaentradaothereslaentradadelpermisotradicionalotherdelmodeloUGO.

    Laentradamaskesespecial.Esaentrada,quesepuedemanipularconsetfaclpermiteespecificarelmximodepermisosquesepuedenasignarendichoficheroconlasACEsdeusuarioygrupo.

    VeamosahoralasACLdelrestodeficherosydirectorios:

    #file:dir_raiz/fich_1#file:dir_raiz/dir_1/fich_4#owner:root#owner:root#group:root#group:rootuser::rwuser::rwgroup::rgroup::rgroup:sistemas:rwgroup:sistemas:rwmask::rwgroup:desarrollo:rwother::rmask::rwother::r#file:dir_raiz/fich_2#owner:root#getfacldir_raiz/dir_2#group:root#file:dir_raiz/dir_2user::rw#owner:rootgroup::r#group:root

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    group:sistemas:rwuser::rwxmask::rwgroup::rxother::rgroup:sistemas:rwgroup:desarrollo:rw#getfacldir_raiz/dir_1group:explotacion:rx#file:dir_raiz/dir_1mask::rwx#owner:rootother::rx#group:rootuser::rwx#getfacldir_raiz/dir_2/fich*group::rx#file:dir_raiz/dir_2/fich_5group:sistemas:rw#owner:rootgroup:desarrollo:rw#group:rootmask::rwxuser::rwother::rxgroup::rgroup:sistemas:rw#getfacldir_raiz/dir_1/fich*group:desarrollo:rw#file:dir_raiz/dir_1/fich_3group:explotacion:rx#owner:rootmask::rw#group:rootother::ruser::rwgroup::r#file:dir_raiz/dir_2/fich_6group:sistemas:rw#owner:rootgroup:desarrollo:rw#group:rootmask::rwuser::rwother::rgroup::rgroup:sistemas:rwgroup:desarrollo:rwgroup:explotacion:rxmask::rwother::r

    2.2.ACLspordefecto

    Todoloanteriorestmuybien,perotieneunproblema:losficherosydirectoriosnuevosquesecreennovanatenertodasesasACLsconlosvaloresadecuados,yportantotendremosqueestarcadadosportresajustandolosvaloresdelasACLsconlasrdenesanteriores.Evidentementeesonoesoperativoenabsoluto.EnnuestraayudalleganlasACLspordefecto(enrealidadhabraquehablardeACEspordefecto,peroladocumentacinhabladeACLspordefecto,asquemantendremoslamismaterminologaparanocrearmsconfusin).

    LasACLspordefectonospermitenindicarculeseljuegodeACEsquequeremosqueseapliquenautomticamentealosnuevosficherosydirectoriosquesecreendentrodeundirectoriodado.Sediceenestoscasosquelospermisosseheredandesdeeldirectoriopadre.

    LasintaxisesidnticaaladeunaACEnormal,conladiferenciadequedebemosusarademslaopcind:

    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

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    #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,detipodefaultquecontienenlainformacinautilizarparalosnuevosficherosydirectoriosquesecreendentrodeste.

    3.ACLsySamba

    Apartirdelaversion2.2.0deSamba,esteincorporasoporteparaACLssielsistemaoperativonativolosoporta.SihemosactivadolasACLscomoseindicaarribaennuestroncleo,slodebemosinstalarlasbibliotecasdedesarrollodeatributosextendidos(libattr.aylibattr.h)ylistasdecontroldeacceso(libacl.aylibacl.h)ennuestrosistemaparapoderrecompilarSambaconsoporteparaACLsnativo.Sihemosseguidolasinstruccionesdecompilacineinstalacindadasarriba,estartodolonecesarioyainstalado.

    Unavezcompiladoyparapoderusarloesnecesarioinstalarlasbibliotecasdeenlacedinamicodeatributos(libattr.so)ylistasdecontroldeacceso(libacl.so)enloslugareshabituales.Denuevo,sihemosseguidolasinstruccionesdemsarriba,yatendremosinstaladotodolonecesario.

    AhoraslonosrestacompilarsambaconlaopcindesoporteparaACLs.Loniconecesarioenestecasoes,alahoradelanzarlaorden./configuredebemosaadirlaopcionwithaclsupportalalistadeopcionesqueusamoshabitualmente:

    ./configurewithaclsupport...otrasopcionesadicionales

    ycompilareinstalarlosnuevosbinarios.ApartirdeestemomentoSambacontienetodoelcodigonecesarioparatraducirlasACLsdelprotocoloSMBenACLsnativasyviceversa,conlocualtenemossoportecompletoparaelmodelodepermisostradicionaldeMicrosoftWindowsNToposteriores.

    Sinembargo,loanteriorporlogeneralnoessuficientesiutilizamosSambaintegradoenundominioNTo2000(enmodomixto,yaquelaversinestabledeSamba2.2.xnotienesoporteparamodonativodeActiveDirectory).EnestecasoqueremosusarlalistadeusuariosygruposdelpropiodominioparaasignarlospermisosyACLsdelrecursocompartidoporSamba.

    LocualsignificaquedichascuentasdeusuarioygrupodebenexistirenelsistemaoperativoanfitrindondeseejecutaSamba,yaquelasACLsdelsistemaoperativolascreaelncleodeLinuxyportantodebeusarUIDsyGIDsexistentesenelsistema.

    Lasolucinesdardealtatodasesascuentasenelsistemaanfitrin.Perosilohacemosdeformamanualtenemosdosgrandesinconvenientes:

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    1. Elnmerodecuentaspuedesermuyalto(grancantidaddetrabajo)ypodemosnoconocerlascontraseasdebuenaparte(olatotalidad)dedichascuentas.

    2. Apartirdeestemomentotenemosdosbasesdedatosdeusuariosquemantenerdeformasincronizada(manualmente),locualessiempreundesastreapuntodesuceder.

    PorsuerteloschicosdeSambalohantenidoencuenta,yapartirdelaversion2.1.xdeSambahanincorporadounnuevocomponentealafamiliadesolucionesSMB:winbind.

    WinbindesunmduloqueseintegraenelsistemaNameServiceSwitch(NSS)yqueesuncomponentemsdelsistemaquepuedeenumerarusuariosygrupos.SeuneasalsistematradicionalbasadoenficheroslocalesyalossistemasdegestindeusuariosbasadosenredcomoNIS,NIS+oLDAPentreotros.EsportantouncomponentemsquesecompilaconelrestodesambayquegeneraunaseriedebiblitecasdeenlacedinmicoparaelsistemaNSS.

    LonicoquetenemosquehacereslanzarlaejecucindeWinbind(correcomoundemoniodesistema),aadirenelficherodeconfiguracindeSambaunaspocasdirectivasdeconfiguracindeWinbindparaindicarlelosrangosdeUIDsyGIDsagestionar,yconfigurarelNameServiceSwitchparaqueconsulteaWinbindcuandonoencuentrelosusuariosenelrestodesubsistemasconfigurados.ComoelsistemaNSSutilizacachsdenombres,elrendimientodeWinbindesbastanterpidoinclusoensistemasconunospocosmilesdeusuarios(elautorloutilizadeformarutinariaconunas1.000cuentasdeusuariosenunaredderealocalconunimpactodevelocidadaceptable).

    3.1.ValoresdeConfiguracindeWinbindenelficherosmb.conf

    Loprimeroquetenemosquehacereseditarelficherosmb.confyaadirlosparmetrosquequeremosqueutilicewinbindd(eldemonioqueofertaelservicioWinbid).Paraellotenemosqueaadirlasdirectivas:

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

    Donde:

    1. winbindseparator:indicaelcarcterausarcomoseparadorentreelnombredeldominioalqueperteneceSambayelnombredeusuarioogrupoindividual.WinbindconstruyenombresdeusuariosdeltipoDOMINIO_separador_USUARIOyDOMINIO_separador_GRUPO.Porejemplo:ESCOMPOSLINUX.iarenazausandoelvalorindicadoenelejemplodearriba.

    2. winbinduids:indicaelrangodeUIDsdelsistemaanfitrionqueWinbindusaparamapearlosusuariosdeldominioNTenlosusuariosnativosdelsistemalocal.LoquehaceWinbindescreardeformaartificialtantosusuarioslocales(UIDs)comousuarioshayaeneldominio,yhacerunaasignacionestticaentreambos.Estainformacinseguardaenunficherodebasesdedatosqueconvienenoperder(llamadowinbindd_idmap.tdb,ubicadoen/var/lib/sambaenelcasodeDebian

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    GNU/Linux)oborrar,yaquelaasignacionpuedeserdiferentelaproximavezqueseconstruyalabasededatos(deformaautomaticaporpartedeWinbindsivequeestafalta).

    EsmuyimportanteasegurarsedequeelrangodeUIDs(yGIDsparaelvalorsiguiente)noestnsiendoyausadosporotrossubsistemasdeenumeracin/validacindeusuarios(NIS,NIS+,LDAP,etc.)

    3. winbindgids:idnticoalparmetroanterior,peroparaelrangodeidentificadoresdegruposGIDs)ausar.Sealmacenanenelmismoficheroqueantes.

    4. winbindenumusers:indicasiqueremosquewinbindgenerelalistadeusuariosenrespuestaalaejecucindelasfuncionesdebibliotecasetpwent(),getpwent()yendpwent()quesirvenparaenumerartodoslosusuariosexistentesysusdatosasociados.

    Eninstalacionesconmuchosusuarios(variosmilesodecenasdemiles)puedeserinteresantesuprimirestaenumeracin(valor"no")porrazonesderendimiento.Sinembargo,algunosprogramassecomportandeformaextraaenestoscasos,conlocualhabrquehacerpruebasendichoscasos.

    5. winbindenumgroups:Idnticoalcasoanterior,peroparalasfuncionesdebibliotecasetgrent(),getgrent()yendgrent(),quesirvenparaenumerarlosgruposexistentesenelsistemaanfitrin.

    6. winbindcachetime:tiempoensegundosacachearlainformacinsobreusuariosygruposdeldominioantesdevolverapedirlosdatosalcontroladordeldominiodenuevo.

    Unavezajustadoslosvaloresanteriores,debemosreinciarlosdemoniosdeSamba.

    3.2.ConfiguracindelNameServiceSwitch

    PorltimonosquedaconfigurarelsistemaNSSparaengancharWinbindcomopartedelmismo.ParaellodebemoscopiarlasbibliotecasdeenlacedinamicocompiladasdurantelacompilacindeSambaeneldirectorio/lib:elficherollamadolibnss_winbind.so.2ycrearunenlacesimblicoaestellamadolibnss_winbind.so.

    Unavezcopiadosdichosficheros,debemosconfigurarelsistemaNameServiceSwitchparaqueutilicedichosservicios.Paraelloeditamoselfichero/etc/nsswitch.confyaadimoselnombrewinbindalasentradaspasswd:ygroup::

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

    3.3.Ejecucindeldemoniowinbindd

    Paraponerenmarchaeldemoniowinbindd,bastaconlanzarlocomousuarioroot.SinuestrosistematienearranquedetipoSystemV,podemosagregarunscriptquelolanceduranteelarranquedelmismo(despusdehaberlanzadoeldemonionmbdyaquerequieredesusservicios)yquelodetengadurantelaparadadelsistema.

    UnavezpuestoenmarchawinbindcomopartedelsistemaNSS,podemosusarlasordenes:

    getentpasswd

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    getentgroup

    paraobtenerunlistadodetodoslosusuariosygruposlocalesdelamquina,listadoquedeberacontenertodoslosusuariosygruposcreado(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,distribuiromodificarestedocumentodeacuerdoalosterminosdelaLicenciadeDocumentacionLibredeGNU(GNUFreeDocumentationLicense),Version1.1oposterior,publicadaporlaFreeSoftwareFoundation.EstedocumentonocontieneSeccionesInvariantes(withnoInvariantSections),niTextosdePortada(withnoFrontCoverTexts)niTextosdeContraportada(withnoBackCoverTexts).