Linux权限位(超详细)

Linux 系统,最常见的文件权限有 3 种,即对文件的读(用 r 表示)、写(用 w 表示)和执行(用 x 表示,针对可执行文件或目录)权限。在 Linux 系统中,每个文件都明确规定了不同身份用户的访问权限,通过 ls 命令即可看到。

除此之外,我们有时会看到 s(针对可执行文件或目录,使文件在执行阶段,临时拥有文件所有者的权限)和 t(针对目录,任何用户都可以在此目录中创建文件,但只能删除自己的文件),文件设置 s 和 t 权限,会占用 x 权限的位置。

例如,我们以 root 的身份登陆 Linux,并执行如下指令:

[root@localhost ~]# ls -al
total 156
drwxr-x---.   4    root   root     4096   Sep  8 14:06 .
drwxr-xr-x.  23    root   root     4096   Sep  8 14:21 ..
-rw-------.   1    root   root     1474   Sep  4 18:27 anaconda-ks.cfg
-rw-------.   1    root   root      199   Sep  8 17:14 .bash_history
-rw-r--r--.   1    root   root       24   Jan  6  2007 .bash_logout
...

有关 ls 命令的具体用户,以及输出信息的含义,请查看 《Linux ls命令》 ,这里不再赘述。

可以看到,每行的第一列表示的就是各文件针对不同用户设定的权限,一共 11 位,但第 1 位用于表示文件的具体类型,最后一位此文件受 SELinux 的安全规则管理,不是本节关心的内容,放到后续章节做详细介绍。

因此,为文件设定不同用户的读、写和执行权限,仅涉及到 9 位字符,以 ls 命令输出信息中的 .bash_logout 文件为例,设定不同用户的访问权限是 rw-r--r--,各权限位的含义如图 1 所示。

文件权限位
图 1 文件权限位

从图中可以看到,Linux 将访问文件的用户分为 3 类,分别是文件的所有者,所属组(也就是文件所属的群组)以及其他人。

有关群组的概念,我们已在用户和用户组一章中做了说明。除了所有者,以及所属群组中的用户可以访问文件外,其他用户(其他群组中的用户)也可以访问文件,这部分用户都归为其他人范畴。

很显然,Linux 系统为 3 种不同的用户身份,分别规定了是否对文件有读、写和执行权限。拿图 1 来说,文件所有者拥有对文件的读和写权限,但是没有执行权限;所属群组中的用户只拥有读权限,也就是说,这部分用户只能读取文件内容,无法修改文件;其他人也是只能读取文件。

Linux 系统中,多数文件的文件所有者和所属群组都是 root(都是 root 账户创建的),这也就是为什么,root 用户是超级管理员,权限足够大的原因。

推荐文章
Redis是什么?

Redis是一个开源的、高性能的、键值对内存数据库。它通过提供多种键值数据类型来满足不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。 本小节将介绍Redis的历

PHP end():将数组内部指针指向最后一个元素

PHP中的end()函数可以将数组内部的指针指向数组的最后一个元素,并返回最后一个元素的值,如果数组为空则返回FALSE。 end()函数的语法格式如下: end($array) 参数$array

JSP close() 示例

Linux常用信号(进程间通信)及其含义

进程的管理主要是指进程的关闭与重启。我们一般关闭或重启软件,都是关闭或重启它的程序,而不是直接操作进程的。比如,要重启apache服务,一般使用命令"servicehttpdrestart"重启apa

单向链接 反向链接 图1:反向链接示意图 图2:导入导出链接之间的关系 图3:反向链接与其他链接之间的关系 网站B通过链接指向网站A,那么网站B即可视为网站A的导入链接。 网站A通过链接指

C语言学生信息管理系统演示和说明(密码版)

在《C语言学生信息管理系统演示和说明(文件版)》和《C语言学生信息管理系统演示和说明(数据结构版)》中我们演示了文件版和数据结构版的学生信息管理系统,最终都将学生信息存储到文件中。不过,这些数据并不安

Django实现自定义标签

通过前面几节的内容,我们对Django内置的模板标签与过滤器做了深入的探讨学习。Django虽然内置了二十多种标签和六十多种过滤器,但是为了给Web开发者提供更好使用体验,Django也提供了自定义标

子网掩码和网关是什么?

子网掩码子网掩码(subnetmask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合

C++ partial_sort(STL partial_sort)排序算法详解

通过示例很容易理解什么是部分排序。假设有一个容器,它保存了100万个数值,但我们只对其中最小的100个感兴趣。可以对容器的全部内容排序,然后选择前100个元素,但这可能有点消耗时间。这时候需要使用部分

Go语言网络爬虫缓冲器工具的实现

缓冲器的基本结构如下: //集冲器接口的实现类型 typemyBufferstruet{ //存放数据的通道 chchaninterface{} //缓冲器的关闭状态:0-未关闭;2-已关

saas平台有哪些?

什么是saas?Saas的意思是软件即服务,saas的中文名称为软件运营,是基于互联网提供软件服务的软件应用模式,他是一种作为21世纪开始兴起的创新的软件应用模式,Saas提供商为企业搭建信息化所需要

MySQL选择数据库(MySQL USE语句)

在MySQL中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。 在MySQL中,USE语句用来完成一个数据库到另一个数据库的跳转。 当用CREATEDATABASE语句创

C++ STL set容器完全攻略(超级详细)

前面章节讲解了map容器和multimap容器的用法,类似地,C++STL标准库中还提供有set和multiset这2个容器,它们也属于关联式容器。不过,本节先讲解set容器,后续章节再讲解multi

for循环嵌套,C语言for循环嵌套详解

前面我们讲的是单个for循环的使用,最后再跟大家讲一下多层for之间的嵌套使用。虽说是多层,事实上for循环嵌套的层数也不能太多。通常为两个for循环的嵌套,超过两个的极少使用。 与单个for循环相

Hibernate是什么?他有哪些优势?

Hibernate是一款免费开源的持久层框架,它对JDBC进行了轻量级的对象封装,将对象与数据库表建立了映射关系,使Java编程人员可以随心所欲地使用面向对象的编程思想操作数据库。 Hibernat

什么是sas?

SAS(StatisticalAnalysisSystem)是由美国北卡罗来纳州立大学1966年开发的统计分析软件;是一个模块化、集成化的大型应用软件系统。它由数十个专用模块构成,功能包括数据访问、数

MyBatis配置typeAliases(别名)详解

由于类的全限定名称很长,需要大量使用的时候,总写那么长的名称不方便。在MyBatis中允许定义一个简写来代表这个类,这就是别名,别名分为系统定义别名和自定义别名。 在MyBatis中别名由类Type

标识符是什么,C++标识符详解

标识符是一个由程序员定义的名称,代表程序的某些元素。变量名就是标识符的示例。只要不使用任何C++关键字,程序员可以在C++中选择自己的变量名。 C++中的关键字构成了该语言的“核心”,它们都有其特定

Java变量的作用域

变量的作用域规定了变量所能使用的范围,只有在作用域范围内变量才能被使用。根据变量声明地点的不同,变量的作用域也不同。 根据作用域的不同,一般将变量分为不同的类型:类变量、局部变量、方法参数变量及异常

MySQL DROPUSER[,]… DROPUSER语句可用于删除一个或多个MySQL账户,并撤销其原有权限。 使用DROPUSER语句必须拥有MySQL中的MySQL数据库的DELETE权限或