如何在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
%CSELinux安全上下文字符串
%d设备号(十进制)
%D设备号(十六进制)
%f原始模式(十六进制)
%F文件类型
%g所有者的组ID
%G所有者的组名
%h硬链接数
%iinode号
%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