温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python 查看文件的读写权限方法

发布时间:2020-08-21 06:54:38 来源:脚本之家 阅读:293 作者:_Black铁木真 栏目:开发技术

实例如下:

 # -*- coding: utf-8 -*- # @author flynetcn import sys, 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 = []; def logger(level, str):	logFd = open(LOG_FILE, 'a');	logFd.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')+": "+("WARNING " if level else "NOTICE ")+str);	logFd.close(); def walktree(top, callback):	for f in os.listdir(top):	pathname = os.path.join(top, f);	mode = os.stat(pathname).st_mode;	if stat.S_ISDIR(mode):	callback(pathname, True);	walktree(pathname, callback);	elif stat.S_ISREG(mode):	callback(pathname, False);	else:	logger(1, "walktree skipping %s\n" % (pathname)); def collectPath(path, isDir=False):	if isDir:	dirs.append(path);	else:	files.append(path); def checkNginxWritableDirs(paths):	uid = pwd.getpwnam('nginx').pw_uid;	gid = pwd.getpwnam('nginx').pw_gid;	for d in paths:	dstat = os.stat(d);	if dstat.st_uid != uid:	try:	os.chown(d, uid, gid);	except:	logger(1, "chown(%s, nginx, nginx) failed\n" % (d)); def checkOtherReadableDirs(paths, isDir=False):	for d in paths:	dstat = os.stat(d);	if isDir:	checkMode = 5;	willBeMode = dstat.st_mode | stat.S_IROTH | stat.S_IXOTH;	else:	checkMode = 4;	willBeMode = dstat.st_mode | stat.S_IROTH;	if int(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__":	for d in nginxWritableDirs:	walktree(d, collectPath)	dirs = dirs + files;	checkNginxWritableDirs(dirs);	dirs = [];	files = [];	for d in otherReadableDirs:	walktree(d, collectPath)	checkOtherReadableDirs(dirs, True);	checkOtherReadableDirs(files, False); 

os.chmod(path,mode) 这个方法应该很简单,只需要2个参数,一个是路径,一个是说明路径的模式,下面列出了这个用法中可以使用的一些常用的模式:

stat.S_ISUID: Set user ID on execution. 不常用

stat.S_ISGID: Set group ID on execution. 不常用

stat.S_ENFMT: Record locking enforced. 不常用

stat.S_ISVTX: Save text image after execution. 在执行之后保存文字和图片

stat.S_IREAD: Read by owner. 对于拥有者读的权限

stat.S_IWRITE: Write by owner. 对于拥有者写的权限

stat.S_IEXEC: Execute by owner. 对于拥有者执行的权限

stat.S_IRWXU: Read, write, and execute by owner. 对于拥有者读写执行的权限

stat.S_IRUSR: Read by owner. 对于拥有者读的权限

stat.S_IWUSR: Write by owner. 对于拥有者写的权限

stat.S_IXUSR: Execute by owner. 对于拥有者执行的权限

stat.S_IRWXG: Read, write, and execute by group. 对于同组的人读写执行的权限

stat.S_IRGRP: Read by group. 对于同组读的权限

stat.S_IWGRP: Write by group. 对于同组写的权限

stat.S_IXGRP: Execute by group. 对于同组执行的权限

stat.S_IRWXO: Read, write, and execute by others. 对于其他组读写执行的权限

stat.S_IROTH: Read by others. 对于其他组读的权限

stat.S_IWOTH: Write by others. 对于其他组写的权限

stat.S_IXOTH: Execute by others. 对于其他组执行的权限

 >>> 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 查看文件的读写权限方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持亿速云。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI