色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

python檢查目錄文件權(quán)限并修改目錄文件權(quán)限的操作

瀏覽:2日期:2022-08-02 17:02:17

我就廢話不多說了,還是直接看代碼吧!

# -*- 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 %sn' % (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) failedn' % (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) failedn' % (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);

補(bǔ)充知識:Python中獲取某個用戶對某個文件或目錄的訪問權(quán)限

在Python中我們通常可以使用os.access()函數(shù)來獲取當(dāng)前用戶對某個文件或目錄是否有某種權(quán)限,但是要獲取某個用戶對某個文件或目錄是否有某種權(quán)限python中沒有很好的方法直接獲取,因此我寫了個函數(shù)使用stat和pwd模塊來實(shí)現(xiàn)這一功能。

#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport pwdimport statdef is_readable(path, user): user_info = pwd.getpwnam(user) uid = user_info.pw_uid gid = user_info.pw_gid s = os.stat(path) mode = s[stat.ST_MODE] return ( ((s[stat.ST_UID] == uid) and (mode & stat.S_IRUSR > 0)) or ((s[stat.ST_GID] == gid) and (mode & stat.S_IRGRP > 0)) or (mode & stat.S_IROTH > 0) )def is_writable(path, user): user_info = pwd.getpwnam(user) uid = user_info.pw_uid gid = user_info.pw_gid s = os.stat(path) mode = s[stat.ST_MODE] return ( ((s[stat.ST_UID] == uid) and (mode & stat.S_IWUSR > 0)) or ((s[stat.ST_GID] == gid) and (mode & stat.S_IWGRP > 0)) or (mode & stat.S_IWOTH > 0) )def is_executable(path, user): user_info = pwd.getpwnam(user) uid = user_info.pw_uid gid = user_info.pw_gid s = os.stat(path) mode = s[stat.ST_MODE] return ( ((s[stat.ST_UID] == uid) and (mode & stat.S_IXUSR > 0)) or ((s[stat.ST_GID] == gid) and (mode & stat.S_IXGRP > 0)) or (mode & stat.S_IXOTH > 0) )

使用方法

print is_readable(’/home’, root)print is_writable(’/home’, root)print is_executable(’/home’, root)print is_readable(’/tmp’, admin)print is_writable(’/tmp’, admin)print is_executable(’/tmp’, admin)

以上這篇python檢查目錄文件權(quán)限并修改目錄文件權(quán)限的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩精品视频免费在线观看 | 青青热久久综合网伊人 | 亚洲国产成a人v在线观看 | 久在线观看 | 中国老太性色xxxxxhd | 日本免费一区二区三区a区 日本免费一区二区三区看片 | 精品一区二区三区免费站 | 亚洲一区免费观看 | 精品国产一区二区三区免费看 | 国产免费久久精品久久久 | 国产精品一一在线观看 | 国产欧美日韩一区二区三区 | 精品在线播放视频 | 最新版天堂资源中文官网 | 成年人视频在线免费看 | 国产精品亚洲欧美日韩一区在线 | 草草影院ccyycom浮力影院 | a理论片 | 国产人成午夜免视频网站 | 一区二区三区在线播放视频 | 欧美日韩在线观看精品 | 欧美久在线观看在线观看 | 欧美性高清视频免费看www | 欧美一级毛片片免费孕妇 | 精品国产午夜肉伦伦影院 | 国产成人毛片视频不卡在线 | 欧美日韩免费一区二区三区 | 在线高清一级欧美精品 | 日韩一级欧美一级毛片在 | 国产美女主播一级成人毛片 | 青木玲中文字幕一区二区 | 欧美第一精品 | 欧美怡红院在线观看 | 久久视频这里只有精品 | 精品毛片| 456亚洲老头视频 | 亚洲国产精品激情在线观看 | 欧美jizz18性欧美 | 最新主播福利视频在线观看 | 大伊香蕉精品视频在线观看 | 久爱www免费人成福利播放 |