【Linux】下的权限管理/关于root用户和普通用户的区别/不同用户的访问权限有什么不同?/到底什么是粘滞位?

简介: 1.Linux下用户的分类Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

前言

本文章专门讲解Linux下的不同用户区别以及权限问题。

1.Linux下用户的分类

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

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。级用户:可以再linux系统下做任何事情,不受限制

命令:su [用户名] 功能:切换用户。 例如,要从root用户切换到普通用户user,则使用 su user。

要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

su

如果直接输入su,默认强制切换(不需要登陆)到root用户,此时需要输入root用户的密码。

su -

如果直接输入su - ,默认切换(需要重新登陆)到root用户,此时需要输入root用户的密码。

如果在root账户下想要切换到其他普通用户,直接输入:

su 用户名

普通用户之间的切换需要输入需要登陆的对应的用户的密码

切换用户后可以按ctrl + d回到原来的用户。

sudo指令

sudo + 任意指令

功能:暂时对该条命令进行提取权限

1.1文件访问者的分类(人)

文件和文件目录的所有者:u—User(中国平民 法律问题)

文件和文件目录的所有者所在的组的用户:g—Group(不多说)

其它用户:o—Others (外国人)

2.文件类型和访问权限(事物属性)

我们看到,当我们列出一个目录下的详细文件/目录时,前面会有10个字符。

e97f02419a254663a96fb2f669a0b3a0.png

第一个字符就是我们下面要讨论的文件类型。

2.1Linux下的文件类型

Linux下的文件类型包括:

– :普通文件 ,包括文本,可执行程序,库文件等都是普通文件

d:目录文件

b:块设备文件,包括磁盘文件

c:字符设备文件,包括键盘,显示器文件等

p:管道文件,用来进行通信的

其中,我们重点需要知道的是 - 和d,分别为普通文件和目录文件。

为什么说文件后缀是没有直接的意义的呢?

Linux下系统不以文件名后缀来区分文件,一个可执行文件的文件后缀可有可无都可以执行。(注意是Linux,不是其他软件)

比如:

先创建一个新的.c文件,然后编译之后生成一个a.out文件

mv a.out a.exe


这样也可运行。


但是.c编译器(叫做gcc)编译的时候,它是会认.c后缀的,其他的后缀可能不会编译通过,这是在Linux上运行的其他软件,并不是Linux本身。

总结:Linux区分文件/目录是以前面第一个字母来区分的,如果是-,那就是普通文件,如果是d,那就是目录文件。

2.2 文件的权限属性(角色/身份)

e97f02419a254663a96fb2f669a0b3a0.png

第一个字符上面说完了,接下来说下面9个字符:

r:可读

w:可写

x:可执行

-:对应的权限位置,没有权限

注意:每一个位置对应的权限永远是不变的,不可能存在乱序的问题!

注意:每一个位置对应的权限永远是不变的,不可能存在乱序的问题!

注意:每一个位置对应的权限永远是不变的,不可能存在乱序的问题!

前三个位置对应拥有者的权限,中间三个对应所属组的权限,后三个对应其他人的权限。

每三个字符对于一个角色,分别为:

拥有者,所属组,其他人

先说拥有者和其他人的区别,对于一个文件或者项目,一定是有人创造出来的,创造出来的这个人就

叫做拥有着,拥有者可以随意查看更改自己的项目,但是其他人是否可以查看/更改该项目需要经过拥有者的同意。

也就是其他人不能随意查看该项目

而对于所属组,就是如果有一个人/一批人是拥有着的同事,那么拥有着可以将这些人拉进他的组,从而赋予他们相同的权限。

再来谈谈上面的图片对应的框框的内容:

8598407e50a54849aaf1f3148dbb5972.png

对于中间一列的数字,以后再谈。

有一个细节:上面的文件/目录只有拥有者和所属组两个身份显示,那么other呢?

其实,如果一个人既不是文件/目录的拥有者,所属组,那么他就是other。

所以Linux下不显示other的身份。

总结:

Linux下权限值的两种表示方法:

c9f01d5303aa40f8b83646d0e59dfdbf.png

chmod指令和chown指令/权限的修改

方法1:

指令:

chmod : change mode,修改模式/权限

比如:

chmod u-rwx test.c

对拥有者减掉他对test.c文件的r,w,x权限。


chmod u-rwx,g-rwx,x-rwx test.c

对拥有者,所属组,其他人对test.c文件的r,w,x权限都删掉


chmod u+rwx,g+rwx,x+rwx test.c

增加拥有者,所属组,其他人对test.c文件的r,w,x权限

方法2:

由于每一个位置对应的权限要么有要么没有,所以可以使用二进制的方式来表示

比如:

chmod 000 test.c

修改拥有者对test.c文件的权限为 —,所属组的权限为—,其他人的权限为—

chmod 777 test.c

修改拥有者对test.c文件的权限为 可读可写可执行,所属组的权限为可读可写可执行,其他人的权限为可读可写可执行

因为 7 对应的二进制为 111,每个1对应的位置分别是:可读,可写,可执行

chmod 776 test.c

修改拥有者对test.c文件的权限为 可读可写可执行,所属组的权限为可读可写可执行,其他人的权限为可读可写,但是不可执行

因为6对应的二进制为110,other对该文件的权限为可读可写但是不可执行。

tips:拥有者和所属组能干的一些事


对于一个文件,如果拥有者和所属组是同一个人,那么在系统认证这个人时,首先从拥有者开始认证,如果认证成功,即使所属组也是这个人,系统也不会再去看所属组了。

也就是说,在系统进行认证的时候,一个人只能对应一个身份。

2.对于拥有者来说,即使自己拥有该文件,但是自己对文件的权限为只读不可写的话,也是不能进行写入的。

因为自己只拥有该文件,不代表可以对该文件进行写入。

比如:

491be74f44034a9ba05458616d34e2d1.png

test.c文件的拥有者是zhangsan,他对该文件的权限是只读只执行,没有写入权限,所以不能完成写入操作。

3.如果一个文件的所属组和拥有者不同,那么该所属组这个人如果有写入权限,他是可以对该文件进行写入的。

比如说:7af01f6324e44468bd93d887f40bfb0c.png

在test.c文件中,拥有者是zhangsan,所属组是dzt,此时拥有者的身份是zhangsan,但是dzt这个所属组是可以对文件有rwx权限的。

umask指令和权限值的关系

Linux下,

创建的普通文件默认的权限值为:666

目录文件的权限值默认为:777

不过在Linux中经过某种特殊的运算后,普通文件变成了:665,目录文件变成了:77522265d02a02a42fdadb69625676b1989.png

这一切发生的原因在于umask,叫做权限掩码。

权限掩码:凡是在umask中出现的权限,不会在最终的文件权限中出现!

比如:

默认的umask是:0002

即:

000 000 010

假如创建一个普通文件,默认权限值为666,即:

110 110 110

那么经过运算后:

最终普通文件的权限值为:

110 110 100

所以:

最终权限 = 起始权限 & (~umask)

更改umask的方法:

umask + 对应的权限掩码

如:umask 0001

或者umask 0555

普通文件和目录文件的rwx功能

对于普通文件:

r:是否能够对文件进行读取

w:是否能够对文件进行写入

x:是否能够对文件进行执行

对于目录文件:

r:是否允许我们查看目录下的内容

w:是否允许我们在当前目录下进行创建,更改,删除

x:是否允许我们进入对应的目录

总结:对于普通文件,默认权限值为666的原因是,可执行文件是少数,如果想要该文件变成可执行,自己手动加即可。

对于目录文件,必须要有可执行权限,也就是要进入该目录,否则就没有意义了。

3.到底什么是粘滞位?

我们知道,在生活中我们会有共享文件的需求。

我们可以一个文件设置成其他人可读可写可执行,这样其他人就可以进入该共享文件,并进行操作。

但是假如其他人把共享文件删了呢?因为他有写权限,他自然可以把文件删了, 为了避免这样出现的情况,

第一种方法: 拥有者把其他人的写权限去掉!

但是新的问题来了,如果去掉其他人的写权限,那么这个共享文件/目录就不能达到很好的共享效果,因为其他人也需要向该文件中写入信息。

所以第一种方法不可取。

此时就用到了粘滞位

我们知道,一个文件是否能被删除,不是由文件本身决定的,而是由该文件所处的目录决定的。

所以粘滞位必须设置在目录下。

粘滞位是特殊的可执行权限,它的功能就是让其他人能够正常地对该共享目录/文件进行读写执行,但是不能删除,只允许该文件的拥有者/root删除

粘滞位操作方法:chmod o+t 目录名

或 chmod +t 目录名

不写其他人的权限,粘滞位也默认是对对应目录的其他人的可执行权限生效的。

总的来说,粘滞位就是防止其他用户对共享文件/目录进行删除而产生的,但是又保证了其他人可以正常对共享目录/文件操作。

总结

本文主要讲述了关于Linux下的权限的管理,已经不同用户的区别,权限掩码,粘滞位等问题。

相关文章
|
Linux
linux syscall和int 80的区别
通过以上内容,希望您能更清晰地理解 `int 0x80` 和 `syscall` 的区别及其在不同系统架构中的应用。
1069 99
|
Unix Linux 编译器
windows下和linux下cmake的规则有区别吗
通过合理使用CMake的条件逻辑和平台特定的配置选项,开发者可以编写更加灵活和健壮的CMake脚本,确保项目在Windows和Linux上的一致性和可移植性。
671 76
|
9月前
|
存储 Ubuntu 安全
Linux中Centos和Ubuntu的区别
CentOS主要面向服务器环境,而Ubuntu适用于服务器和桌面环境。   CentOS提供更精简的安装,而Ubuntu提供更广泛的开箱即用功能。   CentOS遵循RHEL的所有安全实践,而Ubuntu在安全方面采取更积极的方法。
|
9月前
|
Ubuntu 安全 Unix
Linux和Ubuntu有什么区别
综上所述,Linux和Ubuntu之间存在明显的区别。Linux是一种操作系统内核,而Ubuntu是基于Linux内核的发行版本,具有更好的易用性、社区支持和软件仓库。用户可以根据自己的需求选择不同的Linux发行版本,如果需要一个稳定、易于使用的桌面环境,Ubuntu是一个不错的选择。如果需要更加灵活和定制性强的系统,其他Linux发行版本可能更加适合。
|
10月前
|
安全 Unix Java
linux中kill -9和kill -15区别
在 Linux/Unix 系统中,`kill -9` 和 `kill -15` 是终止进程的常用命令,核心区别在于发送的信号类型不同,导致进程终止行为截然不同。`kill -15`(SIGTERM)允许进程进行清理操作后优雅退出,适用于正常关闭;而 `kill -9`(SIGKILL)则强制终止进程,不给予任何清理机会,仅在进程无响应时使用。本文从信号类型、行为、工作原理及使用建议等方面进行详细对比,帮助你更安全、有效地管理进程。
1440 0
|
安全 Linux 数据安全/隐私保护
linux root登陆,密码正确但,错误提示su: Authentication failure
通过系统化的排查和解决方案,可以有效应对 `su: Authentication failure` 问题,确保系统安全和用户权限的正确管理。
7934 36
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
1703 25
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
753 6
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
969 18
|
Linux 数据安全/隐私保护
linux权限管理
本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。
573 1
linux权限管理