在Linux/Unix如何获取文件的权限
时间:2019-11-20 08:54:09 来源:igfitidea点击:
在Linux中,如何获取文件的权限(8进制形式)?
在shell脚本中,如何获取文件权限?
如何在Linux/Unix上获取文件八进制形式的权限
要获取文件或文件系统状态,可以使用stat命令。
如何从Linux中获取文件八进制权限
语法如下:
stat fileName stat -c 'Format' file
在GNU/Linux上,默认输出如下:
$ stat /etc/passwd
输出示例:
File: ‘/etc/passwd’ Size: 2312 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 18647322 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:passwd_file_t:s0 Access: 2018-01-11 21:00:01.607404451 -0500 Modify: 2017-10-16 03:48:01.145768026 -0400 Change: 2017-10-16 03:48:01.151768218 -0400 Birth: -
只想查看8进制权限
$ stat -c '%a' /etc/passwd
输出示例:
644
以两种格式显示文件权限:
$ stat -c '%A %a %n' /etc/passwd
输出示例:
-rw-r--r-- 644 /etc/passwd
格式如下:
格式 | 说明 |
---|---|
%a | 八进制访问权限(注意#和0 printf标志) |
%A | 可读性的访问权限 |
%b | 分配的块数(请参见%B) |
%B | %b |
%C | SELinux安全上下文字符串 |
%d | 设备号(十进制) |
%D | 设备号(十六进制) |
%f | 原始模式(十六进制) |
%F | 文件类型 |
%g | 所有者的组ID |
%G | 所有者的组名 |
%h | 硬链接数 |
%i | inode号 |
%m | 安装点 |
%n | 文件名 |
%N | 带符号引用的文件名,如果使用符号链接 |
%o | 最佳I/O传输大小提示 |
%s | 总大小,以字节为单位 |
%t | 十六进制的主要设备类型,用于字符/块设备专用文件 |
%T | 次设备类型(十六进制),用于字符/块设备特殊文件 |
%u | 所有者的用户标识 |
%U | 所有者的用户名 |
%w | 文件的生成时间,易于阅读;如果未知 |
%W | 文件诞生的时间,距离纪元以来的秒数;如果未知,则为0 |
%x | 上次访问的时间,人类可读 |
%X | 上次访问的时间,距离纪元以来的秒数 |
%y | 上次数据修改的时间,人类可读 |
%Y | 上次数据修改的时间,自纪元以来的秒数 |
%z | 上次状态更改的时间,人类可读 |
%Z | 上次状态更改的时间,距离纪元以来的秒数 |
关于macOS/BSD stat命令的注释
在BSD中,stat命令的语法如下:
stat fileName stat -f "Format" fileName
只查看8进制权限
$ stat -f "%OLp" /etc/passwd
输出示例:
644
以两种格式显示文件权限:
$ stat -f "%Sp %OLp %N" /etc/passwd
输出示例:
-rw-r--r-- 644 /etc/passwd