uso de listas de control de acceso (acls) en linux
DESCRIPTION
Uso de Listas de Control de Acceso (ACLs) en LinuxTRANSCRIPT
-
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).