From 9ec28c1a49c38e10af4944229e99f0deca67ba30 Mon Sep 17 00:00:00 2001 From: Martin Gracik Date: Tue, 16 Nov 2010 09:36:07 +0100 Subject: [PATCH] Add chown and chmod functions to sysutils --- src/pylorax/sysutils.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/pylorax/sysutils.py b/src/pylorax/sysutils.py index 619cc586..65062b08 100644 --- a/src/pylorax/sysutils.py +++ b/src/pylorax/sysutils.py @@ -28,6 +28,9 @@ import sys import os import re import fileinput +import pwd +import grp +import glob import subprocess @@ -56,6 +59,33 @@ def replace(fname, find, replace): fin.close() +def chown_(path, user=None, group=None, recursive=False): + uid = gid = -1 + + if user is not None: + uid = pwd.getpwnam(user)[2] + if group is not None: + gid = grp.getgrnam(group)[2] + + for fname in glob.iglob(path): + os.chown(fname, uid, gid) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chown_(nested, user, group, recursive) + + +def chmod_(path, mode, recursive=False): + for fname in glob.iglob(path): + os.chmod(fname, mode) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chmod_(nested, mode, recursive) + + def create_loop_dev(fname): cmd = ["losetup", "-f"] p = subprocess.Popen(cmd, stdout=subprocess.PIPE)