Python 查看文件的读写权限方法
实例如下:
#-*-coding:utf-8-*- #@authorflynetcn importsys,os,pwd,stat,datetime; LOG_FILE='/var/log/checkDirPermission.log'; nginxWritableDirs=[ '/var/log/nginx', '/usr/local/www/var', ]; otherReadableDirs=[ '/var/log/nginx', '/usr/local/www/var/log', ]; dirs=[]; files=[]; deflogger(level,str): logFd=open(LOG_FILE,'a'); logFd.write(datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S.%f')+":"+("WARNING"iflevelelse"NOTICE")+str); logFd.close(); defwalktree(top,callback): forfinos.listdir(top): pathname=os.path.join(top,f); mode=os.stat(pathname).st_mode; ifstat.S_ISDIR(mode): callback(pathname,True); walktree(pathname,callback); elifstat.S_ISREG(mode): callback(pathname,False); else: logger(1,"walktreeskipping%s\n"%(pathname)); defcollectPath(path,isDir=False): ifisDir: dirs.append(path); else: files.append(path); defcheckNginxWritableDirs(paths): uid=pwd.getpwnam('nginx').pw_uid; gid=pwd.getpwnam('nginx').pw_gid; fordinpaths: dstat=os.stat(d); ifdstat.st_uid!=uid: try: os.chown(d,uid,gid); except: logger(1,"chown(%s,nginx,nginx)failed\n"%(d)); defcheckOtherReadableDirs(paths,isDir=False): fordinpaths: dstat=os.stat(d); ifisDir: checkMode=5; willBeMode=dstat.st_mode|stat.S_IROTH|stat.S_IXOTH; else: checkMode=4; willBeMode=dstat.st_mode|stat.S_IROTH; ifint(oct(dstat.st_mode)[-1:])&checkMode!=checkMode: try: os.chmod(d,willBeMode); except: logger(1,"chmod(%s,%d)failed\n"%(d,oct(willBeMode))); if__name__=="__main__": fordinnginxWritableDirs: walktree(d,collectPath) dirs=dirs+files; checkNginxWritableDirs(dirs); dirs=[]; files=[]; fordinotherReadableDirs: walktree(d,collectPath) checkOtherReadableDirs(dirs,True); checkOtherReadableDirs(files,False);
os.chmod(path,mode)这个方法应该很简单,只需要2个参数,一个是路径,一个是说明路径的模式,下面列出了这个用法中可以使用的一些常用的模式:
stat.S_ISUID:SetuserIDonexecution.不常用
stat.S_ISGID:SetgroupIDonexecution.不常用
stat.S_ENFMT:Recordlockingenforced.不常用
stat.S_ISVTX:Savetextimageafterexecution.在执行之后保存文字和图片
stat.S_IREAD:Readbyowner.对于拥有者读的权限
stat.S_IWRITE:Writebyowner.对于拥有者写的权限
stat.S_IEXEC:Executebyowner.对于拥有者执行的权限
stat.S_IRWXU:Read,write,andexecutebyowner.对于拥有者读写执行的权限
stat.S_IRUSR:Readbyowner.对于拥有者读的权限
stat.S_IWUSR:Writebyowner.对于拥有者写的权限
stat.S_IXUSR:Executebyowner.对于拥有者执行的权限
stat.S_IRWXG:Read,write,andexecutebygroup.对于同组的人读写执行的权限
stat.S_IRGRP:Readbygroup.对于同组读的权限
stat.S_IWGRP:Writebygroup.对于同组写的权限
stat.S_IXGRP:Executebygroup.对于同组执行的权限
stat.S_IRWXO:Read,write,andexecutebyothers.对于其他组读写执行的权限
stat.S_IROTH:Readbyothers.对于其他组读的权限
stat.S_IWOTH:Writebyothers.对于其他组写的权限
stat.S_IXOTH:Executebyothers.对于其他组执行的权限
>>>os.stat('test') posix.stat_result(st_mode=33204,st_ino=93328670,st_dev=18L,st_nlink=1,st_uid=30448,st_gid=1000,st_size=0,st_atime=1445932321,st_mtime=1445932321,st_ctime=1445932321) >>>os.stat('test').st_mode 33204 >>>oct(os.stat('test').st_mode) '0100664' >>>oct(os.stat('test').st_mode)[-3:] '664'
以上这篇Python查看文件的读写权限方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。