Linux第五节课(权限02)

1、Linux下的用户分类

  • root:超级用户
  • 普通用户:通过root新建的用户,adduser

root不受权限约束;普通用户受权限约束;

Linux系统中,所有用户都需要有密码,无论是root还是其他,即便是多个普通用户,也需要设置密码;(建议root账号的密码与其他账号不一样!)

1.1用户之间的切换:

普通用户切换root账号(两种方法):

su

直接将当前用户切换到root账号,此时依旧处在当前目录;

su - 

相当于重新登陆,此时出于/root目录下;

从root账号转变为普通账号:

su + 用户名

可以不需要密码直接切换到普通账号!

从一个普通用户切换到另一个普通用户需要输入切换到的用户的密码!

如果我们想要暂时的对一条命令进行提权(以root的方式运行)

sudo + command

再输入当前普通用户对应的密码即可以root的身份运行!

但是!目前我们用adduser新建的用户,没有办法执行sudo,系统不信任!除非未来将普通用户,添加到系统的信任白名单里面!(不在/etc/sudoers里面) 

2、Linux文件的类型

文本的类型:Linux系统中文件名后缀没有直接的意义。(当然,不代表不用!)

  •  - :普通文件( 文本文件、源代码、库文件、可执行文件)
  • d : 目录文件
  • b:块设备文件(磁盘文件)
ls /dev/vdal
  • c: 字符设备文件(键盘,显示器文件等)
    ls /dev/vdal -al
  • p:管道文件(用来进行通信的)

Linux(操作系统)不区分文件的后缀,但是不代表在Linux上运行的软件不区分文件的后缀!

(例如gcc可以编译test.c但是不能编译test.txt --- gcc会区分文件的后缀名!)

2.1、对于普通文件

通过ls - l或者ll显示的权限的意义分别为:

  • r :可读
  • w:可写
  • x:可执行
  •  - :表示对应的位置上没有权限

角色、权限身份(拥有者、所属组、其他人)和具体的用户(root / 普通用户)之间的对应关系:

具体的用户相当于张三(李四)、而角色/权限身份相当于校长(主任)等。

为什么需要有所属组?

假如部门需要开发一个软件,a和b是竞争关系,如果a写出来一个非常好的程序,不想让b看到,那么此时权限有两种(拥有者和其他人)a作为程序拥有者可以看到,其他人看不到。但是入错C(领导)想看a写的程序,那么此时需要出现所属组,让一部分人能看到程序!

ll查看的文件信息依次为:

  • (文件的类型)
  • (文件的权限)
  • (数字空)
  • (文件的拥有者)
  • (文件的所属组)
  • (文件的大小 - 单位为字节)
  • (文件的最近修改日期)
  • (文件名)

不属于拥有者和所属组的就是other!

权限三三为一组,九个每分三个分别对应于拥有者所属组和other。

r / -
w / -
x / -
  • 每个位置是什么含义都是确定的!
  • 每个位置只有是或否,具有指定的权限!

如果没有权限但是执行了对应的操作会出现什么错误?

Permisson denied

谁可以修改文件的权限呢?

  • 文件的拥有者
  • root

3、修改权限的指令chmod

示例:

chmod u-rwx,g+rwx,o+rw test.txt

其中:

  • u为拥有者
  • g为所属组
  • o为其他人

对拥有者减去rwx(读写执行)的权限,对所属组加上rwx的权限,对其他用户加上读和写的权限,其中要用逗号分隔开!(多个用户用逗号分隔开!)

权限操作

对所有人进行权限操作!

chomd a-x test.txt

(其中a表示all,代表对所有用户都进行操作)

可以用比特位表示该角色是否有权限!三个比特位表示rwx,那么这个数字表示为8进制!

(例如110表示rw-对应于6,即6表示rw-)

实例:

chmod 000 test.txt

表示所有用户都没有权限!

如果相对所有人加上读权限(100)对应的进制位为4

chmod 444 test.txt

对所有人加上所有权限:

chmod 777 test.txt

3.1、 更改文件的拥有者(chown)

(把文件给别人需要争得别人的允许!)

chown zhangsan test.txt

将test.txt文件传递给张三!(但是需要提前争得张三的允许)

通过sudo/root账号可以强制更改文件的拥有者

3.2、更改文件的所属组(chgrp)

chgrp zhangsan test.txt

可以将所属组转给张三!(但是也需要争得张三的同意)

通过sudo/root账号可以强制更改文件的所属组

3.3、同时更改拥有者和所属组

chown shy:shy test.txt

此时可以一次性修改文件的拥有者和所属组(都改为shy)

  • 对于命令行提示符,普通用户为$;root账号为#

一个小问题:

对于zhangsan来说,如果一个文件(拥有人和所属组都为zhangsan)的权限为:

-r--rw----

那么张三是否能在这个文件中写入东西?

答案是不能!

权限在认证的时候,三三为一组,因为当前张三属于文件的拥有者,那么系统对于张三不在看其是否为所属组(优先查看!)

4、其他问题:

1.问题1:

对于默认创建的文件:

  • 普通文件的权限:664
  • 目录文件的权限:775

但是对于实际上:

  • 系统默认给普通文件的起始权限为666
  • 系统默认给目录文件的起始权限为777

umask   ---- 权限掩码

凡是umask中出现的权限,不会再最终的文件权限中出现!

可以得到系统的权限掩码为002

umask 0001

可以将权限掩码修改为001

对于创建的文件,最终的权限满足下列公式:

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

应用:

如果我们想要创建的文件对于所有用户都没有读和可执行

umask 0555

经运算可检验得创建的所有的文件都没有读和可执行权限!

2、问题2:目录权限

对于目录文件来说,它的读写执行都代表着什么呢?

进入一个目录需要什么权限?

当我们对一个目录对于所有用户去掉一个 -r 可读权限的时候,我们可以发现,我们依然可以进入这个目录,但是我们不能使用ls指令!即不能查看该目录下的文件!可以通过

touch test1.txt

创建新文件(对应于写权限!)

如果去掉 - w权限,我们可以发现此时不能创建新文件(即没有写权限!)

总结:对于目录文件

  • -r : 是否允许我们查看指定目录下的文件内容;
  • -w:是否允许我们在当前目录下进行创建,更改,删除(待定);
  • -x:是否允许用户进入对应的目录;

特别注意:

如果一个文件没有x权限(即不能进入这个文件,但是具有r权限,那么依旧可以查看该目录下的文件!)

为什么默认的普通文件没有可执行权限,而默认的目录文件有可执行权限?

因为大部分的普通文件不需要执行,默认加没有必要,需要执行的时候可以自己添加;

而对于目录文件我们是需要进入其中进行访问的!

3、问题3:粘滞位

通过

ls / home /ls

对应不同的用户账号下所创造的文件,用户目录的拥有者和所属组都是本人!(其他用户无法访问!)

普通用户自己家目录的权限是700,我在自己家里创建的文件,别人都看不到!

如果我们想要共享数据,多人共同实现一个项目,可以创建一个共享文件,(这个共享文件不在任何一个人的家目录下!)

这时候,我们可以在 \ 目录下创建一个共享目录,通过root账号设置权限,使得设指定用户具有操作权限。

但是在一个共享的目录下,一个文件不是a建立的,而且a没有rwx的权限,那么a可以删掉这个文件吗?(能删掉!但是不合理!)

4、结论

一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定!

(由于共享的目录下,其他用户对于这个目录也具有rwx权限,因此即使目录下的文件不属于他,他还是能删掉!)

如果我们去掉共享目录的w权限,我们也同时无法创建文件!(与最初的共享目录宗旨矛盾)

如果我们想要在一个目录下,不同用户创建的文件不能被其他用户随意删除,而且其他用户也能根据目录的权限进行文件查看,写入等...我们需要加如粘滞位!

chmod o+t shared

修改后可以发现,shared目录下的x位置权限由x变为t

此后,其他用户不能删除共享的没有权限的文件。

5、总结

  • 粘滞位:给目录设置的(一般为共享目录),大家可以在目录进行各自文件的增删改查,只允许文件拥有者或root删除这个文件,其他人一概不允许!t是一种特殊的x权限!
  • 在Linux系统中,要删除一个文件,用户需要具有该文件所在目录的写权限。如果用户对该目录没有写权限,则无法删除文件。
     

根目录 / 的默认权限如下:

ls - ld /

我们可以发现,根目录为root创建的, 对于其他用户来说,没有权限在根目录下创建文件夹。因此建立共享文件只能通过root来创建。

在根目录 / 下默认存在一个tmp目录,这个目录自带粘滞位t,可以用来作为共享目录!

当一个目录被设置为”粘滞位“(用chmod + t),则该目录下的文件

  • 超级管理员进行删除
  • 该目录的所有者删除
  • 该文件的所有者删除

经常下超级管理员和该文件的所有者都是同一个。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux 文件权限分为三个部分,即用户权限、组权限和其他用户权限。每个文件或目录都有一个所有者(user)和一个所有组(group)。以下是三个部分的具体解释: 1. 用户权限(User Permissions): 用户权限是针对文件或目录所有者的权限。它包括可读(read)、可写(write)和可执行(execute)三种权限。具体的权限用数字表示,分别为 4(读权限)、2(写权限)和 1(执行权限),如果将它们相加,就可以得到具体的权限值。例如,可读可写的权限值为 6,可读可执行的权限值为 5,可读可写可执行的权限值为 7。用数字表示时,每个权限都是一位,最多有三位,不足三位则用 0 补齐。例如,可读可写权限为 6,则表示为 110。 2. 组权限(Group Permissions): 组权限是针对文件或目录所在组的权限。与用户权限类似,组权限也包括可读、可写和可执行三种权限。同样地,每个权限用数字表示,具体的权限值也可以用数字相加的方式得到。 3. 其他用户权限(Other Permissions): 其他用户权限是指没有与文件或目录相关联的用户或组的权限。它也包括可读、可写和可执行三种权限,并且同样用数字表示,具体的权限值也可以用数字相加的方式得到。 Linux 文件权限的设置方式为 rwx,其中 r 表示可读,w 表示可写,x 表示可执行。通过 chmod 命令可以设置文件或目录的权限,例如,chmod 755 file.txt 表示将 file.txt 文件的权限设置为可读可写可执行,所有组的权限为可读可执行,其他用户的权限为可读可执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值