认识 Unix(Linux、MacOS)文件权限+类型

本次给大家分享的是,认识 Unix(Linux、MacOS)文件权限系统,通过此篇文章可以清晰的认识如何看文件的系统权限以及文件的类型。

bash 复制代码
➜  tianyu.ls git:(main) ✗ ls -a -l
total 8
drwxr-xr-x  5 wangtianyu  staff  160  4 13 12:29 .
drwxr-xr-x  4 wangtianyu  staff  128  4 11 21:19 ..
-rw-r--r--  1 wangtianyu  staff    0  4 13 12:29 .log
drwxr-xr-x  4 wangtianyu  staff  128  4 11 21:59 bin
-rw-r--r--  1 wangtianyu  staff  271  4 11 21:20 package.json

1. 在文件开头 例如 drwxr-xr-x 代表着文件权限

  • 开头第一位,代表文件类型 例如 d -r
  • 其余需要三个为一组来阅读
makefile 复制代码
第一组(u:当前登录用户)第二组(g:当前登录用户所在分组)第三组(o: 其他用户)
rwx                   r-x                       r-x
  • 每一组的字母都是固定的含义

2. 拿第一组举例

makefile 复制代码
rwx
r: 访问 w:编辑 x:执行  

3. 如果任意一个不可访问、不可编辑、不可执行,那么就显示 -

例如:

复制代码
r-x 

代表 可以阅读 不能编辑 可以执行

4. 合在一起理解 drwxr-xr-x

首先拆分:

复制代码
d  rwx  r-x  r-x
  • 文件d类型
  • rwx:当前登录用户 可以阅读 可以编辑 可以执行
  • r-x:当前登录用户所在分组 可以阅读 不可编辑 可以执行
  • r-x:其他用户 可以月底 不可编辑 可以执行

5. 修改文件权限

拿这个举例

css 复制代码
-rw-r--r--  1 wangtianyu  staff  271  4 11 21:20 package.json

说明当前用户 可以访问 可以编辑 不可以执行

  • 修改当前用户不可以访问
go 复制代码
chomd -r package.json // 修改当前用户不可以访问

vim package.json // 阅读package.json
~                                                                                                                                                                           
~                                                                                                                                                                           
~                                                                                                                                                                           
"package.json" [Permission Denied] // 权限被拒绝
  • 恢复文件访问
go 复制代码
chomd +r package.json // 修改当前用户可以访问
vim package.json // 阅读package.json

// 访问成功
{ 
  "name": "tianyu.ls",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "bin":{
    "tianyu-ls":"./bin/index.js"
  },
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}                        

6. 文件类型标识

这个图像展示的是一系列Unix/Linux文件系统中的文件类型和权限标志,以及它们对应的十进制和二进制值。下面是每个名称的含义:

  • S_IFIFO: 这是一个命名管道(FIFO,First In First Out)的标志,通常用于进程间通信。
  • S_IFCHR: 表示字符设备文件,即可以逐个字符访问的设备文件,比如键盘或者其他串行端口。
  • S_IFDIR: 表示目录。
  • S_IFBLK: 表示块设备文件,可以随机访问的设备文件,比如硬盘驱动器。
  • S_IFREG: 普通文件,即非设备文件、目录或者其他特殊类型文件。
  • S_IFLNK: 符号链接,指向另一个文件的指针。
  • S_IFSOCK: 套接字文件,用于网络通信。
  • S_IFWHT: Whiteout,与联合文件系统相关的特殊文件类型。
  • S_ISUID: 当执行文件时,设置用户ID。
  • S_ISGID: 当执行文件时,设置组ID。
  • S_ISVTX: 保存在使用之后交换出去的文本(粘滞位,Sticky Bit)。
  • S_IRUSR: 文件所有者的读权限。
  • S_IWUSR: 文件所有者的写权限。
  • S_IXUSR: 文件所有者的执行(对于目录是搜索)权限。
  • S_IRGRP: 用户组的读权限。
  • S_IWGRP: 用户组的写权限。
  • S_IXGRP: 用户组的执行(对于目录是搜索)权限。
  • S_IROTH: 其他用户的读权限。
  • S_IWOTH: 其他用户的写权限。
  • S_IXOTH: 其他用户的执行(对于目录是搜索)权限。
相关推荐
带土11 天前
5. Unix/Linux 系统常用类型别名清单
linux·unix
草莓熊Lotso5 天前
Linux 权限管理进阶:从 umask 到粘滞位的深度解析
linux·运维·服务器·人工智能·ubuntu·centos·unix
vortex57 天前
Linux 用户管理详解:从古老Unix到现代集成
linux·运维·unix
Postkarte不想说话10 天前
FreeBSD启用IPFW防火墙
unix
ALex_zry13 天前
论gRPC:基于 TCP/IP 的通用网络模式,以及基于 Unix Domain Sockets (UDS) 的同机进程间通信 (IPC) 模式
网络·tcp/ip·unix
ALex_zry14 天前
C++中使用gRPC over Unix Domain Sockets的高性能进程间通信技术解析
开发语言·c++·unix
Tony Bai16 天前
【Go 网络编程全解】12 本地高速公路:Unix 域套接字与网络设备信息
开发语言·网络·后端·golang·unix
不爱搬砖的码农17 天前
宝塔面板部署Django:使用Unix Socket套接字通信的完整教程(附核心配置与问题排查)
python·django·unix
迎風吹頭髮1 个月前
UNIX下C语言编程与实践48-UNIX 信号量:概念、PV 操作与进程同步互斥
服务器·c语言·unix
数智顾问1 个月前
自动驾驶软件系统基石:RTOS操作系统与Framework框架的协同机制解析
服务器·unix