国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 查看文件的讀寫權限方法

2020-02-22 22:57:50
字體:
來源:轉載
供稿:網(wǎng)友

實例如下:

# -*- coding: utf-8 -*-# @author flynetcnimport 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個參數(shù),一個是路徑,一個是說明路徑的模式,下面列出了這個用法中可以使用的一些常用的模式:

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. 在執(zhí)行之后保存文字和圖片

stat.S_IREAD: Read by owner. 對于擁有者讀的權限

stat.S_IWRITE: Write by owner. 對于擁有者寫的權限

stat.S_IEXEC: Execute by owner. 對于擁有者執(zhí)行的權限

stat.S_IRWXU: Read, write, and execute by owner. 對于擁有者讀寫執(zhí)行的權限

stat.S_IRUSR: Read by owner. 對于擁有者讀的權限

stat.S_IWUSR: Write by owner. 對于擁有者寫的權限

stat.S_IXUSR: Execute by owner. 對于擁有者執(zhí)行的權限

stat.S_IRWXG: Read, write, and execute by group. 對于同組的人讀寫執(zhí)行的權限

stat.S_IRGRP: Read by group. 對于同組讀的權限

stat.S_IWGRP: Write by group. 對于同組寫的權限

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌乐县| 延边| 广南县| 新乡县| 青川县| 客服| 鹿泉市| 武威市| 沛县| 龙胜| 巴中市| 临武县| 阳山县| 花垣县| 屏边| 胶南市| 襄城县| 七台河市| 德令哈市| 平泉县| 建宁县| 扬中市| 中宁县| 宁波市| 阳曲县| 民县| 汾西县| 彩票| 建昌县| 明溪县| 邓州市| 昌邑市| 长葛市| 吉安县| 怀仁县| 密山市| 镇安县| 绥芬河市| 罗江县| 绿春县| 五华县|