【Linux取经之路】用户&权限管理

目录

shell命令以及运行原理

Linux权限的概念

1、用户的概念

2、切换用户

Linux权限管理

 1、文件访问者的分类

2、文件类型和访问权限

3、文件访问权限的修改

4、文件所有权的修改

5、设置权限掩码

6、用户提权

7、目录的权限

 8、粘滞位


shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为「核心」(kernel),但是我们用户一般不能直接使用kernel,而是通过kernel的「外壳程序」,即通过shell与kernel进行沟通。首先我们明确一点,内核是看不懂我们输入的指令的,就像adduser zhangsan这条指令,内核就是看不懂,这条指令需要被翻译成内核可识别的指令后,内核才理解我们到底要干嘛。举个例子,当你在外服对国外游戏玩家一顿「国粹」输出时,他是听不懂的,他需要借助翻译软件翻译成他们的语言才能理解你说了什么。至于Shell,从技术角度讲,Shell的最简单定义就是:命令行解释器,也就是扮演一个翻译官的角色。它主要有以下功能:

        ● 将使用者的命令翻译给核心kernel处理。

        ● 同时,将核心处理的结果翻译给使用者。

以我们熟悉的Windows为例,我们操作Windows并不是直接操作其内核,而是通过Windows GUI(图形化界面)提供的接口来操作。例如双击打开一个桌面程序,最大化,最小化等。

Shell对于Linux,就相当于Windows GUI对于Windows内核。Shell主要是对我们的指令进行解析,解析成Linux内核可以看得懂的命令,并将Linux内核处理的结果翻译成我们可以看得懂得语句。

与此同时,Shell还在默默地保护操作系统。Shell会对我们用户输入的指令进行解析,当它解析到非法指令时就直接报错,并不会将我们输入的非法指令传递给操作系统。同时,它为了防止自身在解析指令时,遇到非法指令而崩溃,Shell本身并不直接执行我们输入的指令,而是派生出子进程来执行。

Linux权限的概念

1、用户的概念

        Linux下有两种用户:超级用户(root)和普通用户。

                ● 超级用户:可以在Linux下做任何事情,不受限制。

                ● 普通用户:在Linux下受权限的限制。

                ● 超级用户的命令行提示符是「#」,普通用户的命令行提示符是「$」。

2、切换用户

        命令:su 「username」

        功能:切换用户

下面进行演示:

从超级用户切换到普通用户,直接切换,不需要额外操作。

从普通用户切换到超级用户,需要输入超级用户的密码,密码不会回显。

Linux权限管理

在Linux系统中,每个文件和目录都具有访问权限,这些访问权限决定了谁能访问以及如何访问。

 1、文件访问者的分类

                ● 文件和文件目录的所有者:u → user

                ● 文件和文件目录的所有者所在的组:g → group

                ● 其他用户:o → others

2、文件类型和访问权限

第2-10位,三三为一组,且每一组的权限都依次为读、写、可执行。 

文件类型:

        d: 文件夹

        -: 普通文件

        l: 软链接(类似Windows的快捷方式)

        b: 块设备文件(例如硬盘)

        p: 管道文件

        c: 字符设备文件(例如屏幕)

        s: 套接口文件

访问权限:

        读(r),对文件而言,具有读取文件内容的权限;对目录而言,具有浏览该目录信息的权限。

        写(w),对文件而言,具有修改文件内容的权限;对目录而言,具有删除和移动目录内文件的权限。

        可执行(x),对文件而言,具有执行文件的权限;对目录而言,具有进入目录的权限。 

       「-」,表示不具有该项权限。

权限除了可以用字母rwx表示,还可以用8进制表示。

 

 上面抛出了一堆概念性的东西,下面我们来举个例子理解文件的权限。

首先,我创建了一个名为test的文件,我们可以看到,test的所有者和所属组为pcz,所有者对应的权限为rw-,可读可写不可执行,所属组对应的权限为rw-,可读可写不可执行。其他用户other对应的权限为r--,只能读,不可写不可执行。可以看到,我在把文件创建好后,并未对其权限方面做任何修改。我想说的是,当创建一个文件时,系统会自动赋予文件所有者读和写的权限,这样可以允许所有者显示文件内容和修改文件。前面提到,权限不仅可以用字母表示,还可以用数字表示,下面举例说明。 

-rwxr--r--   / / 所有者的权限为7(111),所属组的权限为4(100),其他用户other的权限为4(100)。这两种表示方式任君选择。

3、文件访问权限的修改

一般情况下,只有系统管理员和文件的所有者才可以修改文件的权限。

chmod

 功能:设置文件的访问权限

 格式:chmod 参数 权限 文件名

操作对象

可以是下述字母中的任何一个或者是它们的组合。

 u: 表示文件或目录的所有者

 g: 表示用户组

 o: 表示其他用户

 a: 表示所有用户

操作符

+:添加某个权限

-:取消某个权限

=:赋予给定权限并取消原先权限(如果有的话)

下面举例说明:

书接上回创建的test文件。所属组的权限为rw-,现在我想把所属组的写(w)权限去掉。

现在,我往test里面加一点内容,内容是什么不重要,只要文件大小不为0就好了。

可以看到,test文件的大小已经不为零了。现在,我想给所有用户加上可执行权限x。

好了,可执行权限都已经加上去了,test变色了。接下来我想看看test能否运行。

很不幸,报错了。原本是演示如何修改权限的,现在开始不着边际了,其实我想说的是:文件不是具有可执行权限就可以执行的,还要看文件本身是否可执行,可执行权限和文件可以执行是两码事。举个例子,我们不能在csdn上看电影,原因在于csdn本身就不支持看电影,我们需要到视频网站(b站)等才可以。 

4、文件所有权的修改

文件和目录的创建者就默认具有所有权,他们对该文件和目录具有任何权限,可以进行任何操作。他们也可以将所有权交给其他用户,使别的用户对该文件和目录具有任何操作权限。

chown

功能:更改文件和目录的所有者和所属组。

语法:chown [参数] 用户名 [文件|目录]

选项说明:-R表示,将下级子目录下的所有文件和目录的所有者一起改。

1)将文件test的所有者改为pcz。

2)将文件test的所属组改为pcz。

3)将文件test的所有者和所属组一起改为root。

4)将文件test的所属组改为pcz。

 chgrp

  功能:改变文件或目录的所属组。

  格式:chgrp [参数] 所属组名 文件名

  选项说明:-R表示,将下级子目录下的所有文件和目录的所属组一起改。

​​​​​​​

5、设置权限掩码

为了保护文件和目录,可以使用umask命令,这个命令会取消用户创建的文件和目录的默认权限设置。指定的掩码在登录系统时一直有效,umask对已经存在的文件没有任何作用。默认创建文件的权限是666,即[ -rw-rw-rw- ],默认创建目录的权限是777,即[ drwxrwxrwx ]。但是我们看到的往往不是这个值,原因在于创建文件或目录的时候还有收到umask的影响,实际创建出来的文件的权限是mask & ~mask。

umask

 功能:查看或修改文件掩码。

  # umask / /查看

  # umask  044/ /设置

6、用户提权

sudo

功能:在不共享root密码的情况下授权用户以root的身份运行命令。

当我们以普通用户的身份安装软件包的时,往往权限不够,需要提权。比如 sudo yum install -y gdb。这需要在指令前加上sudo,然后输入当前用户的密码即可。

7、目录的权限

这里我就不卖关子了,直接上结论~

● 可执行权限:如果目录没有可执行权限,则无法cd到目录中。

● 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。

● 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。

下面依次演示:

这里我把拥有者的可执行权限去掉了,然后再试图cd进入目录dir,直接报错。有读者可能会疑惑,所属组不是有可执行权限吗?!而且pcz本身也是所属组呀,为什么就进不去呢?其实是这样子的,在匹配时,顺序是所有者 > 所属组 > other,并且一旦匹配,就不会再进行第二次的比对了。

去掉目录的可读权限。

 

去掉目录的可写权限。

 

从上面结论中,我们可以得出这样一个推论:删文件是取决于文件所在目录的权限的。换句话说,就是只要用户具有目录的写权限,该用户就可以删除目录中的文件,而不论这个用户是否具有这个文件的写权限。 下面我们来看一个活生生的例子。

事先,我已经将home目录的权限改为777,也就是说所有用户都具有这个目录的写(w)权限,并且在该目录下,我以root的身份创建了一个名为test的文件,然后我从root切换到普通用户pcz,接着尝试删除root在home目录下创建的文件test,结果还删除的很成功!我pcz居然可以删除root创建的文件!!!这是不是以下犯上了。为了解决这个问题, Linux引入了「粘滞位」。

 8、粘滞位

chmod +t 目录

下面演示一下:

 

给home目录加上粘滞位后,用户pcz已经无法删除root创建的文件test了。总结一下:

当一个目录被设置为粘滞位(chmod +t)后,该目录下的文件只能由

● 超级管理员root删除

● 该目录的所有者删除

● 该文件的所有者删除


本文到此就结束啦~感谢支持! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值