3.5 权限管理命令

3.5.1 权限介绍

1.为什么需要权限

绝大多数用户使用的是个人计算机,而使用个人计算机的用户一般都是被信任的用户(如家人、朋友等)。在这种情况下,大家都可以使用管理员身份直接登录。又因为管理员拥有最大权限,所以给我们带来了错觉,以为在计算机中不需要分配权限等级,不需要使用不同的账户。

但是在服务器上就不一样了,在服务器上运行的数据越重要(如游戏数据),价值越高(如电子商城数据、银行数据),那么对权限的设定就要越详细,用户的分级也要越明确。所以,在服务器上,绝对不是所有的用户都使用root身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。

2.文件的所有者、所属组和其他人

用ls -l命令,可以查看文件的所有者、所属组,例如:

    [root@localhost ~]# ls -l mylog.log
-rw-r--r--. 1 LaytonWang root 34 Dec 10 21:21 mylog.log

这里的LaytonWang用户就是文件的所有者,root组就是文件的所属组。文件的所有者一般就是这个文件的建立者。

用户组就是一组用户的集合,那为什么要把用户放入一个用户组中呢?当然是为了方便管理。如果我们有100位用户,而这100位用户对同一个文件的权限是一致的,那我们是一位用户一位用户地分配权限方便,还是把100位用户加入一个用户组中,然后给这个用户组分配权限方便呢?不言而喻,一定是给一个用户组分配权限更加方便。

3.权限位的含义

ls -l命令,长格式显示的第一列就是文件的权限,例如:

    [root@localhost ~]# ls -l mylog.log
-rw-r--r--. 1 LaytonWang root 34 Dec 10 21:21 mylog.log

第一列的权限位如果不计算最后的“.”(这个点的含义我们在后面解释),则共有10位,这10位权限位的含义如下图所示。

●第1位代表文件类型。

Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。这里只讲一些常见的文件类型。

“-”:普通文件。

“b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。

“c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。

“d”:目录文件。Linux中一切皆文件,所以目录也是文件的一种。

“l”:软链接文件。

“p”:管道符文件。这是一种非常少见的特殊设备文件。

“s”:套接字文件。这也是一种特殊设备文件,一些服务支持Socket访问,就会产生这样的文件。

●第2~4位代表文件所有者的权限。

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

“r”:代表read,是读取权限。

“w”:代表write,是写权限。

“x”:代表execute,是执行权限。

●第5~7位代表文件所属组的权限,同样拥有“rwx”权限。

●第8~10位代表其他人的权限,同样拥有“rwx”权限。

以上就是文件基本权限的含义。

我们再看看权限位的这个“.”的作用。这个点是在CentOS 6以上的系统中才出现的,在以前的系统中是没有的。如果在文件的权限位中含有“.”,则表示这个文件受SE Linux的安全规则管理。

3.5.2 基本权限的命令

修改权限的命令chmod:

●命令名称:chmod。

●英文原意:change file mode bits。

●所在路径:/usr/bin/chmod。

●执行权限:所有用户。

●功能描述:修改文件的权限模式。

(1)命令格式

    [root@localhost ~]# chmod [选项] 权限模式 文件名
选项:
-R: 递归设置权限,也就是给子目录中的所有文件设定权限

(2)权限模式

chmod命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[用户身份][[赋予方式][权限]]”的格式。

●用户身份。

u:代表所有者(user)。

g:代表所属组(group)。

o:代表其他人(other)。

a:代表全部身份(all)。

●赋予方式。

+:加入权限。

-:去除权限。

=:设置权限。

●权限。

r:读取权限(read)。

w:写权限(write)。

x:执行权限(execute)。

例子1用“+”加入权限

    [root@localhost ~]# touch iron_man
[root@localhost ~]# ll iron_man
-rw-r--r--. 1 root root 0 Jan 25 07:29 iron_man
#这个文件的默认权限是“所有者:读、写权限;所属组:只读权限;其他人:只读权限”
[root@localhost ~]# chmod u+x iron_man
#给所有者加入执行权限
[root@localhost ~]# ll iron_man
-rwxr--r--. 1 root root 0 Jan 25 07:29 iron_man

例子2给多个身份同时加入权限

    [root@localhost ~]# chmod g+w, o+w iron_man
#给所属组和其他人同时加入写权限
[root@localhost ~]# ll iron_man
-rwxrw-rw-. 1 root root 0 Jan 25 07:29 iron_man

例子3用“-”减去权限

    [root@localhost ~]# chmod u-x, g-w, o-w iron_man
#给所有者减去执行权限,给所属组和其他人都减去写权限,也就是恢复默认权限
[root@localhost ~]# ll iron_man
-rw-r--r--. 1 root root 0 Jan 25 07:29 iron_man

例子4用“=”设置权限

用“+-”赋予权限是比较麻烦的,需要先确定原始权限是什么,然后在原始权限的基础上加减权限。其实可以使用“=”来直接设定权限,例如:

    [root@localhost ~]# chmod u=rwx, g=rw, o=rw iron_man
#给所有者赋予权限“rwx”,给所属组和其他人赋予权限“rw”
[root@localhost ~]# ll iron_man
-rwxrw-rw-. 1 root root 0 Jan 25 07:29 iron_man

使用“=”赋予权限,确实不用在原始权限的基础之上进行加减了,但是依然要写很长一条命令,还可以使用数字权限的方式来赋予权限。

(3)数字权限

数字权限的含义:

文件的“读、写、执行”三种权限,占用了三个位置,可以用3位二进制来对应这个三个位置。对应位置有权限为“1”,对应位置没有权限为“0”,设置权限时用对应的八进制数设置。

●000:代表“---”权限,八进制为0。

●001:代表“--x”权限,八进制为1。

●010:代表“-w-”权限,八进制为2。

●011:代表“-wx”权限,八进制为3。

●100:代表“r--”权限,八进制为4。

●101:代表“r-x”权限,八进制为5。

●110:代表“rw-”权限,八进制为6。

●111:代表“rwx”权限,八进制为7。

例如:给文件赋予“755”权限,二进制为“111”“101”“101”,即“rwx”“r-x”“r-x”。

    [root@localhost ~]# chmod 755 iron_man
[root@localhost ~]# ll iron_man
-rwxr-xr-x. 1 root root 0 Jan 25 07:29 iron_man

我们很少会使用“457”这样的权限,因为这样的权限是不合理的,因为文件所有者的权限还没有其他人的权限大呢。除非是实验需要,否则一般情况下所有者的权限要大于所属组和其他人的权限。

3.5.3 基本权限的含义

(1)权限含义的解释

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

①权限对文件的作用。

●读(r):

对文件有读(r)权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读(r)权限,就可以对文件执行cat、more、less、head、tail等文件查看命令。

●写(w):

对文件有写(w)权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写(w)权限,就可以对文件执行vim、echo等修改文件数据的命令。

注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据。如果要想删除文件,则需要对文件的上级目录拥有写权限。

●执行(x):

对文件有执行(x)权限,代表文件拥有了执行权限,可以运行。在Linux中,只要文件有执行(x)权限,这个文件就是执行文件了。只是这个文件到底能不能正确执行,不仅需要执行(x)权限,还要看文件中的代码是不是正确的语言代码。对文件来说,执行(x)权限是最高权限。

②权限对目录的作用。

●读(r):

对目录有读(r)权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些子文件和子目录。如果把权限对应到命令上,那么一旦对目录拥有了读(r)权限,就可以在目录下执行ls命令,查看目录下的内容了。

●写(w):

对目录有写(r)权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪切子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写(w)权限,就可以在目录下执行touch、rm、cp、mv命令。对目录来说,写(w)权限是最高权限。

●执行(x):

目录是不能运行的,那么对目录拥有执行(x)权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行(x)权限,就可以对目录执行cd命令,进入目录。

3.5.4 所有者和所属组命令

(1)chown命令

chown是修改文件和目录的所有者和所属组的命令。

●命令名称:chown。

●英文原意:change file owner and group。

●所在路径:/usr/bin/chown。

●执行权限:所有用户。

●功能描述:修改文件和目录的所有者和所属组。

①命令格式

    [root@localhost ~]# chown [选项] 所有者:所属组 文件或目录
选项:
-R:递归设置权限,也就是给子目录中的所有文件设置权限

②常见用法

例子1修改文件的所有者

之所以需要修改文件的所有者,是因为赋予权限的需要。当有普通用户需要对某个文件拥有最高权限的时候,如果把这个普通用户的权限修改为最高权限,是非常不安全的做法。合理的做法是修改文件的所有者,这样既能让普通用户拥有最高权限,又不会影响其他普通用户。例如:

    [root@localhost ~]# touch iron_man
[root@localhost ~]# ll iron_man
-rw-r--r--. 1 root root 0 Jan 25 08:39 iron_man
#文件的所有者是root,普通用户LaytonWang对这个文件仅拥有只读权限
[root@localhost ~]# chown LaytonWang iron_man
#修改文件的所有者
[root@localhost ~]# ll iron_man
-rw-r--r--. 1 LaytonWang root 0 Jan 25 08:39 iron_man
#所有者变成了LaytonWang用户,这时LaytonWang用户对这个文件就拥有了读、写权限

例子2修改文件的所属组

修改所属组,也是为了调整文件的权限。如果可以把用户加入同一个组当中,然后直接调整所属组的权限,那当然要比一个一个用户赋予权限要简单方便。例如:

    [root@localhost ~]# chown LaytonWang: LaytonWang iron_man
#“:”之前是文件的所有者,之后是所属组。这里的“:”也可以使用“.”代替
[root@localhost ~]# ll iron_man
-rw-r--r--. 1 LaytonWang LaytonWang 0 Jan 25 08:39 iron_man

Linux中用户组的建立与Windows中是不同的。在Windows中,新建的用户都属于users这个组,而不会建立更多的新组。但是在Linux中,每个用户建立之后,都会建立和用户名同名的用户组,作为这个用户的初始组,user用户组是自动建立的。

例子3普通用户修改权限

并不是只有root用户才可以修改文件的权限,而是root用户可以修改任何文件的权限。但是普通用户只能修改自己文件的权限。也就是说,只有普通用户是这个文件的所有者,才可以修改文件的权限。

    [root@localhost ~]# cd /home/LaytonWang/
#进入LaytonWang用户的家目录
[root@localhost LaytonWang]# touch test
#由root用户新建文件test
[root@localhost LaytonWang]# ll test
-rw-r--r--. 1 root root 0 Jan 25 08:56 test
#文件所有者和所属组都是root用户
[root@localhost LaytonWang]# su - LaytonWang
#切换为LaytonWang用户
[LaytonWang@localhost ~]$ chmod 755 test
chmod: changing permissions of ‘test’: Operation not permitted
# LaytonWang用户不能修改test文件的权限
[LaytonWang@localhost ~]$ exit
#退回到root身份
[root@localhost LaytonWang]# chown LaytonWang test
#由root用户把test文件的所有者改为LaytonWang用户
[root@localhost LaytonWang]# su - LaytonWang
#切换为LaytonWang用户
[LaytonWang @localhost ~]$ chmod 755 test
# LaytonWang用户由于是test文件的所有者,所以可以修改文件的权限
[LaytonWang @localhost ~]$ ll test
-rwxr-xr-x. 1 LaytonWang root 0 Jan 25 08:56 test

(2)chgrp命令

●命令名称:chgrp。

●英文原意:change group ownership。

●所在路径:/urs/bin/chgrp。

●执行权限:所有用户。

●功能描述:修改文件和目录的所属组。

例如:

    [root@localhost ~]# touch iron_man
[root@localhost ~]# chgrp LaytonWang iron_man
#修改iron_man文件的所属组为LaytonWang用户组
[root@localhost ~]# ll iron_man
-rw-r--r--. 1 root LaytonWang 0 Jan 25 09:10 iron_man

3.5.5 umask默认权限

(1)umask默认权限的作用

umask默认权限是Linux权限的一种,主要用于让Linux中的新建文件和目录拥有默认权限。Linux是一个比较安全的操作系统,而安全的基础就是权限,所以,在Linux中所有的文件和目录都要有基本的权限,新建的文件和目录当然也要有默认的权限。

查看系统的umask权限:

    [root@localhost ~]# umask
0022
#用八进制数值显示umask权限
[root@localhost ~]# umask -S
u=rwx, g=rx, o=rx
#用字母表示文件和目录的初始权限

查看数值的umask权限,看到的是4位数字“0022”,其中第一个数字“0”代表的是文件的特殊权限(SetUID、SetGID、Sticky BIT),后3位数字“022”才是真正的umask默认权限。

(2)umask默认权限的计算方法

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

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

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

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

这里还是按照权限字母来讲解umask权限的计算方法。我们就按照默认的umask值是022来分别计算一下新建文件和目录的默认权限。

●文件的默认权限最大只能是666,换算成字母就是“-rw-rw-rw-”;而umask的值是022,也换算成字母就是“-----w--w-”。把两个字母权限相减,得到的就是新建文件的默认权限:

(-rw-rw-rw-)-(-----w--w-)=(-rw-r--r--)。

●目录的默认权限最大可以是777,换算成字母就是“drwxrwxrwx”;而umask的值是022,也换算成字母就是“d----w--w-”。也把两个字母权限相减,得到的就是新建目录的默认权限:

(drwxrwxrwx)-(d----w--w-)=(drwx-r-xr-x)。

(3)umask默认权限的修改方法

umask默认权限可以直接通过命令来进行修改,例如:

    [root@localhost ~]# umask 002
[root@localhost ~]# umask 033

不过,通过命令进行的修改只能临时生效,一旦重启或重新登录就会失效。如果想让修改永久生效,则需要修改对应的环境变量配置文件/etc/profile。例如:

    [root@localhost ~]# vi /etc/profile
…省略部分内容…
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
#如果UID大于199(普通用户),则使用此umask值
else
umask 022
#如果UID小于199(超级用户),则使用此umask值
fi
…省略部分内容…

小结:

文件权限位共10位(如:-rw-r--r--),第1位是文件类型,第2~4、5~7、8~10位分别是文件所有者、所属组、其他人的权限;chmod命令用来修改权限;chown命令用来修改文件和目录的所有者和所属组;chgrp命令用来修改文件和目录的所属组;umask用来查看和临时设置文件和目录的默认初始权限。

Linux笔记03: Linux常用命令_3.5权限管理命令的更多相关文章

  1. Linux常用命令(第二版) --权限管理命令

    权限管理命令 1.chmod[change the permissions mode of a file] : /bin/chmod 语法: chmod [{ugo}{+-=}{rwx}] [文件或目 ...

  2. Linux常用命令之链接命令和权限管理命令

    目录 1.链接命令 一.生成链接文件命令:ln 2.权限管理命令3.总结 一.更改文件或目录权限命令:chmod 二.改变文件或目录所有者命令:chown 三.改变文件或目录所属组命令:chgrp 四 ...

  3. Linux系列教程(五)——Linux常用命令之链接命令和权限管理命令

    前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...

  4. Linux系列教程(五)——Linux链接命令和权限管理命令

    前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...

  5. linux笔记:linux常用命令-权限管理命令

    一个文件的权限只有root和所有者可以更改. 权限管理命令:chmod(改变文件或目录的权限) 权限的数字表示: 用权限加减的方式改变权限(u代表所有者,g代表所属组,o代表其他人,a代表所有人): ...

  6. Linux学习之常用权限管理命令(二)

    (一)常用权限管理命令 (1)chmod命令 (2)chown (3)chgrp (4)umask (一)常用权限管理命令 (1)chmod命令 命令名称:chmod命令英文原意:change the ...

  7. Linux常用命令之用户权限管理chmod、chown、chgrp、umask命令讲解

    这节课我们重点来学习权限管理命令,说到权限大家可能第一时间能想到的就是读.写.执行 rwx 三种权限,在正式讲解权限命令之前,先简单的介绍一下rwx权限对于文件和目录的不同含义. 权限字符 权限 对文 ...

  8. 第3章 Linux常用命令(2)_权限管理命令

    2. 权限管理命令 2.1 改变文件或目录权限:chmod (1)chmod命令 命令名称 chmod(change the permission mode of a file) 命令所在路径 /bi ...

  9. Linux常用命令2 权限管理命令

    1.权限管理命令:chmod 上面图片中的ugoa与rwx并不是一个命令,而是不同选项 u 所有者  g 所属组 o 其他人 a 所有人 r 读取权限 w写入权限  x 执行权限 chmod u+x ...

  10. Linux学习笔记(八)权限管理命令

    权限管理命令 权限位含义 chmod chown chgrp umask默认权限 权限位含义 第1位代表文件类型 "-":普通文件 "b":块设备文件 &quo ...

随机推荐

  1. 6、Mybatis之高级查询

    6.1.创建接口.映射文件和测试类 ++++++++++++++++++++++++++分割线++++++++++++++++++++++++++ 注意namespace属性值为对应接口的全限定类名 ...

  2. [WPF]使用HLSL实现百叶窗动效

    百叶窗动画是制作PPT时常用的动画之一,本文将通过实现百叶窗动画效果的例子介绍在WPF中如何使用ShaderEffect.ShaderEffect是使用高级着色器语言(High Level Shadi ...

  3. VB快速上手文档教程

    前言 本来我想可能不会接触到这个语言, 不过在用excel时需要用到VBA. 这就不得不专门去学习一番. 入了个门, 专门写个文档留着. 万一以后用得到呢- 论VB, 我还是初学者. 如有弄错了的地方 ...

  4. Intrusion Detection Using Convolutional Neural Networks for Representation Learning 笔记

    Intrusion Detection Using Convolutional Neural Networks for Representation Learning 2.2 实验数据的预处理 为了确 ...

  5. 如何创建可引导的 macOS Sonoma 安装介质

    2023 年 9 月 26 日(北京时间 27 日凌晨)macOS Sonoma 正式版现已发布. 如何创建可引导的 macOS Sonoma 安装介质 如何创建可引导的 macOS 安装器 | 如何 ...

  6. 其它——Siege压力测试工具使用

    文章目录 Siege压力测试工具使用 一 Siege介绍 二 windows 下使用 三 mac和linux使用 四 使用 五 参数详解 六 结果详解 七 修改系统的文件描述符限制 Siege压力测试 ...

  7. Django-rest-framework框架——过滤排序分页异常处理、自动生成接口文档、JWT认证

    @ 目录 一 过滤Filtering 二 排序 三 分页Pagination 可选分页器 应用 四 异常处理 Exceptions 4.1 使用方式 4.2 案例 4.3 REST framework ...

  8. python setup.py sdist bdist_wheel

    # python setup.py sdist bdist_wheel# twine upload dist/*import ioimport osimport sysfrom shutil impo ...

  9. 中华人民共和国企业所得税月(季)度预缴纳税申报表(A类,2018年版)

    企业按照<中华人民共和国公司法>有关规定整体改制,包括非公司制企业改制为有限责任公司或股份有限公司,有限责任公司变更为股份有限公司,股份有限公司变更为有限责任公司,原企业投资主体存续并在改 ...

  10. MSFvenom恶意程序生成与利用

    MSFvenom 1.1 MSFvenom介绍 MSFvenom是Msfpayload和Msfencode的组合,可以生成各种攻击载荷,并且可以对载荷进行编码.做渗透测试时往往需要将有效负载部署在目标 ...