日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2023/12/10 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python获取文件读写权限_Python 查看文件的读写权限方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實例如下:

# -*- 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) 這個方法應(yīng)該很簡單,只需要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. 對于擁有者讀的權(quán)限

stat.S_IWRITE: Write by owner. 對于擁有者寫的權(quán)限

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

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

stat.S_IRUSR: Read by owner. 對于擁有者讀的權(quán)限

stat.S_IWUSR: Write by owner. 對于擁有者寫的權(quán)限

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

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

stat.S_IRGRP: Read by group. 對于同組讀的權(quán)限

stat.S_IWGRP: Write by group. 對于同組寫的權(quán)限

stat.S_IXGRP: Execute by group. 對于同組執(zhí)行的權(quán)限

stat.S_IRWXO: Read, write, and execute by others. 對于其他組讀寫執(zhí)行的權(quán)限

stat.S_IROTH: Read by others. 對于其他組讀的權(quán)限

stat.S_IWOTH: Write by others. 對于其他組寫的權(quán)限

stat.S_IXOTH: Execute by others. 對于其他組執(zhí)行的權(quán)限

>>> 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 查看文件的讀寫權(quán)限方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持萬仟網(wǎng)。

如您對本文有疑問或者有任何想說的,請點擊進行留言回復(fù),萬千網(wǎng)友為您解惑!

總結(jié)

以上是生活随笔為你收集整理的python获取文件读写权限_Python 查看文件的读写权限方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。