uso de listas de control de acceso (acls) en linux

14
Uso de Listas de Control de Acceso (ACLs) en Linux Ignacio Arenaza Nuño Proyecto escomposlinux.org ([email protected]) Copyright © 2003 Ignacio Arenaza Nuño Permiso para copiar, distribuir o modificar este documento de acuerdo a los terminos de la Licencia de Documentacion Libre de GNU (GNU Free Documentation License), Version 1.1 o posterior, publicada por la Free Software Foundation. Este documento no contiene Secciones Invariantes (with no Invariant Sections), ni Textos de Portada (with no FrontCover Texts) ni Textos de Contraportada (with no Back Cover Texts). Historial de revisiones Revisión $Revision: 1.4 $ $Date: 2004/03/28 21:08:16 $ Submitted. Resumen El presente documento muestra las posibilidades del modelo de permisos basado en listas de control de acceso o ACLs. Una vez discutido el modelo, se muestra como implementar dicho modelo de seguridad en un sistema GNU/Linux y como se pueden aprovechar las posibilidades que este modelo ofrece, tanto en el servicio básico de acceso a ficheros como por medio de un sistema de compartición de ficheros con SAMBA. Tabla de contenidos 1. Listas de Control de Acceso 1.1. Introducción 1.2. ACLs en Linux 1.3. Cómo incorporar ACLs a nuestro sistema Linux 2. Uso de las ACLs 2.1. Creación de una ACL básica. 2.2. ACLs por defecto 3. ACLs y Samba 3.1. Valores de Configuración de Winbind en el fichero smb.conf 3.2. Configuración del Name Service Switch 3.3. Ejecución del demonio winbindd 4. Licencia

Upload: andresfelipealvarez

Post on 04-Sep-2015

227 views

Category:

Documents


4 download

DESCRIPTION

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

TRANSCRIPT

  • 13/3/2015 UsodeListasdeControldeAcceso(ACLs)enLinux

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

    UsodeListasdeControldeAcceso(ACLs)enLinuxIgnacioArenazaNuo

    Proyectoescomposlinux.org([email protected])

    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).