-
2020-11-20 22:40:28
实例如下:
# -*- 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 查看文件的读写权限方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
更多相关内容 -
python修改linux中文件(文件夹)的权限属性操作
2020-12-20 09:43:44今天生成的对流云团路径图片放在linux下,文件的权限都是rw,没有x,后续的别人的程序调用不了,这里附上对三个属性的简单解释,有不够的欢迎大家补充 Linux的权限不是很细致,只有RWX三种 r(Read,读取):对文件而... -
Linux 服务器如何设置文件和文件夹的读写权限
2021-05-09 02:13:33记录下Linux 服务器设置文件和文件夹的读写权限的方法教程。修改文件可读写属性的方法例如:把index.htm 文件修改为可写可读可执行:chmod 777 index.htm要修改目录下所有文件属性可写可读可执行:chmod 777 *.*该...记录下Linux 服务器设置文件和文件夹的读写权限的方法教程。
修改文件可读写属性的方法
例如:把index.htm 文件修改为可写可读可执行:
chmod 777 index.htm
要修改目录下所有文件属性可写可读可执行:
chmod 777 *.*
该命令中可以使用 * 作为通配符。
比如:修改所有htm文件的属性:
chmod 777 *.htm
修改文件夹属性的方法
把目录 /images/small 修改为可写可读可执行:
chmod 777 /images/small
修改目录下所有的文件夹属性:
chmod 777 *
把文件夹名称用 * 来代替就可以了。
要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行:
chmod -R 777 /upload
总结 Linux 下文件和目录的权限区别:
文件:读文件内容(r)、写数据到文件(w)、作为命令执行文件(x)。
目录:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的链接)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件和子目录)
具体说就是:
(1)有只读权限的用户不能用 cd 进入该目录,还必须有执行权限才能进入。
(2)有执行权限的用户只有在知道文件名,并拥有读权利的情况下才可以访问目录下的文件。
(3)必须有读和执行权限才可以 ls 列出目录清单,或使用 cd 命令进入目录。
(4)有目录的写权限,可以创建、删除或修改目录下的任何文件或子目录,即使使该文件或子目录属于其他用户也是如此。
查看目录权限
查看文件权限的语句,在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)
那么就会出现相类似的信息,主要都是这些:
-rw-rw-r--
一共有10位数,其中:
最前面那个 - 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)
这里再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w ------------2
x ------------1
- ------------0
行动:
表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
-
文件系统和文件权限
2021-05-11 23:44:451. 文件系统Linux文件系统是一个由许多目录组成的树状结构。这些目录只是包含其他文件列表的文件。Linux在文件和目录之间没有区别。Linux文件系统中的所有文件都称为目录,这些文件的分类如下:包含数据,文本,图像...文件系统是一种由文件或文件夹的集合组织的结构。它确定对数据的控制,即如何存储和检索数据。
1. 文件系统
Linux文件系统是一个由许多目录组成的树状结构。这些目录只是包含其他文件列表的文件。Linux在文件和目录之间没有区别。Linux文件系统中的所有文件都称为目录,这些文件的分类如下:
包含数据,文本,图像,程序指令的普通文件。
用于访问硬件设备的特殊文件。
包含普通文件和特殊文件的目录。
下面让我们看一下Linux文件系统。使用ls -l命令列出所有文件和目录。
上面图中有七列,其定义如下:
第一列代表文件类型和文件权限。每个文件行均以文件类型开头,然后指定与文件关联的访问权限。如以下类型的文件,带有其特定字符:常规文件(-)
目录(d)
链接(l)
特殊档案(c)
套接(s)
命名管道(p)
块设备(b)
第二列代表存储块的数量。
第三列代表文件的所有者或具有管理权限的超级用户。
第四列代表所有者/超级用户组。
第五列代表文件大小。
第六列表示创建或最后修改文件的日期和时间。
最后一列代表文件或目录的名称。
2. 文件权限
尽管具有最佳安全性,基于Linux的操作系统仍需要文件权限来保护其文件系统,因为当用户向文件和目录分配不当权限时,会发生基于文件权限的问题。这些问题可能导致恶意或意外篡改文件系统。因此,Linux通过以下两个授权属性来保护其文件系统:
2.1. 权限
与文件相关的三种类型的权限如下:
阅读(r)权限,可以通过此权限可以查看文件的内容。
写入(w)权限,通过此权限可以修改文件内容。
执行(x)权限,通过此权限可以运行编程文件或脚本。
注意:在调用权限的情况下会提供破折号(-)。
2.2. 所有权
Linux用户分为以下三种:
所有者是创建文件的超级用户。他可以访问与文件关联的所有权限,包括读取,修改和运行文件。
用户组称为一组用户或多用户。超级用户创建用户组,组中的每个成员都具有与文件关联的相同访问权限。
其他用户(即第三方用户)是不属于超级用户/组成员的其他任何人。他们使用与超级用户/组成员创建或拥有的任何文件或目录关联的权限。
让我们通过一个例子来理解这个概念。
以第一列为例,它有十个槽位。
第一个插位(-)表示由aa.sh命名的文件。
接下来的三个插位(rw-)指定分配的所有者使用的权限。此权限表示可以读取和写入。在这里,执行权限被拒绝。
接下来的三个插位(r--)指定拥有该目录的组成员使用的权限。此权限表示可以读取权限,但不包括执行权限。
接下来的三个插位(r--)指定第三方用户使用的权限。此权限表示可以读取权限。在这里,读写权限均被拒绝。
3. 更改权限
可以使用chmod命令更改每个类(用户/组/其他)的文件权限。删除或添加任何类的任何权限的基本形式是:
chmod [class][operator][permission] file_name
chmod [ugoa][+or-][rwx] file_name
其中,
class由-u,g,o和a表示,其中u表示用户,g表示组,o表示其他,以及a对所有类。
operator(+或-)用于添加或删除权限。
permission由指示符r,w,x表示,以分别允许访问以读取,修改或运行脚本。
让我们更改下面给出的aa.sh文件的权限:
1. 为所有类添加执行的权限
chmod o+w,o+x aa.sh
2.删除其他类的写入和执行权限
chmod o-w,o-x aa.sh
因此,如果需要,都可以更改类的任何权限。
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
-
Linux 文件系统权限(一)
2021-05-10 20:09:31了解基本的文件系统的权限:权限 对文件的影响 对目录的影响r(读取) 可以读取文件的内容 可以列出目录的内容(文件名)w(写入) 可以更改文件的内容 可以创建或删除目录中的任一文件x(执行) 可以作为命令执行文件 可以...了解基本的文件系统的权限:
权限 对文件的影响 对目录的影响
r(读取) 可以读取文件的内容 可以列出目录的内容(文件名)
w(写入) 可以更改文件的内容 可以创建或删除目录中的任一文件
x(执行) 可以作为命令执行文件 可以访问目录的内容(取决于目录中文件的权限)
注意:通常目录有 r 和 x 权限 这样可以列出目录并访问其内容
如果对目录仅有 r 权限,可以列出其中文件的名称,但其他信息(包括权限或时间戮)都不可用,也不可访问
如果对某目录仅有 x 权限,则不能列出该目录中文件的名称,但如果已经知道对其具有读取权限的文件名称(当然不能用 Tab键补齐该文件名),那么他们可以通过明确的指定文件名来访问该文件的内容
文件前10个字符的含义:
第一个字符代表的含义:
c 是个字符设备文件
b 是个块设备文件(磁盘文件)
l 是符号链接
p 是管道文件
- 是普通文件
d 是目录文件
之后的 9个字符 3个为一组 从左到右分别代表 所属用户 所属组 其他
一组按 rwx 来,有则按相应的权限符表示 无则用 - 表示
更改文件/目录权限:
符号法关键字:
命令格式 : chmod WhoWhatWhich file|directory
Who 是指 u(用户) g(组) o(其他) a(全部)
What 是指 +(添加) -(删除) =(精确设置)
Which 是指 r(读取) w(写入) x(可执行)
注意:会覆盖原有的权限
数值法:
命令格式 :chomd ### file|dircectory
每个数字代表访问级别 :用户 组 其他
# 是 r=4 w=2 x=1 的和
由原来的 775 改成了 751
注意 : 对于在整个目录树中递归的设置权限,chmod 命令支持 -R选项,当使用此选项时,务必要使用 X 权限,而不是 x 权限,表示应仅对目录而不是普通文件设置执行权限。例如,以下命令将递归的设置对 /alice_file 及其组所有者的所有子所有者的读取和写入访问权限,但是仅执行权限应用于目录而非普通文件:
更改文件/目录的用户或组的所有权:
chown 用户名(想要改到的) 文件/目录绝对路径
chown :组名(想要改到的) 文件/目录绝对路径
或
chgrp 组名(想要改到的) 文件/目录绝对路径
-
Linux ls命令教程列出文件和目录
2020-10-07 13:55:17列出文件和目录 (List Files and Directories) We will start with a simple example. We will use ls command without an option. This will list regular files and directories of the current working path. ... -
Linux 文件和目录的读写执行权限详解
2021-05-09 00:15:191. 首先了解一个ls -l 文件的每列含义[root@zhs-pc ~]# ls -l a-rw-r--rw-1 test002 tester2791039月2 13:21 a下面介绍每列含义:(1)第一列:文件类型和权限,这部分稍后重点介绍,见后*001。(2)第二列:文件硬链接数... -
Linux文件和目录读写执行权限解析
2013-01-16 16:20:46Linux文件和目录读写执行权限解析 本文对linux系统下各种权限的文件和目录的新建、复制和删除等进行了测试和分析总结! -
linux文件读写权限命令
2018-05-05 11:04:38这算是容易忽略的问题 要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行: ...修改文件可读写属性的方法 例如:把index.htm 文件修改为可写可读可执行: chmod 777 index.htm 要修改 -
Linux文件权限学习总结
2021-01-09 14:54:32一、用户对文件或目录都有哪些权限? 四种:读、写、执行、没有权限 二、如何表示这四种权限? 如果用十进制数字表示,分别为:4、2、1、0;... r:用户拥有读取该文件内容的权限 用户拥有列出其中文件列 -
ftp服务器 文件权限设置
2021-08-11 02:51:13ftp服务器 文件权限设置 内容精选换一换用户在FusionInsight Manager界面配置监控指标转储后,系统按转储时间间隔(默认60秒)周期性检测监控指标转储结果,转储失败时产生该告警。转储成功后,告警恢复。监控指标转储... -
如何在Linux上使用ls命令列出文件和目录
2020-10-08 12:13:12在这里,我们要求ls在两个目录中列出文件,一个目录称为“帮助”,另一个目录称为“ gc_help”。 ls Help gc_help When ls has listed the contents of the first directory it lists the contents of the second. ... -
Android 10 申请动态权限以后仍然无法读写文件的解决方案
2021-07-20 10:16:24如果 targetSdkVersion = 29, 即便是在判断申请读写动态权限成功以后,也无法对外置卡路径(ExternalStorage)进行读写,可以使用以下代码进行测试 String path = Environment.getExternalStorageDirectory().... -
ls 列出文件或目录下的文件名
2021-05-18 03:26:20语法:ls [选项] 目录路径参数说明:短... 以外的任何项目--author与-l 同时使用时列出每个文件的作者-b--escape以八进制溢出序列表示不可打印的字符--block-size=大小块以指定的字节为单位-B--ignore-backups不列出... -
Linux常用文件权限命令详解
2022-02-09 09:38:27两个半角句号(..)表示上级目录,例如路径/one/more/../society等同于/one/society,其中more和society目录同级。 cd命令的默认参数为~,符号~表示当前用户的家目录。当root用户登录时,命令cd -
Linux——这些基础的Linux目录和文件命令和权限你不会还不知道吧?
2021-08-06 01:14:42Linux基础命令目录命令文件命令权限目录命令所有的操作都尽量在home目录中进行1、list 查询列表list 相当于文件资源管理器(explorer)/ 是根目录 -a 列出目录下的所有...ls –alk 指定文件-l 列出文件的详细信息。 -r... -
ESSamp配置服务器 提示服务器文件配置失败,建议检查系统盘读写权限 如何解决
2021-08-01 07:41:53满意答案xiayue61282016.02.09采纳率:53%等级:8已帮助:1411人加上某用户或用户组时候会自动加上 读取及运行 列出文件目录 读取 这三个权限 加上administrator(组或用户)和SYSTEM所有权限 这些以后就不重复了 好了... -
【Linux】Ubuntu下如何修改文件或者文件夹的权限
2021-03-16 21:15:43Ubuntu下如何修改文件或者文件夹的权限------chmod的亲身测试 具体原理如下: 一、 介绍: 可以使用命令chmod来为文件或目录赋予权限。Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod ... -
让你10分钟就能看懂Linux文件权限(超级详细、超级简单!!!)
2020-12-23 21:41:44引言 如果你遇到了修复web服务器的文件权限问题,在网上搜索后,有大佬告诉你需要递归地chmod 777 你的web目录! 在这样做之前,你很有必要了解chmod -R 777 到底做了什么? ...每个文件由特定用户 -
Linux更改文件的权限
2021-08-09 19:35:08Linux下一切皆文件,对文件的权限管理是Linux安全的一个重要特性,那么修改文件的权限是一个必要的技能了。 一、命令chown(change owner)-更改文件的所有者 语法:chown 【-R】 账户名/账户名:组名 文件名 二、... -
linux 如何打开文件夹权限,Linux文件和文件夹权限操作方法
2021-05-12 01:53:18Linux 文件权限首先来查看一下当前目录下的文件内容吧ls -l 查看当前目录下的文件列表ls -l xxx.xxx (xxx.xxx是文件名) 查看指定的文件我们可以看到文件的权限,-rw-rw-r-- ,一共有10位数。其中: 最前面那个 - ... -
Linux 命令之 ll -- 列出当前文件或目录的详细信息
2021-04-20 14:11:31ll 命令可以列出当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息 ,像 Windows 显示的详细信息。ll 是 ls -l 的别名,可以理解为 ll 和 ls -l 的功能是相同的,相当于 Windows 里的快捷方式。 常用... -
icacls命令设置文件及其文件夹权限的方法,DAT批处理修改文件夹权限
2021-08-10 05:02:22bat的实例:@echo@echo y | icacls D:/Users /grant[:r] users:(D,WDAC) /Tpause说明:由于修改文件夹或者文件权限,系统都是会询问的,所以命令前面加了“@echo y |”,这样子,就是默认选择“是[y]”了,相关说明... -
Linux 文件和目录的读写执行权限详解
2019-09-29 14:41:35(1)第一列:文件类型和权限,这部分稍后重点介绍,见后*001。 (2)第二列:文件硬链接数或目录子目录数,如果一个文件不是目录那么这一字段表示,这个文件所具有的硬链接数;如果是一个目录,则这个字... -
Linux文件权限与文件类型(超详解)
2019-08-03 16:12:41文件类型 首位字母 首位字母 解释 - 普通文件f d 目录文件directory l 符号链接文件link 软链接 快捷方式 b 块文件block 随机读,随机存的设备 (光驱光盘,硬盘) 表示为装置文件里面的可供储存的... -
Linux下修改文件权限(所有权)
2021-05-08 21:22:46每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other)用户(u)是文件的所有者,通常有所有的文件的操作权限用户组(g)是多个用户的集合,可能有文件的部分访问权,相当于各用户之间的共享... -
mac设置文件权限_如何在Mac上设置文件权限
2020-10-03 10:04:19mac设置文件权限Like all major operating systems, macOS allows you to restrict access to files using a complex set of file permissions. You can set these yourself using the Finder app, or by using the ... -
文件的权限讲解
2021-06-27 17:46:561、文件的基本权限 权限的作用: 通过对文件设定权限可以达到以下三种访问限制权限: 只允许用户自己访问; 允许一个预先指定的用户组中的用户访问; 允许系统中的任何用户访问。 权限讲解 #查看一下权限 [root...