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

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

发布时间:2023-02-04 14:40:50 所属栏目:Linux 来源:
导读:  Linux 7 Basic NO.5

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

  Linux 权限有以下三种:

  基本权限

  可以使用命令l
  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这个命令可以同时修改文件的拥有者和属组,也可以用于修改属组(只要在冒号前面加个空格即可)
 
  上面讲的都是针对文件修改权限,对于这三个命令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则没有权限进入
 
  因此,可见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的命令时,在其他的用户下创建文件或子目录,其属组都会继承上一级目录的属组,这个在文件服务器中的权限管理中使用较多
 
  sticky bit 举例说明如下,
 
  在上面的例子中,我们发现其他的用户进入到目录public可以删除用户student创建的文件,此时,只需要执行如下命令即可防止文件被其他普通用户删除chmod o+t /public/,只有这个目录的拥有者和root用户可以删除,这个在文件服务器的使用中,也较多
 
  默认权限——umask
 
  对于root用户和普通用户创建文件或目录,默认的权限是怎么样,具体如下,
 
  1) 在root用户下面创建文件和目录的默认权限分别为644和755
 
  2) 在普通用户下面创建文件和目录的默认权限分别为664和775
 
  之所以会出现上面的区别,主要跟umask有关,如下
 
  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,可以对每个用户设置访问控制的规则。(对于高级权限,后面会找时间进行讲解说明)
 
  本节到此结束……
 

(编辑:开发网_新乡站长网)

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