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 发布
本文介绍了一个Python脚本,该脚本用于处理文件路径,包括创建目录、获取目录列表等,并能根据指定的源文件所有者和组来设置目标路径的所有者和组权限。此外,还提供了一个函数用于从/etc/passwd和/etc/group文件中查找特定用户名对应的用户ID和组ID。
1318

被折叠的 条评论
为什么被折叠?



