如何在Linux/Unix命令行上获取八进制文件权限
时间:2020-01-09 10:38:44 来源:igfitidea点击:
如何在Linux或Unix操作系统上运行的bash命令行中找到八进制格式的文件权限,例如0644?
如何获得文件的八进制权限?
如何在Linux/Unix上获得八进制文件权限?
解决方法:您需要使用stat命令来查看或获取给定文件名的八进制文件权限。
缺省情况下,ls命令将不以八进制形式显示文件的权限。
八进制形式的权限对于许多命令(例如chmod命令和其他sysadmin任务)很有用。
本快速教程介绍了如何使用stat命令查看八进制文件权限。
如何在Linux/Unix命令行上获取八进制文件权限
要获取文件或文件系统状态,请尝试使用stat命令。
但是,stat的语法在GNU/Linux和BSD/macOS Unix之类的系统上是不同的。
如何从Linux命令行获取八进制文件权限
在Linux上获取八进制文件权限的语法如下:
stat fileName stat -c 'Format' file
在GNU/Linux上,默认输出如下:
$ stat /etc/passwd
输出示例:
File: /etc/passwd Size: 2605 Blocks: 8 IO Block: 4096 regular file Device: fd01h/64769d Inode: 15469225 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-11-05 19:06:44.879876898 +0530 Modify: 2016-10-16 00:15:53.236876717 +0530 Change: 2016-10-16 00:15:53.236876717 +0530 Birth:
`仅查看GNU/Linux上的八进制文件权限:
$ 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命令的语法如下,以获取BSD或macOS上的八进制文件权限:
stat fileName stat -f "Format" fileName
默认输出如下:
$ stat /etc/passwd
输出示例:
1518287693 66065 -rw-r--r-- 1 root wheel 4294967295 1724 "Oct 28 13:50:15 2016" "Oct 28 13:50:15 2016" "Oct 28 13:50:15 2016" "Oct 28 13:50:15 2016" 4096 9 0x800 /etc/passwd
仅查看八进制文件权限
$ stat -f "%OLp" /etc/passwd
输出示例:
644
要以两种格式显示文件权限:
$ stat -f "%Sp %OLp %N" /etc/passwd
输出示例:
-rw-r--r-- 644 /etc/passwd