加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

5 Linux 7 中控制文件的访问权限——文件系统权限的讲解

发布时间:2023-01-05 06:01:46 所属栏目:Linux 来源:网络
导读:
Linux 7 Basic NO.5
大家好!本节将讲解关于通过文件系统权限如何去控制Linux系统中文件的访问。如有不足,请指出并指正。 ^-^
Linux 权限有以下三种:
基本权限
可以使用命令ls -l查看文

linux权限_linux给用户赋予权限_linux mkdir权限不够

Linux 7 Basic NO.5

大家好!本节将讲解关于通过文件系统权限如何去控制Linux系统中文件的访问。如有不足,请指出并指正。 ^-^

Linux 权限有以下三种:

基本权限

可以使用命令ls -l查看文件的权限

[root@foundation0 ~]# whatis ls

ls (1) - list directory contents

ls (1p) - list directory contents

eg:

-l表示显示长列表格式,通过man ls可以查找到相应的帮助

[root@foundation0 ~]# ls -l /etc/passwd

-rw-r--r--. 1 root root 2153 Mar 16 2016 /etc/passwd

当然也可执行ll命令进行查看,实际上ll就是ls -l,如下,ll是ls -l的别名

linux权限_linux给用户赋予权限_linux mkdir权限不够

接下来,对ls -l显示出来的内容进行解析

-rw-r--r--. 1 root root 2153 Mar 16 2016 /etc/passwd

第一个字符“-”代表文件的类型,文件类型分类及字符如下

紧接着后面的9个字符,每三个为一组,分别代表user(用户),group(属组),other(其它用户和组)这三个对文件的访问权限,权限有读,写linux权限,执行分别对应r(read),w(write),x(exec)

-rw-r--r--. 1 root root 2153 Mar 16 2016 /etc/passwd

第十一个字符为“.”【一个点】,这个涉及到SELINUX是否有禁用,如果没有启用SELINUX,将没有这个点

紧接着的数字1,为文件硬链接数,后面的章节会提及,这里暂不解释

第一个root为user(用户)表示文件的拥有者,可以看到root用户对文件/etc/passwd有读写的权限(rw-)

第二个root为group(属组)表示文件在root组中的权限为只读(r--)

对于Other,即除了root用户和root组,其它的我们称之为other,可以看到权限为只读(r--)

1) 修改文件的权限——chmod

[root@foundation0 ~]# whatis chmod

chmod (1) - change file mode bits

chmod (1p) - change the file modes

chmod (2) - change permissions of a file

chmod (3p) - change mode of a file

eg:

我们拷贝文件passwd进行实验,如下,

参数解析:

u代表user;g代表group;o代表other

a代表所有all

+代表增加权限;- 代表删除权限;= 代表重新分配权限

linux给用户赋予权限_linux权限_linux mkdir权限不够

如上图,可以看到所有的用户拥有所有的权限,我们也可以分开进行权限的更改,如,chmod o-x passwd表示对other删除执行的权限

使用参数a可以同时修改u,g,o的权限,如下,

[root@desktop0 ~]# chmod a=r passwd 将文件的权限设置为全部只读

[root@desktop0 ~]# ll passwd

-r--r--r--. 1 root root 2178 Mar 14 20:33 passwd

2) 修改文件的拥有者和属组——chown,chgrp

[root@foundation0 ~]# whatis chown

chown (1) - change file owner and group

chown (1p) - change the file ownership

chown (2) - change ownership of a file

chown (3p) - change owner and group of a file

[root@foundation0 ~]# whatis chgrp

chgrp (1) - change group ownership

chgrp (1p) - change the file group ownership

eg:

如下图的操作,修改文件的拥有者为student,再修改文件的属组为student,使用chown这个命令可以同时修改文件的拥有者和属组,也可以用于修改属组(只要在冒号前面加个空格即可)

linux给用户赋予权限_linux mkdir权限不够_linux权限

上面讲的都是针对文件修改权限,对于这三个命令chown chgrp chmod,如果要对目录进行权限的修改,可以加选项-R,即--recursive(递归)

3) 通过下面的实验讲解权限的优先顺序

演试实验如下:

1.创建目录public,使用参数-d查看目录public的权限

[root@desktop0 ~]# mkdir /public

[root@desktop0 ~]# ll -d /public/

drwxr-xr-x. 2 root root 6 Mar 14 20:43 /public/

2.创建三个用户,分别为ldapuser1 ldapuser2 ldapuser3,可以看到对于public为other的权限,只有读和执行的权限

3.创建组sysgroup

[root@desktop0 ~]# groupadd sysgroup

4.将目录的属组修改为sysgroup

[root@desktop0 ~]# chown :sysgroup /public/

[root@desktop0 ~]# ll -d /public/

drwxr-xr-x. 2 root sysgroup 6 Mar 14 20:43 /public/

5.将ldapuser3加到组sysgroup中,再为目录public的other加写的权限o+w

[root@desktop0 ~]# usermod -G sysgroup ldapuser3

[root@desktop0 ~]# chmod o+w /public/

6.最后的目录public的权限如下

[root@desktop0 ~]# ll -d /public/

drwxr-xrwx. 2 root sysgroup 6 Mar 14 20:43 /public/

此时,以下三个用户对于目录public有什么权限,如下

总结权限优先顺序规则如下:

4) 对于chmod这个命令的另一种使用方式

前面讲的是,使用字母的方式(u g o)【user group other】

接下来说以下使用数字的方式如何修改权限

读,写,执行对应的数字如下,

eg:

chmod 644 passwd 执行该命令后,passwd文件的权限为何,如下

注意:基本权限对root用户不生效,可以将权限设置为---,即什么权限都没有,对于普通用户将看不到该文件,对于root用户失效

对于文件的权限一般为读写,普通文件的执行权限可有可无(脚本文件则需要执行权限)

对于目录的权限一般为读和执行,最重要的权限是执行权限,如果没有执行权限,用户将无法执行cd命令进入到该目录,如 cd /public

如下图,将目录public的权限全部去掉,root还是可以进入到该目录,而其他的用户student则没有权限进入

linux权限_linux mkdir权限不够_linux给用户赋予权限

因此,可见root用户的权限太大了,平时维护工作中,尽量少用该用户,以免误操作

特殊权限

特殊权限有如下三种

针对文件,必须是应用程序,且有x权限,以文件的拥有者来决定

针对文件,必须是应用程序,且有x权限,以组决定

针对目录,必须对目录wx权限,内部新创建的文件和目录有相同的组

针对目录,且他人必须有wx权限,只有root,目录拥有者才能删除

setuid说明如下,

查看文件/etc/shadow的权限为---------,表示只有root用户能进行修改,而命令passwd在修改用户密码时,就是修改shadow文件,如下,如果切换到到普通用户student,其没有权限修改文件shadow,为什么可以自行修改密码passwd student?

[root@desktop0 ~]# ll /etc/shadow

----------. 1 root root 1450 Mar 14 20:44 /etc/shadow

[root@desktop0 ~]# su - student

我们通过查看文件/usr/bin/passwd文件的权限,发现user的权限为rws,s这个权限就是特殊权限,即setuid,该权限不管是谁执行,均以文件的拥有者来决定,所以当用户student执行命令passwd student修改密码时,其实是以root用户的身份在执行命令,所以才有权限修改文件/etc/shadow。如下,

[root@desktop0 ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jan 30 2014 /usr/bin/passwd

[root@desktop0 ~]#chmod u-s /usr/bin/passwd

如果我们执行上面的命令,将s权限去掉,那么其他用户将无法自行修改密码

这里就涉及到文件的安全,我们知道,在Linux中,有一个为vi或vim的编辑器,如果我们为该命令添加s,那任何用户都可以去修改Linux中的任何文件,这就很危险了。setuid主要是为了保护文件,通过应用程序去修改文件,不是所有的命令都可添加s的权限,如vim

setgid举例说明如下,

如下图的实验操作,可以看出,通过为目录public的组加s的命令时,在其他的用户下创建文件或子目录,其属组都会继承上一级目录的属组,这个在文件服务器中的权限管理中使用较多

linux给用户赋予权限_linux mkdir权限不够_linux权限

sticky bit 举例说明如下,

在上面的例子中,我们发现其他的用户进入到目录public可以删除用户student创建的文件,此时,只需要执行如下命令即可防止文件被其他普通用户删除chmod o+t /public/,只有这个目录的拥有者和root用户可以删除,这个在文件服务器的使用中,也较多

linux给用户赋予权限_linux mkdir权限不够_linux权限

默认权限——umask

对于root用户和普通用户创建文件或目录,默认的权限是怎么样,具体如下,

1) 在root用户下面创建文件和目录的默认权限分别为644和755

linux给用户赋予权限_linux权限_linux mkdir权限不够

2) 在普通用户下面创建文件和目录的默认权限分别为664和775

linux mkdir权限不够_linux给用户赋予权限_linux权限

之所以会出现上面的区别,主要跟umask有关,如下

linux给用户赋予权限_linux权限_linux mkdir权限不够

root用户的umask为0022,普通用户的umask为0002

四位数中第一位代表的是特殊权限,后三位代表的时基本权限

对于文件,可以没有执行权限,满权限为666;对于目录,满权限为777

(1)[root@desktop0 ~]# umask

0022

root用户下,默认的文件权限为666-022=644,默认的目录权限为777-022=755

(2)[root@desktop0 ~]# su - student

[student@desktop0 ~]$ umask 666-002 777-002

0002

普通用户下,默认的文件权限为666-002=664,默认的目录权限为777-002=775

由此可见,umask是可以更改,位于文件/etc/profile,如果修改自己的,则为~.bash_profile

对于基本权限,不能对于每一个用户设定独立权限,只能通过高级权限ACL Access Control List,可以对每个用户设置访问控制的规则。(对于高级权限,后面会找时间进行讲解说明)

本节到此结束……

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!