Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • dnn/ptbcli
1 result
Select Git revision
  • master
1 result
Show changes
Commits on Source (2)
...@@ -13,6 +13,7 @@ import openpyxl ...@@ -13,6 +13,7 @@ import openpyxl
PATH = r'o:\4-3\4-3-Vorhaben' PATH = r'o:\4-3\4-3-Vorhaben'
DATA = r'o:\4-3\4-3-Vorhaben\Zugriffsliste.xlsx' DATA = r'o:\4-3\4-3-Vorhaben\Zugriffsliste.xlsx'
SUPERUSERS = {'benkle01', 'doersc01', 'kronja01', 'legero01', 'lisdat01', 'nicolo01', 'sterr01'}
IDS = { IDS = {
'luecke': 2, 'luecke': 2,
'klose': 5, 'klose': 5,
...@@ -158,12 +159,12 @@ def print_group_members(name, level=1): ...@@ -158,12 +159,12 @@ def print_group_members(name, level=1):
prefix = ' ' * level prefix = ' ' * level
if name.startswith('8GP'): if name.startswith('8GP'):
for member in get_group_members(name): for member in get_group_members(name):
print(f'{prefix}{member}') print(f'{prefix} {member}')
print_group_members(member, level + 1) print_group_members(member, level + 1)
def _print_acl(path, print_inherited=True, print_traversal=False): def print_acl(path, print_inherited=True, print_traversal=False):
print(f'{style.bright_green}{path}{style.reset}') print(f'. {path}')
acl = get_acl(path) acl = get_acl(path)
for user, permissions in acl.items(): for user, permissions in acl.items():
inherited, permissions = parse_permissions(permissions) inherited, permissions = parse_permissions(permissions)
...@@ -172,7 +173,7 @@ def _print_acl(path, print_inherited=True, print_traversal=False): ...@@ -172,7 +173,7 @@ def _print_acl(path, print_inherited=True, print_traversal=False):
if not print_traversal and permissions == ('RX',): if not print_traversal and permissions == ('RX',):
continue continue
permissions = ','.join(permissions) permissions = ','.join(permissions)
print(f'{user:50s}: {permissions}') print(f' {user}: {permissions}')
domain, name = user.split('\\') domain, name = user.split('\\')
print_group_members(name) print_group_members(name)
print() print()
...@@ -212,6 +213,24 @@ def main(): ...@@ -212,6 +213,24 @@ def main():
def verify(verbose): def verify(verbose):
"""Verify ACL on folders.""" """Verify ACL on folders."""
errors = 0 errors = 0
acl = get_acl(PATH)
for user, permissions in acl.items():
inherited, permissions = parse_permissions(permissions)
if inherited:
continue
if permissions == ('RX',):
continue
assert permissions == ('RX', 'W', 'DC'), permissions
domain, name = user.split('\\')
users = collect_users(name)
not_authorized = users - SUPERUSERS
if not_authorized:
print(f'. {PATH}')
s = ', '.join(f'{style.red}{name}{style.reset}' for name in sorted(not_authorized))
print(f' {s}')
errors += 1
master = parse_excel_sheet() master = parse_excel_sheet()
for entry in sorted(os.listdir(PATH)): for entry in sorted(os.listdir(PATH)):
if entry.startswith('.'): if entry.startswith('.'):
...@@ -247,7 +266,7 @@ def verify(verbose): ...@@ -247,7 +266,7 @@ def verify(verbose):
print(f'. {style.reset}') print(f'. {style.reset}')
s = ', '.join(f'{style.red}{name}{style.reset}' for name in sorted(not_authorized)) s = ', '.join(f'{style.red}{name}{style.reset}' for name in sorted(not_authorized))
print(f' {s}') print(f' {s}')
errors = 1 errors += 1
sys.exit(errors) sys.exit(errors)
...@@ -276,5 +295,15 @@ def dump(json): ...@@ -276,5 +295,15 @@ def dump(json):
print() print()
@main.command(name='list')
@click.option('-v', '--verbose', count=True)
def acl(verbose):
print_acl(PATH, print_traversal=verbose)
for entry in sorted(os.listdir(PATH)):
if entry.startswith('.'):
continue
print_acl(os.path.join(PATH, entry), print_inherited=False, print_traversal=verbose)
if __name__ == '__main__': if __name__ == '__main__':
main() main()