Modificando authz file

4
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_us Los contenidos de dichos ficheros deben ser agregados por el Administrador de Repositorios al fichero authz #!/usr/bin/env pyton import 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:

description

Script en Python que sirve para obtener, cuales deben ser las líneas a ser agregadas en el authz file, una vez se sepa cual es la poítica de accesos que desea el responsable del Repositorio.

Transcript of Modificando authz file

Page 1: 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

Page 2: Modificando authz file

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

Page 3: Modificando authz file

  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 =