Linux常用命令(4)——权限管理命令

权限管理命令

权限位的含义

[root@localhost ~]# ll
drwxr-xr-x. 2 root root    6 Jul 11 08:38 Desktop

权限位如果不计算最后的.(这个点表示该文件收SELinux保护),那么就只有10位

第一位代表文件类型

Linux不像Windows使用后缀名来标识文件类型,而是使用权限位的第一位表示文件类型,详细文件名可以使用info ls来查看

  • -:普通文件
  • b:块设备文件,这是一种特殊设备文件,存贮设备都是这种文件,如分区文件/dev/sda1就是这种文件
  • c:字符设备文件,这也是一种特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。
  • d:目录文件,linux中一切皆文件,所以目录也是一种文件
  • l:软连接文件
  • p:管道符文件,这是一种极少见的特殊设备文件
  • s:套接字文件,这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。

第2-4位代表文件所有者的权限

  • r:代表read,是读取权限
  • w:代表write,是写权限
  • x:代表execute,是执行权限

如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限

第5-7位代表文件所属组的权限

  • r:代表read,是读取权限
  • w:代表write,是写权限
  • x:代表execute,是执行权限

如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限

第8-10位代表其他人的权限

  • r:代表read,是读取权限
  • w:代表write,是写权限
  • x:代表execute,是执行权限

如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限

基本权限的命令

chmod命令

修改权限信息的命令,其基本信息如下:

  • 命令名称:chomd
  • 英文原意:change file mode bits
  • 所在路径:/usr/bin/chmod
  • 执行权限:所有用户
  • 功能描述:修改文件的权限模式
[root@localhost~]# chmod [选项] 权限模式 文件名
选项:
	-R:			递归设置权限,也就是给予目录中的所有文件设定权限

普通用户可以修改所有者是自己的文件的权限

普通用户不能修改文件的所有者,哪怕文件是属于自己的。只有root才能修改文件所有者。

权限模式

chmod 命令的权限模式的格式是[ugoa] [[±=] [perms]],也就是[用户身份] [[赋予方式] [权限]]的格式,我们来解释一下。

用户身份:

  • -u:代表所有者(user)
  • -g:代表所属组(group)
  • -o:代表其他人(other)
  • -a:代表全部身份(all)

赋予方式:

  • +:加入权限
  • -:减去权限
  • =:设置权限

权限:

  • -r:读取权限(read)
  • -w:写入权限(write)
  • -x:执行权限(execute)

数字权限:

数字权限的赋予方式是最简单的,但是不如之前的字母权限好记、直观。

  • 4:代表r读取
  • 2:代表w写入
  • 1:代表x执行

常用权限:

数字权限的赋予方式更加简单,但是需要用户对这几个数字更加熟悉。其实常用权限也并不多,只有如下几个:

  • 644:这是文件的基本权限,代表所有者拥有读写权限,而所属组和其他人只能读
  • 755:这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
  • 777:这是最大权限,要尽力避免给文件或目录赋予这种权限,会存在安全隐患

基本权限的含义

首先,读,写,执行权限对文件和目录的作用是不同的

权限对文件的作用

  • 读(r):对文件有读的权限,代表可以读取文件的数据。如果把权限对应到命令上,那么一旦对文件有读的权限,就可以对文件执行cat、more、less、head、tail等命令查看文件内容
  • 写(w):对文件有写的权限,代表可以修改文件的数据,如果把权限对应到命令上,那么一旦对文件有写的权限,就可以对文件执行vim、echo等修改文件数据的命令。但是对文件有写的权限并不能删除文件,要对文件的上级目录有写的权限
  • 执行(x):对文件有执行权限,代表文件拥有执行权限,可以运行。在linux中,只要文件有执行权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要x权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行权限是最高权限。

权限对目录的作用

  • 读(r):对目录有读的权限,代表可以看看目录下的内容,也就是可以查看目录下有哪些子目录和子文件。如果把权限对应到命令上,那么一旦对目录拥有了读权限,就可以在目录下执行ls命令,查看目录下的内容
  • 写(w):对目录有写权限,代表可以修改目录下的数据,也就是可以在目录中新建、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写权限,就可以在目录下执行 touch、rm、cp、mv 命令。对目录来说,写权限是最高权限。
  • 执行(x):目录是不能运行的,对目录有了执行权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行,就可以对目录cd,进入目录

执行权限对于目录来说是必需的,所以目录的权限只有0、5、7三种

所有者和所属组命令

chown

chown可以修改文件和目录的所有者和所属组,其基本信息如下:

  • 命令名称:chown
  • 英文原意:change file owner and group
  • 所在路径:/usr/bin/chown
  • 执行权限:所有用户
  • 功能描述:修改文件和目录的所有者和所属组
[root@local~]# chown [选项] 所有者:所属组 文件或目录
选项
	-R:			递归设置权限,也就是给子目录中的所有文件设置权限

普通用户可以修改所有者是自己的文件的权限。

但是普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行。

chgrp

chgrp是修改文件和目录的所属组的命令,其基本信息如下:

  • 命令名称:chgrp
  • 英文原意:change group ownership
  • 所在路径:/usr/bin/chown
  • 执行权限:所有用户
  • 功能描述:修改文件和目录的所属组
[root@local~]# chgrp user file
#将文件file的所属组改为user

umask默认权限

默认八进制显示; -S 用字母表示;

先了解一下新建文件和目录的默认最大权限。

  • 对文件来讲,新建文件的默认最大权限是666,没有执行权限。这是因为执行权限对文件来讲比较危险,不能在新建文件的时候默认赋予,而必须通过用户手工赋予。

  • 对目录来讲,新建目录的默认最大权限是777。这是因为对目录而言,执行权限仅仅代表进入目录,所以即使建立新文件时直接默认赋予,也没有什么危险

按照官方的标准算法,umask默认权限需要使用二进制进行逻辑与和逻辑非联合运算才可以得到正确的新建文件和目录的默认权限。这种方法既不好计算,也不好理解

这里还是按照权限字母来讲解umask权限的计算方法。超级用户的umask值为002,我们就按照普通用户默认的umask值是022来分别计算一下新建文件和目录的默认权限吧:

  • 文件的默认权限最大只能是666,而umask的值是022

-rw-rw-rw- 减去 -----w–w- 等于-rw-r–r–

  • 目录的默认权限最大可以是777,而umask的值是022

drwxrwxrwx 减去 d----w–w- 等于 drwx-r-xr-x

注意:umask默认权限的计算绝不是数字直接相减。

例如umask是033呢?

文件的默认权限最大只能是666,而umask的值是033

如果直接数字加减,那么权限是633,而3不可能出现在权限数字里

-rw-rw-rw-减去-----wx-wx等于-rw-r–r—

你可能感兴趣的:(linux初级,linux,服务器,运维)