Unix file system permissions
### Unix 文件系统权限详解 #### 一、Unix 文件系统简介 Unix 文件系统是为多用户环境设计的,每个用户都被分配了一个唯一的用户ID(UID),这使得系统能够追踪每个用户的活动,并实施相应的访问控制策略。在典型的Unix环境中,超级用户(通常称为“root”)具有最高的权限,其UID为0;而普通用户则拥有较高的UID值,如“hbj”的UID可能被设置为1000。此外,还有一些虚拟用户,例如“daemon”,“nobody”或“ftp”,这些用户用于特定的服务或功能。 #### 二、用户与组管理 Unix通过/etc/passwd文件来管理用户信息,其中包含用户的登录名、加密密码、UID、GID(主组ID)、用户全名、家目录以及默认Shell等信息。例如,一个典型的/etc/passwd文件条目可能如下所示: ``` john:x:30000:40000:John Doe:/home/john:/usr/local/bin/tcsh ``` 这里,“john”是用户名,“x”代表加密后的密码存储在/etc/shadow文件中,30000是UID,40000是GID,/home/john是家目录路径,而/usr/local/bin/tcsh则是默认Shell。 除了用户之外,Unix还支持组的概念,即一组用户可以组成一个组。每个用户都有一个主组,但也可以成为多个组的成员。组信息通常存储在/etc/groups文件中,用于定义哪些用户属于哪个组。 #### 三、访问控制的重要性 在Unix系统中,访问控制是确保数据安全性的核心机制之一。通过为不同的用户分配不同的权限,可以有效限制用户对敏感资源的访问,从而保护系统的安全性。例如,可以通过设置适当的权限来防止用户Bob删除或读取用户Alice的文件“secrets.txt”。 #### 四、文件权限 在Unix中,每个文件都归属于一个所有者(用户)和一个组。通过命令`ls -l`可以查看文件的所有权和权限信息。例如: ``` -rwxr--r-- bob bob ``` 这里的权限表示方法为三个一组:第一个三位代表所有者的权限,第二个三位代表所属组的权限,第三个三位代表其他用户的权限。“rwxr--r--”表示所有者可以读、写和执行该文件,所属组的用户只能读,而其他用户也仅能读。 为了更直观地理解这些权限,它们可以用二进制表示,例如“0b111000000”转换为十六进制就是“0x700”。当创建新文件时,默认权限受环境变量“umask”的影响。例如,在一个默认umask为“022”的系统中,新创建的文件将自动拥有“rw-r--r--”的权限,即“0666 & ~0022 = 0644”。这意味着所有者有读写权限,所属组和其他用户只有读权限。 #### 五、umask的作用 umask用来定义创建文件时默认的权限掩码,即在创建文件时去除的权限位。例如,如果umask设置为“022”,那么创建的文件默认权限将是“0666 & ~0022 = 0644”,即文件对所有者具有读写权限,而对组和其他用户只具有读权限。选择这样的值主要是出于安全性考虑,以减少文件的可写性。 最严格的umask值(最安全的设置)是“077”,这样新创建的文件将没有任何用户(包括所有者)的写权限,即“0666 & ~0077 = 0600”。 可以通过运行命令`umask`查看当前的umask值,也可以通过命令`umask 077`来设置新的umask值。 #### 六、目录权限 目录权限与文件权限类似,但也存在一些差异。对于目录而言,“r”代表可以列出目录内容,“w”表示可以在目录中添加或删除文件,“x”意味着可以进入该目录。 特别地,当目录的“w”权限被设置时,任何用户都可以向该目录添加或删除文件,这可能会导致安全问题。为了避免这种情况,Unix引入了粘滞位(sticky bit)的概念,标记为“t”的目录意味着即使设置了“w”权限,用户也只能删除自己创建的文件。例如,运行命令`ls -l /`并检查/tmp目录,可以看到它的权限可能是“1777”(或以符号形式显示为“drwxrwt”),这里的“1”就代表了粘滞位被启用。
- 粉丝: 2
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ROS的PickPlace机械臂控制系统.zip
- (源码)基于树莓派(Raspberry Pi)的环境监控与警报系统.zip
- (源码)基于Spring Boot和LayUI的仓库管理系统.zip
- (源码)基于C++的通用数据处理系统.zip
- (源码)基于C语言的操作系统进程调度模拟实验.zip
- (源码)基于DSO算法的视觉里程计系统.zip
- (源码)基于C语言Unixlike操作系统框架的shell程序.zip
- (源码)基于Java Web的学生资料管理系统.zip
- (源码)基于嵌入式系统的Marble Run项目.zip
- (源码)基于Spring Boot和Vue的博客支付管理系统.zip