我就废话不多说了,还是直接看代码吧!

# -*- 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);

补充知识:Python中获取某个用户对某个文件或目录的访问权限

在Python中我们通常可以使用os.access()函数来获取当前用户对某个文件或目录是否有某种权限,但是要获取某个用户对某个文件或目录是否有某种权限python中没有很好的方法直接获取,因此我写了个函数使用stat和pwd模块来实现这一功能。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import os

import pwd

import stat

def 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检查目录文件权限并修改目录文件权限的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: python检查目录文件权限并修改目录文件权限的操作

本文地址: http://www.cppcns.com/jiaoben/python/302660.html

python文件目录无权限_python检查目录文件权限并修改目录文件权限的操作相关推荐

  1. 打开被独占的文件方法(二) -- 修改句柄访问权限

    打开被独占的文件方法(二) -- 修改句柄访问权限 2010年06月08日 星期二 11:40 来自:http://hi.baidu.com/wsh_chb/blog/item/1dfafadd4da ...

  2. linux python命令无反应_Python学习第164课--Linux命令行特殊符号的意义及命令的语法规则...

    [每天几分钟,从零入门python编程的世界!] 这节我们介绍Linux系统命令行中的一些特定的符号具有什么含义,以及命令行的语法规则. ●Linux命令行中特定的符号的含义 比如我登录到系统中之后, ...

  3. 利用python处理pdf文本_Python用于NLP :处理文本和PDF文件

    原标题:Python用于NLP :处理文本和PDF文件 提示:代码图片可以点击全屏查看,双指操作还可以放大缩小. 这是我的Python用于自然语言处理(NLP)系列文章的第一篇文章.在本文中,我们将从 ...

  4. python tempfile自动删除_Python tempfile模块生成临时文件和临时目录

    tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好. tempfile 模块中常用的函数,如表 1 所示. 表 1 t ...

  5. ftp服务器 修改文件,ftp服务器修改文件属性的权限

    ftp服务器修改文件属性的权限 内容精选 换一换 本课程主要针对openEuler操作系统工程师在基础运维工作,以文件共享服务器的搭建和运维为案例,讲解openEuler操作系统的基础知识,并培养基础 ...

  6. linux cp 目录不存在自动创建,关于linux:Linux技巧cp命令自动创建不存在的目录和只复制修改的文件...

    复制时主动创立不存在的子目录 在 Linux 中,能够应用 cp 命令的 --path 选项指定在复制的时候主动创立不存在的子目录. 例如执行上面的命令: $ cp --path java/com/s ...

  7. 什么是Hosts文件以及如何修改Hosts文件

    一.什么是hosts文件 hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联" 数据库 ".当用户在浏览器中输入一个需要登录 ...

  8. hosts文件_电脑修改hosts文件屏蔽网站方法

    说起hosts文件我想有很多电脑用户都不会感到陌生,因为利用它我们可以屏蔽一些网站,但是有很多电脑用户都不知道电脑如何修改hosts文件屏蔽网站,那么电脑如何修改hosts文件屏蔽网站呢?下面为大家带 ...

  9. linux更改文件所属组别,修改Linux文件的所属组与所有人的命令方法

    一.chown修改webroot文件夹的所属人(owner)为 www 1.修改单个文件或者文件夹 chown www ./wwwroot #修改当前目录下的wwwroot文件夹的所属人为www 2. ...

最新文章

  1. git branch
  2. rsync同步(2010年写作)
  3. tomcat启动完成执行 某个方法 定时任务(Spring)
  4. What Is Text Mining?
  5. REHL yum的配置(本地和centos源)
  6. CSS布局技巧之——各种居中
  7. 使用mongoose和bcrypt做认证
  8. Struts2学习笔记(十六) 文件上传(File Upload)
  9. JDK9的安装与配置
  10. 如何在 macOS 中批量重命名文件?
  11. 【单目标优化求解】基于matlab遗传算法求解单目标优化问题【含Matlab源码 1320期】
  12. 基于深度学习的音乐推荐系统简述
  13. 禅道下载与安装教程(完整版)
  14. Power BI Desktop 中的数据源
  15. U盘系统、格式化等问题的解决办法
  16. Xcode及Mac快捷键
  17. HOE 33187,HOE33187,HOE-33187,23623-08-7用于染色DNA的蓝色荧光染料家族的一部分
  18. C语言数字图像处理进阶---12光照特效滤镜
  19. 梳理原型结构的方法小结
  20. 苹果Swift编程语言入门教程【中文版】

热门文章

  1. Shell脚本学习-阶段三
  2. mysql查询重复用户名_mysql取出以上用户名(去除重复),score值最高的所有记录,查出重复记录...
  3. 【Computer Organization笔记11】多周期CPU
  4. R之data.table速查手册
  5. inno setup 打包脚本学习
  6. sv_labs学习笔记 专栏说明博文目录
  7. 思科路由器Ez×××解决地址重叠测试
  8. java 下一代_Java 下一代: 混入和特征
  9. php 内容采集_php开发工程师和大数据开发工程师有什么区别
  10. 修改QtCreator的默认pro工程文件,添加assert.h条件切换