在学习文件权限管理之前要搞清楚一个问题:在Linux操作系统中为什么需要设定不同的权限,所有用户都直接使用管理员身份不好吗?不是更省事吗,为什么非得做权限管理呢?
在家庭环境中使用的计算机没必要进行权限控制,因为能接触到计算机的也就是几个自己信任的人,而且家庭中使用计算机也无非是玩游戏、浏览网页而已。在这种情况下,可以放心地让所有用户直接使用管理员身份登录。
但在企业环境下就不一样了,因为除了个人的办公电脑之外还会有服务器,企业的服务器上存放的都是非常重要的核心数据,能登录到服务器进行工作的人员也很多。假如人人都使用root账号在服务器上工作,而不做权限管理的话,那某一天有员工不小心删除了核心数据文件,可能就会导致整个企业的业务进行不下去,那损失可就大了。以笔者身边真实发生的事情为例,一个做Java开发的朋友(下文称小A)就没有这种权限管理的意识,谁要是来问他要操作系统账号,小A图省事直接就会给root账号,结果某天有一个员工不小心执行了一个危险的命令(rm-rf/),直接把服务器里所有的文件全删了,Linux操作系统当场崩溃,这就是传闻中的“删库跑路”的过程。所以,作为一名Linux运维工程师,一定要有权限管理的意识。
你或许会想:“不允许他们登录到服务器不就可以了”,只能说很难,因为技术人员或多或少都需要登录到Linux操作系统上进行工作,有的需要查看日志排查问题、有的要做测试、有的需要调整配置文件等。所以我们无论如何都绕不开权限管理这四个字,在企业中,权限管理是Linux运维工程师的一项重要工作,权限控制得好,一般就不会出什么问题,而且划分得越详细越好,最好能达到“什么样的人只允许做什么样的事情”这种程度。
对文件和目录做权限管理本质上就是对用户进行管理。大家试想一下,对文件和目录做了权限管理之后谁会去使用这些文件呢?还是用户,因此也就间接性地对用户做了权限管理。
权限管理的作用可归纳如下:
(1)维护数据的安全,什么样的人只允许做什么样的事情;
(2)通过权限的划分和管理来实现多用户、多任务的运行机制;
(3)区分层级,符合公司管理模型。
所以做权限管理可以根据不同的工作和职责需要,合理地分配用户等级和权限等级。
这里再给大家重新温习一下文件/目录的权限与归属,由图8-1可见,使用ls-l命令会显示文件的详细信息,此选项显示的这7列的含义见表8-1。
图8-1 文件的权限与归属
表8-1 文件的权限与归属中7列的含义
注
本章讲的都是与第一列、第三列、第四列相关的内容。
在Linux操作系统中常见的权限有3种,分别是:r、w、x,除此之外还存在一些特殊权限,例如,s和t。具体见表8-2。
表8-2 Linux系统中的权限位
(续表)
刚开始看不明白这些权限不用着急,我们后续会通过实验来一步一步让大家理解这些权限的作用,这里先根据图8-2所示权限位带大家弄清如何看懂文件或目录中的权限。
图8-2 权限位
在图8-2中,前半部分表示不同用户对文件所拥有的权限,共11个字符,其含义见表8-3。
表8-3 11个字符含义
Linux操作系统中文件的基本权限由9个字符组成,分别为属主、属组和其他用户,用于规定是否对文件有读、写和执行权限,如图8-3所示。第一组也就是文件属主拥有对文件的读和写权限,但是没有执行权限;第二组是属组中的用户只拥有读权限,也就是说,属组中的这部分用户只能读取文件内容,无法修改文件;第三组是其他用户,拥有写权限。
图8-3 属主、属组、其他用户权限
接触Linux操作系统时间长了就会发现,系统中的大多数文件的属主和所属群组都是root用户,这也就是root用户能成为超级管理员且权限足够大的原因之一。