静态网站开发实验报告,做招标投标网站如何,乐陵seo优化信德,网页设计网站建设招聘文件权限属性和权限管理
本章思维导图#xff1a; 注#xff1a;本章思维导图对应的Xmid文件和.png文件都以传到“资源” 文章目录 文件权限属性和权限管理1. sudo提权和sudoers文件1.1 sudo提权和成为root的区别 2. 权限2.1 Linux群体2.1.1 为什么要有所属组2.1.2 修改文件…文件权限属性和权限管理
本章思维导图 注本章思维导图对应的Xmid文件和.png文件都以传到“资源” 文章目录 文件权限属性和权限管理1. sudo提权和sudoers文件1.1 sudo提权和成为root的区别 2. 权限2.1 Linux群体2.1.1 为什么要有所属组2.1.2 修改文件的所属组、拥有者2.1.2.1更改拥有者 chown2.1.2.2 更改所属组 chgrp 2.2 文件权限属性2.2.1 认识文件权限属性2.2.2 修改文件权限属性 chmod2.2.3 目录的权限2.2.3.1 目录/tmp和粘滞位 2.2.4 权限掩码umask2.2.5 文件类型 1. sudo提权和sudoers文件
在上一篇Linux新建用户、删除用户以及用户之间的切换说到新建用户adduser、删除用户userdel都需要在root账户下进行操作或者说需要root的权限。我们也说到如果普通用户想要以root的权限进行操作那就需要提权命令sudo
下面我们就来讲讲sudo提权命令
命令 sudo 命令 功能 sudo 允许允许的用户以超级用户身份执行命令。总的来说就是允许普通用户以root的权限执行各种操作 现在有小伙伴就有疑惑了
既然每个普通用户都可以进行sudo提权操作那每个人都可以有root的权限那还需要root这个超级管理员干嘛呢
我们可以现在就来试一下 可以看到尽管通用户Test_1使用了提权命令但是并没有得到想要的结果这是为什么呢
我们发现系统提示我们用户Test_1并不处于sudoers文件 那么sudoers文件又是什么呢 sudoers文件是属于root账户的一个Linux配置文件 我们可以用命令ll打开看一下 可以看到里面只有root账户 可以通俗地将sudoers文件比作是一个白名单只有位于白名单里面的账户才可以使用sudo命令提权以root的权限执行操作 而要将用户写入sudoers文件需要root账户执行操作
到了现在应该就可以解决之前的那个疑惑了——不是所有的普通用户可以使用sudo提权只有得到root账户的信任将这个用户添加到sudoers文件中这个普通用户才可以进行sudo提权。因此我们也就不需要担心普通用户会在系统中捣乱了。
1.1 sudo提权和成为root的区别
可不要天真的以为sudo提权和成为root用root账户操作都是以root的身份执行命令就没有什么区别。
这二者其实有着本质的区别 给你root密码让你成为root——直接让你成员超级管理员将你添加到sudoers—— 相信你给你root权限但是这个root权限可以被回收。 2. 权限
然我们先举几个生活中的例子来对权限有一个更加清楚的认识 在腾讯视频、爱奇艺等软件看VIP电影那我们就需要VIP的权限需成为VIP会员否则我们就只是普通用户只能看免费电影。尽管我们有爱奇艺视频的VIP会员但是无论如何我们都不可能在爱奇艺视频里面刷C的编程题 因此我们可以得出以下两个结论
权限一定是用来限制人的对应的操作对象一定要有对应的满足人的需求的属性——就像你不能在腾讯视频里面刷C语言因为腾讯视频并没有刷题这一属性。
而将这两个结论和Linux系统的文件权限联系在一起同样也可以推出两个结论 Linux群体也就是“被限制的人”更多的是一种身份在Linux中有拥有者u、所属组g、other这三种身份o具体的人一定会在未来承担某个文件的某个身份。Linux的操作对象也就是Linux系统中的文件其属性一般叫做文件权限属性有三种可读r可写w可执行x 下面我们就对Linux群体和文件权限属性展开具体的讨论
2.1 Linux群体
前面说过Linux群体更多的是一种身份——拥有者u、所属组g、othero这三种身份
拥有者user一般就是该文件的创建者所属组group——可以在Linux系统中创建一个组群并将特定的用户拉入这样这些组里面的用户就构成了一个所属组。他们享有这个所属组被赋予的权限other——不属于拥有者和所属组的用户统称为other
2.1.1 为什么要有所属组
有些小伙伴又会有疑惑了
拥有者和other就可以确定一个文件的所属关系了为什么还要一个所属组group呢
我们可以来举一个生活中的例子 两个开发组A、B在竞争同一个项目一天项目的领导想要看开发组A成员张三写的代码但是代码是张三所写张三是这个文件的拥有者而领导是other如果想要让领导other看到张三所拥有的文件那么张三就需要将这个文件的权限开放给other但这就导致了一个问题——同为other的项目组B也可以看到项目组A的代码这显然不是我们想要的所以就需要Linux有所属组这一个概念张三可以通过过创建一个所属组将领导拉到组里同时将拥有者的权限开放给所属组这样就可以了 所以Linux所属组的存在方便了Linux系统文件权限的管理是很重要的。
2.1.2 修改文件的所属组、拥有者
注意 只能在root的权限下更改一个文件的拥有者、所属组、other无论你是不是这个文件的拥有者。 2.1.2.1更改拥有者 chown
命令 chown new_username filename new_username就是新的拥有者的用户名filename就是被更改的文件名 例如 2.1.2.2 更改所属组 chgrp
命令 ch chgrp new_groupname filename new_groupname就是新的拥有者的用户名filename就是被更改的文件名 例如 更改拥有者、所属组的同时也就在更改other因此并没有更改other的命令 2.2 文件权限属性
例如我们用命令ll来查看一个文件的具体属性 现在就以文件code为例讲一下ll所展示的这一串信息都表示了什么 文件的拥有者、所属组前面已经介绍完毕这里便不再赘述接下来我们来深入探讨一下文件权限属性和文件类型
2.2.1 认识文件权限属性
例如上面的 code1文件代表这个文件的权限属性的就是下面的九个字符 那么具体的这九个字符又都表示什么含义呢
Linux规定 将九个字符分成三组每组三个字符。例如上面的就是rw-、r--、r--这三组每组字符的每个位置代表着固定的含义第一个位置表示可写r第二个位置表示可读w第三个位置表示可执行x第一组表示拥有者的权限第二组表示所属组权限第三组表示other权限 例如对于上面的权限属性我们可以做出如下解释
Linux的文件权限值的表示方法
字符表示法
Linux表示意义Linux表示意义- - -无任何权限r - -只读- - x仅可执行r - x可读可执行- w -只写r w -可读可写- w x可写可执行r w x可读可写可执行
八进制表示法
权限符号二进制八进制- - -0 0 00- - x0 0 11- w -0 1 02- w x0 1 13r - -1 0 04r - x1 0 15r w -1 1 06r w x1 1 17
那么可读、可写、可执行都表示什么呢我们一起来看看 可以得出结论 可读r即可以打开文件查看文件内容执行cat、nano等操作 可写w即可向文件写入内容执行echo、nano等操作 可执行x对一个可执行文件进行执行操作。 注可以执行一个文件的条件为 拥有该文件的可执行权限x该文件必须要有可执行的功能必须是一个可执行的文件——这也就是我们前面所说的“对应的操作对象一定要有对应的满足人的需求的属性” 再来看一个例子 要解决这个问题就需要知道Linux的一个特性 要判断一个用户的权限首先要判断这个用户是哪个身份到底是拥有者还是所属组还是other。而匹配身份的顺序为 —— 拥有者 → 所属组 → other只要匹配成功就不会再继续匹配 因此上面的例子中用户匹配到拥有者就停止匹配了而code文件的拥有者没有任何权限所以上面的读写操作自然就不能成功了。
最后再来看一个例子 可见尽管root是code的other但是仍可以对code文件执行各项操作而不受限制。
我们可以说 权限在root账户下形同虚设。权限只限制普通用户。这也在另一方面说明了root的强大和重要性 2.2.2 修改文件权限属性 chmod 既然文件的权限值有字符表示法和八进制表示法那么修改权限的属性也有这两种方法。 只有root账户或者文件的拥有者才可以修改文件的权限属性
字符表示法修改文件权限属性
命令 chmod u/g/o/a /- rwx filename 其中
u——拥有者userg——所属组groupo——othera——所有人/-——添加或删除权限rwx——需要添加的权限
例如 八进制表示法修改文件权限属性
命令 chmod num1num2num3 filename num1num2num3为3个八进制数分别代表拥有者、所属组、other的权限
例如 2.2.3 目录的权限
我们前面提到在Linux系统中一切皆文件。所以我们可以说一个目录也是一个文件
我们先来看一个目录的详细属性
可以发现目录文件和普通文件一样也具有rwx可读可写可执行权限也有拥有者、所属组和other身份。
因此修改目录的权限属性也和修改文件的操作一样这里不再过多赘述。
那么目录文件的rwx文件又分别代表着什么呢
可执行x 可以进行总结 目录的可执行x权限限制的是普通用户进入目录和在该目录底下执行命令的能力。如果没有x权限用户就不能cd进入目录就算已经在目录里面也不能执行ll等操作。权限在root账户面前形同虚设。 可读r 可以进行总结 目录的可读r权限限制的是用户在该目录底下查看目录内容的能力如果没有可读r权限用户就不能用ls命令查看文件内容 有小伙伴可能会对上面的例子有疑惑
我连这个目录里的内容都不能查看了为什么我还可以cat查看目录里code文件的内容呢 我们必须清楚限制文件的读写权限是文件的权限属性限制目录的读写权限是目录的权限属性这二者是互不影响的因此只要对这个文件有读权限那么不管对这个目录有没有读权限我们都可以查看该文件的内容。 可写w 可以进行总结 目录的可写权限w限制的是用户在该目录底下新建和删除文件的能力如果用户没有写权限w那么用户就不能在该目录底下执行touch、mkdir、rm等命令 2.2.3.1 目录/tmp和粘滞位
我们先来看一下普通用户的家目录属性 我们发现只有家目录的拥有者即这个账户本身拥有对这个目录的所有权限而其他任何人对这个目录都没有任何权限
那么如果要在Linux中实现多个用户之间的数据传递和资源共享该怎么做呢 为了满足这一需求Linux有一个专门的目录/tmp提供给所有用户进行数据传递和共享。 我们可以看到 /tmp目录为所有用户都开放了可读、可写、可执行权限所有用户都可以进入该目录查看该目录的内容同时在该目录底下新建文件 到了这里有的小伙伴又有疑惑了
既然/tmp目录为所有用户都开放了写权限那我岂不是可以在这个目录里随便删除文件搞破坏
我们可以尝试一下、 在这里插入图片描述
可以看到Linux系统的设计者考虑到了我们的问题通过实验可以发现 在/tmp目录中如果涉及到删除、剪切操作只能对自己所拥有的文件生效如果拥有者不是自己那么就没有权限执行操作。 那么Linux系统又是通过什么来实现这一功能的呢 靠的就是我们所说的粘滞位 命令 chmod /-t d_name 粘滞位就是目录可执行权限x的升级版粘滞位一般体现在other权限的可执行权限x上。如果该目录本来拥有可执行x权限那被赋予粘滞位后**x就会变成t如果原来没有可执行x权限**那被赋予粘滞位后x就会变成T如果对一个目录的某个身份设置了粘滞位t那么该目录下的文件只能由 超级管理员删除该目录的所有者删除该文件的所有者删除
2.2.4 权限掩码umask
有必要清楚在Linux系统中文件的初始权限为666目录的初始权限为777
但是为什么我们新创建的目录和文件查看时他们的权限一般都不是初始值呢 这是因为Linux系统有权限掩码这一概念。我们可以用下面的命令查看当前的权限掩码 umask 规定超级用户默认掩码值为0022普通用户默认为0002。 我们只看后三位数字002这是三个八进制数也就是用八进制表示法表示的权限值
实际创建出来的文件权限就是由umask权限掩码和权限初始值共同决定的
文字描述权限 从初始权限中去掉在umask中出现的权限数学描述权限 初始权限 ~umaks
同时我们也可以用命令来修改权限掩码 umask 0num1num2num3 num1, num2, num3是三个八进制数 2.2.5 文件类型
在Windows系统中我们通常用一个文件的后缀来区分文件的类型。但是在Linux系统中我们靠命令ll展示的文件属性的第一个字符来区分文件的类型。 不同的字符代表着不同的类型下面给出常见的Linux文件类型 -普通文件、文本、源代码、图片、视频、库、可执行程序等d目录文件bblock块设备文件cchar字符设备文件l链接文件p普通文件ssocket文件 我们也可以用命令来查看文件到具体类型 file filename 虽然在Linux中文件后缀通常不像在Windows中那样具有特定的意义但是文件后缀在 Linux 中仍然具有一些用途 提示文件类型文件后缀可以为用户提供一些关于文件类型的提示。例如一个以 .jpg 结尾的文件通常是 JPEG 图像文件尽管这并不是强制性的。用户和应用程序可以使用这些提示来决定如何处理文件。与应用程序关联文件后缀可以与特定的应用程序相关联以指示默认的打开方式。例如以 .txt 结尾的文件通常会在文本编辑器中打开。便于组织文件文件后缀有助于用户在文件系统中组织和识别文件。例如将所有图片文件命名为 .jpg 或 .png 结尾可以使用户更容易找到它们。