python获取文件读写权限_Python 查看文件的读写权限方法

实例如下:

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dd , /dev/zero和/dev/null

dd 命令 功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现 DOS 下的 diskcopy 命令的作用。先用 dd 命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上&#xf…

netpbm

netpbm是一款图形转换的工具。netpbm工具库格式转换命令.Netpbm是一个很好用的,很强大的命令方式图像处理程序,支持WINDOWS、LINUX及部分UNIX系统。将一幅png图像转成bmp格式。命令序列为:pngtopnm test.png > a.pnmppmtobmp -bpp24 a.pnm…

利用anaconda prompt打开jupyter notebook

切换盘符 到指定文件夹下 查看改文件夹下的文件夹 再其文件夹下打开jupyter notebook 或者 结果: 创建python3文件 编写代码(运行代码快捷键ctrl enter​​​​​​​)

rest接口_深度干货 | 测试REST服务接口

openEA开源社区开源,我们是认真的!这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧!摘要:较新的BPM版本中,提供了SOAP和REST两种接口&#xff0c…

asp。net中常用的文件操作类

**文件操作类 **/ #region 引用命名空间 using System; using System.Collections.Generic; using System.Text; using System.IO; #endregionnamespace CommonUtilities { /// <summary> /// 文件操作类 /// </summary> public class FileHelper { #region 检测指…

修改linux开机画面

制作开机Logo方法一:Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片&#xff0c;把自己的Logo图片&#xff08;png格式&#xff09;转换成ppm格式&#xff0c;替换这个文件&#xff0c; 同时删除logo_linux_clut224.c logo_linux_clut224.o文件 &#xff0c;重…

列表反向组成数字相加,并输出数组反向组成列表

# Definition for singly-linked list. #在节点ListNode定义中&#xff0c;定义为节点为结构变量。 #节点存储了两个变量&#xff1a;value 和 next。value 是这个节点的值&#xff0c;next 是指向下一节点的指针&#xff0c;当 next 为空指针时&#xff0c;这个节点是链表的最…

公众号jdk 获取手机号_如何获取公众号推文封面图

曾经有一张好看的图片摆在我的眼前&#xff0c;我却没能保存&#xff0c;等到失去的时候我才后悔莫及。如果上天能够给我一个再来一次的机会&#xff0c;我会对那张图片说三个字&#xff1a;我&#xff0c;要&#xff0c;你……现在大部分使用智能手机的小伙伴们&#xff0c;一…

container_of深入理解

container_of在linux头文件kernel.h中定义&#xff0c;如下&#xff1a; 14#ifndef offsetof15#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)16#endif1718#ifndef container_of19/**20 * container_of - cast a member of a structure out to the co…

正在读取软件包列表... 有错误!

正在读取软件包列表... 有错误&#xff01;E: Encountered a section with no Package: headerE: Problem with MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dists_natty_main_i18n_Translation-enE: 无法解析或打开软件包的列表或是状态文件。问题&#xff1a…

2021-10-19

下载的工具箱 找到下载工具箱位置 打开工具箱属性 出现错误1 无法启动配置 RasterCommander.ImageServer 解决方法

python自动控制库_Python最为神奇的库,可控制你的鼠标键盘自动运行!

Python最为神奇的库&#xff0c;可控制你的鼠标键盘自动运行&#xff01;这个库让你可以控制和监控输入设备。喜欢我还有更多干货入门知识&#xff0c;来公众号『程序员中文社区』聊聊吧。Python最为神奇的库&#xff0c;可控制你的鼠标键盘自动运行&#xff01;对于每一种输入…

iframe 自适应高度 跨域

window.navigator.Allframesnull;window.navigator.Allframes { iframe1: window }; //根据页面name属性查找到子页面所在Ifame对象 window.navigator.getFrameByNamefunction(oName){ return this.Allframes[oName] }; //将一个Iframe对象注册到window.navigator.Al…

【转】Windows服务调试技巧

关于调试windows service, 其实这是一个老生常谈的问题了. 通常的处理办法是, 在service运行后, 在调试器中选择attach to process. 然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试. 往往当attach到我们的service的时候, 这部分代码…

visual studio 没有属性页_驯龙物语10月14日更新|新增快捷购买页签

更新公告大家好&#xff0c;我是小白龙&#xff0c;很高兴又与大家见面啦&#xff01;维利克洛大陆又迎来了新内容&#xff0c;守护者们要仔细阅读看到最后喔&#xff01;更新时间本次更新于10月14日6:00-7:00进行&#xff0c;视更新进度可能提前开服或顺延&#xff0c;各位守护…

JDK1.6

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来&#xff0c;JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心&#xff0c;包括了Java运行环境&#xff0c;Java工具和Java基础的类库。 java环境变量配置&#xff1a; 如果是Window…

AE开发右键缩放至图层

添加 右键的控件 将控件添加至axtoccontrol 双击进入点击事件 private void 缩放至图层ToolStripMenuItem_Click(object sender, EventArgs e){axMapControl1.ActiveView.FullExtent = m_Layer.AreaOfInterest;axMapControl1.ActiveView.Refresh();axTOCControl1.Update();}…

快速幂取余

快速幂取模算法&#xff0c;留着以后慢慢研究 long long modExp(long long a,long long b,long long n){ long long t,y; t 1; y a; while(b){ if(b % 2) t t * y % n; y y * y % n; b >> 1; } return t;} 转载于:https:/…