import os.path import stat def get_ugid(name, para): ''' 1:owner id 2:group id ''' fileobj = None if para == 1: fileobj = open('/etc/passwd') elif para == 2: fileobj = open('/etc/group') else: pass for line in fileobj: if line.startswith(name + ':'): tmp= line.split(':') return tmp[2] return None def modify_export_path(export_path, stat_list): '''stat = (src_owner, src_group, dest_owner, dest_group)''' pre_path = '' dir_list = get_dir_list(export_path) for index in dir_list: pre_path = pre_path + '/' + index print('pre_path='+pre_path) if not os.path.isdir(pre_path): os.makedirs(pre_path, mode=0755) stat_list = os.stat(pre_path) if stat_list.st_uid == stat_list[0]: os.chmod(pre_path, stat.S_ISUID(stat_list[2])) if stat_list.st_gid == stat_list[1]: os.chmod(pre_path, stat.S_ISGID(stat_list[3])) def get_dir_list(export_path): rst = [] export_path = os.path.abspath(export_path) if export_path == '': return rst export_path = export_path.replace('/', '\\') dir_list = export_path.split('\\') for index in dir_list: if index != '': rst.append(index) return rst if __name__ == '__main__': print(get_ugid('xiangzi', 1)) path1= '/' print(get_dir_list(path1)) path1= '/abc/d' print(get_dir_list(path1)) path1= '/abc/d/' print(get_dir_list(path1)) path1= 'abc/d/' print(get_dir_list(path1)) stat_list = (get_ugid('xiangzi', 1), get_ugid('xiangzi', 2), get_ugid('root', 1), get_ugid('root', 2)) print(stat_list) export_path = ('/home/xiangzi/Code/a/b') modify_export_path(export_path, stat_list)
python 获取用户名和group名
最新推荐文章于 2023-06-01 15:53:41 发布