5 Linux 7 中控制文件的访问权限——文件系统权限的讲解
Linux 7 Basic NO.5
大家好!本节将讲解关于通过文件系统权限如何去控制Linux系统中文件的访问。如有不足,请指出并指正。 ^-^
Linux 权限有以下三种:
基本权限
可以使用命令ls -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的别名 接下来,对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 +代表增加权限;- 代表删除权限;= 代表重新分配权限 如上图,可以看到所有的用户拥有所有的权限,我们也可以分开进行权限的更改,如,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,可以对每个用户设置访问控制的规则。(对于高级权限,后面会找时间进行讲解说明) 本节到此结束…… (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |