Modificando authz file
-
Upload
paulino-huerta-sanchez -
Category
Education
-
view
371 -
download
2
description
Transcript of Modificando authz file
1. Se tiene el siguiente contenido en un fichero llamado file en la carpeta de trabajo:
PROG-ASI1 [paulino,rafa,jose]maria[maria,pedro]sofi[sofia,juan]andres[andres]raul[andres,pedro,rauli]
Este fichero contiene la política de acceso al repositorio PROG-ASI1, sobre el cual trabajará un conjunto de usuarios
2. Ejecutando el siguiente script Python se obtienen dos ficheros en /tmp: output_perm y output_usLos contenidos de dichos ficheros deben ser agregados por el Administrador de Repositorios al fichero authz
#!/usr/bin/env pytonimport re
D={}S=set([])T=set([])
def agrupar(line): match=separar(line) repos=match.group(1).rstrip() D[repos]=match.group(2) def separar(line): line=line.rstrip() line=line.lstrip() match=re.match('(.*)\[(.*)\](.*)',line) return match
def put_en_set(clave): for i in D: if i!=clave: alum=D[i].split(',') for a in alum: S.add(a)
def presentar(A): c='' i=0 for t in A: if i<len(A)-1: c+='%s,' % t else: c+='%s' % t
i+=1 return c
def main(): f=open('file') while True: line=f.readline() if not line: break agrupar(line) if len(D.keys()) == 1: for clave in D: repositorio=clave us_rw_repos=D[clave]
put_en_set(clave) # generar el total de autorizados al repo output_us = open('/tmp/output_us', 'w') output_perm = open('/tmp/output_perm', 'w') output_us.write('u-rw-%s = %s\n' % (repositorio,us_rw_repos)) c=presentar(S) output_us.write('u-r-%s = %s\n' % (repositorio,c)) output_perm.write('[%s:/]\n' % repositorio) output_perm.write('@u-rw-%s = rw\n' % repositorio) output_perm.write('@u-r-%s = r\n' % repositorio) for i in D: if i!=clave: alum=D[i].split(',') for a in alum: T.add(a) R=S-T c=presentar(alum) output_us.write('u-rw-%s-%s = %s\n' % (repositorio,i,c)) c=presentar(R) output_us.write('u-nor-%s-%s = %s\n' % (repositorio,i,c)) output_perm.write('[%s:/%s]\n' % (repositorio,i)) output_perm.write('@u-rw-%s-%s = rw\n' % (repositorio,i)) output_perm.write('@u-nor-%s-%s = \n' % (repositorio,i)) T.clear() R.clear() output_perm.close()
output_us.close()
if __name__ == "__main__": main()
Produce la siguiente salida:
fichero /tmp/output_us
u-rw-PROG-ASI1 = paulino,rafa,joseu-r-PROG-ASI1 = pedro,andres,juan,sofia,rauli,mariau-rw-PROG-ASI1-raul = andres,pedro,rauliu-nor-PROG-ASI1-raul = juan,sofia,mariau-rw-PROG-ASI1-sofi = sofia,juanu-nor-PROG-ASI1-sofi = rauli,andres,pedro,mariau-rw-PROG-ASI1-andres = andresu-nor-PROG-ASI1-andres = sofia,rauli,juan,pedro,mariau-rw-PROG-ASI1-maria = maria,pedrou-nor-PROG-ASI1-maria = rauli,andres,juan,sofia
fichero /tmp/output_perm
[PROG-ASI1:/]@u-rw-PROG-ASI1 = rw@u-r-PROG-ASI1 = r[PROG-ASI1:/raul]@u-rw-PROG-ASI1-raul = rw@u-nor-PROG-ASI1-raul =[PROG-ASI1:/sofi]@u-rw-PROG-ASI1-sofi = rw@u-nor-PROG-ASI1-sofi =[PROG-ASI1:/andres]@u-rw-PROG-ASI1-andres = rw@u-nor-PROG-ASI1-andres =[PROG-ASI1:/maria]@u-rw-PROG-ASI1-maria = rw@u-nor-PROG-ASI1-maria =