小背景
在Linux中安装软件或者对文件进行操作得时候,经常会遇到权限不足这种情况,以前都是粗暴得用root用户进行文件操作,但在实际情况中,这样做无异于引狼入室,安全性极低。因此在这里就记录一下。
linux权限简介
在Linux中用户等可以被授予的文件的权限有:
- r:读权限,读取文件内容(cat more head tail)
- w:写权限,编辑、新增、修改文件内容(vi echo) ,但是不包含删除文件
- x:执行权限,可执行
其中,这三个权限在Linux中可以用三个数字来表示,由于在二进制中第一位是1的话表示的是1,第二位是1的话表示的是2,第三位则为4,因此三个不同权限分别为4,2,1.r ->4 ; w->2 ; x->1;
。而在Linux中常用三个权限的组合来表示所有的权限,举个栗子:下图中,在home文件夹下有wwwlogs这样一个文件夹,drwxrwxrwx.就是不同所有者的不同权限,首先d
表示的是该文件是一个目录,第一个rwx
表示的是所有者root
的权限是读、写和执行,第二个rwx
表示的是所属组root
的权限为读写和执行,第三个rwx
表示的是其他用户的权限为读写和执行。因此,他们的权限我们可以用777来表示,其中7表示的是4+2+1,每个权限都包含了。
注
在Linux中文件和目录的权限有区别,对于文件而言其最高权限是执行,因为对于Linux安全而言,如果黑客攻击服务器将写好的攻击文件上传到服务器上面,只有具有执行权限才可以让攻击文件生效;对于目录而言最高权限就是写,因为在目录中的文件就相当于其自身的内容,我们改变目录中的文件名或者删除文件都是对于目录的写操作,而删除对于服务器来说也是相当重要的。
linux权限修改的命令用法
-
chmod
该命令是change the permissions mode of a file 的缩写,其具体用法为:
chmod XXX(权限的数字组合) 文件的具体位置以及名称
下面是一个例子:首先在sun
目录下,输入命令ll
长显示文件的相关信息,其中123目录的权限为:755。
通过chmod命令修改123的权限为700,chmod 700 123
之后显示结果为:
但是,这样的修改权限会修改所有其他用户的权限,安全性也不高,因此我们引入下列文件权限修改命令。 -
chown(change owner) 用户名 文件名:修改文件的所有者
-
chgrp(change group) 用户名 文件名:修改文件的所属组
-
chown 所有者:所属组 文件名:同时修改其权限 所有者和所有组
后续: 文件的默认权限
- windows权限会继承,但是Linux不会这样,和上级目录没有关系。
- umask 查看默认权限: 0022:第一位是文件的特殊权限,022:文件的默认权限
- 文件的默认权限是:文件默认最大权限(666) 和 umask权限,不能拿数字直接减,但是默认权限减去umask权限的修改,即权限值 666- 022 = 644。
- 目录的默认权限是:目录默认最大权限(777) 和 umask权限相减,和上述一样;
- 如果想要修改umask值得话,可以通过umask 0XXX(想要修改的权限数值) 这个命令来临时修改,也可以通过profile文件来永久修改。