用户基础权限、特殊权限、umask缺省权限、ACL权限和权限委派相关命令以及简介

1. 用户和权限的基本概念

1.1 基本概念

用户是Linux系统工作中重要的一环,用户管理包括用户与组的管理,在Linux系统中,不论是本机还是远程登录系统,每个系统必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。在Linux中可以指定每一个用户针对不同的文件或目录的不同权限。这些权限具体包括:

  1. 读:用r4表示,对于目录来说,如果有r权限,表示可以使用ls命令查看该目录下的文件情况,但能否查看文件的内容由文件的权限决定;
  2. 写:用w2表示,对于目录来说,拥有该权限的用户可以在该目录下创建文件和目录;
  3. 执行:x1表示,如果一个目录有x权限,表示可以使用cd命令进入到这个目录;而如果一个目录没有x权限,而有r或者w权限,表示该目录是一个问题目录。

注: 只有拥有人和root可以对文件进行权限修改,其他人不能修改文件的权限,并且只有拥有人和root可以对其进行强制写入

1.2 ls -l扩展

ls -l命令可以查看文件夹下的内容的详细信息,从左到右依次为:

  1. 权限——第一个字符如果是d则表示目录
  2. 硬链接数——通俗的讲,就是有多少种方式可以访问到当前目录/文件,比如可以通过.到达当前目录,就算一种方式。
  3. 拥有者——家目录下,文件/目录的拥有者通常都是当前用户
  4. 组——在Linux中,很多时候会出现组名和用户名相同的情况,后面再说。
  5. 大小
  6. 时间
  7. 名称
1.3 chmod的使用
1.3.1命令格式

设置权限格式:chmod u= ,g= ,o= file_name=后面分别根用户、所属组其他用户、其他用户的权限

1.3.2 常用命令示例

示例1:
命令:chmod u+r test.txt
说明:让test.txt的拥有者具有test.txt文件的读权限
示例2:
命令:chmod g+x test.txt
说明:让test.txt的拥有者所在的组拥有test.txt文件的可执行权限
示例3:
命令:chmod o+rwx test.txt
说明:让其他组拥有test.txt文件的可写可读可执行权限
对于以上示例,将命令中的+换为-就可以减去相应权限,初此之外,a表示所有的用户。如果是初次指定文件权限,则可以用以下命令:
示例4:
命令:chmod 777 test.txt表示将所有权限赋给是拥有者、拥有者所在的组及其他组,等价于chmod a=rwx test.txt,这是一个赋值法的语句,一般用来重写某个文件的权限。
关于针对目录的各种权限的说明:如果没有可读权限,则无法对该目录使用ls等相关命令,如果没有可执行权限,则无法对该目录使用cd命令,但是有可读命令的前提是必须拥有可执行权限。
示例5:
命令:chmod u-x,g-x,o-x text.txt,取消所有用户对text.txt的可执行权限。
示例6:
命令:chmod u+x,g+x,o+x test.txt,对所有用户加上对test.txt文件的可执行权限。

1.4 设置文件的拥有人和所属组(chown&chgrp)
1.4.1 chown命令
  1. 语法:chown [-options] 用户名:群组名 文件名或文件路径
  2. 参数:-R表示将一个此命令的效果应用于目录中的每个文件上,在修改目录拥有者和群组时使用。
  3. 功能:改变文件所属的用户和群组

附:如果只修改所属组,则可以使用chown :group_name filename命令即可。

1.4.2 chgrp命令
  1. 语法:chgrp group_name file_name
  2. 功能:修改文件/目录的所属组
1.5 超级用户的简介

Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源拥有访问权限,在大多数版本的Linux系统中,都不推荐直接使用root账号登录系统,在Linux系统安装的过程中会默认创建一个用户,这个用户被称为标准用户。
sudo是substitute user的缩写,表示使用另一个用户的身份,此时会要求输入密码,密码有五分钟的有效期。

2. Linux的特殊权限详解

Linux的特殊权限分为以下几类:

  1. SET UID:当文件被设置SET UID特殊权限时,任何人执行该文件,都会临时获得该文件拥有人的权限;在文件拥有者的权限列的执行权限位置,如果是s或S,则表明该文件被设置了SET UID权限,即权限列的第三位为s或S。最典型的一个应用就是/bin/passwd被设置了SET UID特殊权限。该目录的权限信息如下:
    在这里插入图片描述

  2. SET GID:该特殊权限主要应用于目录,当一个目录被设置为SET GID特殊权限时,任何用户在该目录下创建文件,该文件的所属组都会被设置为设置SET GID的那个目录的所属组,实例:给zk目录设置SET GID权限的命令为chmod g+s ./zk,设置完成后,任何人在zk目录下创建的文件其所属组都是zk目录的所属组。
    说明: 在文件所属组的权限列的执行位置被设置为s或者S,就表名该目录被设置为SET GID特殊权限

  3. Sticky(粘置位):当目录的其它用户的执行权限列为t或T时,表名该目录被设置了Sticky权限。当一个目录设置了该权限后,那么任何用户在该目录下创建的文件就只有拥有者自己和root可以删除,主要是限制对目录的写权限的。
    实例:添加sticky权限的命令为:chmod o+t dir_name

附: 当设置特殊权限后,执行权限会被覆盖,如果是小写字母的特殊权限,那么执行权限依然在,如果是大写字母的特殊权限,那么就没有执行权限了。

3. umask缺省权限

3.1 umask简介

umask被称为系统缺省权限,一般来说,umask只看结果的后三位。在大部分系统中,用户创建的目录的缺省权限为777,文件的权限为666(因为普通权限自带执行权限是不太安全的)。而用户可以通过修改umask来间接的修改用户创建的文件/目录的默认权限,umask和权限的运算关系如下:

  1. 创建目录的默认权限的最终权限为目录777减去umask的后3位
  2. 创建文件的默认权限的最终权限为文件666权限减去umask的后3位

示例:加入目前umask的值为022,那么创建的目录的默认权限就为777-022=755,文件的默认权限为666-022=644(这不是十进制加减法,要将其转为对应的rwx权限,再进行运算,即不能进行借位操作)。

3.2 umask修改方法
  1. 临时修改umask(只在当前shell有效),命令格式为:umask umask_value
    示例:umask 0033
  2. 永久修改,在/etc/bashrc文件中,添加umask umask_value即可,具体如下:
    在这里插入图片描述
    完成后,在命令行执行source /etc/bashrc命令即可让修改立即生效。

4. ACL权限详解

4.1 ACL权限简介

针对超出三类人以上的权限限制,使用基本权限(u,g,o)已经无法实现了,为了解决此问题,引入了ACL权限,ACL(Access Control List)权限全称为访问控制列表,即对访问进行控制的一张列表。

4.2 设置ACL权限
  1. 命令格式:setfacl [-options] u:username:权限 filename
  2. 实例:setfacl -m u:mds:--- test.txt表示移除mds用户对test.txt文件的所有权限;
  3. 常用参数:
    1. -m:modify,表示修改的意思
    2. u:表示针对用户设置特殊的权限
    3. -x:删除ACL权限
    4. -b:移除所有ACL权限(用ls查看不会显示“+”,-x删除完所有acl权限,依然会存在“+”)

附: 设置了ACL权限后,使用ls -l命令查看时文件的权限信息最后一列会有一个+号。
实例:
在这里插入图片描述
在这里插入图片描述

4.3 获取ACL权限信息
  1. 命令格式:getfacl file_name
    查询到的结果格式为:user(group,other,mask):username:权限,在结果之前开始有三行(以“#”开头),分别表示文件的文件名、拥有人和所属组。
  2. 结果说明:
    1. 如果第一列为user,第二列没有值,则表示该行设置的是owner的权限
    2. 如果第一列是group,第二列没有值,表示该行设置的是所属组group的权限
    3. other行总在最后一行
  3. 示例如下:
    在这里插入图片描述

注: ACL是由上到下匹配的,一旦匹配成功,立即停止。

4.4 目录的ACL权限相关

针对目录设置ACL权限意义不大,一般对目录设置的ACL权限和对普通文件设置的ACL权限意义不一样,其意义是当在目录中新建文件时其自带的ACL权限,其作用并不在于访问控制,而是ACL权限的继承。
getfacl查看目录文件的acl权限,会发现有default开头的行,这些行表示在该目录下创建文件时会继承的权限。mask表示该文件acl的最大权限,即在default权限存在的情况下,创建文件的acl权限不能超过mask指定的权限。
可以通过setfacl -m mask:新权限 目录路径来修改mask的值。
实例: 要求在test目录下创建的文件权限为user:ppd:–x,则可以直接通过命令setfacl -m u:ppd:--x test设置该目录的ACL权限。

5. 权限委派

5.1 权限委派简介

权限委派是让普通用户能获得管理员权限的一种方式,主要是涉及对/etc/sudoers文件的操作,关于更高级别的pam模块后续讲解。

5.2 权限委派实现与原理

实现:/etc/sudoers文件中,按照格式用户名 ALL=(ALL) ALL将相应用户写入,即可让指定用户的权限提升至root水平。让指定用户只可以以root身份执行特定命令的编写格式为用户名 ALL=/sbin/命令名,同时,通过%组名 ALL=(ALL) NOPASSWD:ALL格式可以让指定组内的用户以root身份执行命令且不需要输入自己的命令。
原理: 通过让该用户借助root的身份去执行命令,并未提升该用户本身的权限(也就是说这些命令实际上并不是由该用户自己执行的),且执行时需要在命令前面加上sodu,执行时需要输入该用户的密码。

实例:

  1. tgb ALL=(ALL) ALL:将用户tgb的权限提升到root的权限
  2. tgb ALL=/sbin/useradd:让用户tgb只能执行/sbin/useradd命令
  3. %ts ALL=(ALL) NOPASSWD:ALL:表示用户组ts内的用户可以让root执行任何命令且不需要输入自己的密码

附: 一般在安装操作系统时,都会修改sudoer文件,添加一个用户,以避免直接使用root进行操作,例如在安装ubuntu桌面版等操作系统时,会强制让用户创建一个用户,使用该用户时,如果要执行某些命令,则必须要在命令前面加上sudo才可以,否则会提示权限不足(permission denied)的错误。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux设置用户权限命令包括: 1. chmod:修改文件或目录的权限。 2. chown:修改文件或目录的所有者。 3. chgrp:修改文件或目录的所属组。 4. useradd:添加用户。 5. userdel:删除用户。 6. passwd:修改用户密码。 7. su:切换用户。 8. sudo:以超级用户权限执行命令。 9. visudo:编辑sudo配置文件。 10. groupadd:添加用户组。 11. groupdel:删除用户组。 12. usermod:修改用户属性。 13. chage:修改用户密码过期时间。 14. umask:设置默认文件权限掩码。 15. id:查看用户ID和所属组。 ### 回答2: Linux系统中,用户权限的设置是非常重要的一项工作,因为合理的权限设置可以防止用户的误操作破坏系统及数据的安全。在Linux系统中,有三种类型的用户权限,包括读取权限、写入权限和执行权限。以下是linux设置用户权限命令的介绍。 1. chmod命令 chmod用于修改文件或目录的权限,该命令有两种方式使用:符号方式和数字方式。 符号方式:用符号表示文件或目录的所有者、所属组和其他用户对文件或目录的权限。符号方式包括三种基本的基于权限的标记,分别是r(读取权限)、w(写入权限)和x(执行权限),分别代表读、写、执行三种基本权限。例如,给一个文件添加读取权限,可以使用chmod +r filename命令,给一个目录添加可读写执行权限,可以使用chmod u=rwx, g=rwx, o=rwx dirname命令。 数字方式:以数字来表示权限。在数字形式中,权限用3位数来表示,例如chmod 777 filename命令表示将文件filename的权限设置为所有用户均具有读、写、执行的权限。 2. chown命令 chown命令用于更改文件或目录的所有者和所属组。其中所有者和所属组可以是用户账户名称或用户账户ID,使用chown命令可以修改文件的所有者和所属组。例如,将一个文件的所有者修改为用户2,命令格式为chown user2 filename。 3. chgrp命令 chgrp命令用于修改文件或目录的所属组。使用该命令可以将一个文件或目录的所属组更改为另一个组。例如,将文件filename的所属组更改为组1,命令格式为chgrp group1 filename。 以上是Linux系统中设置用户权限命令,这些命令可以让用户更加灵活和高效地掌控文件和目录的权限。使用这些命令时需要慎重,不良的权限配置会导致系统或数据的安全问题。因此,我们需要根据实际情况来进行权限的设置,尽量不要使用777这样高权限,同时也不要使用较低的权限限制导致操作受阻,要适当平衡安全和高效。 ### 回答3: Linux中的权限是一个非常重要的概念,可以控制文件和目录对不同用户的可见/可读/可写等权限,本文将介绍如何设置用户权限命令。 Linux文件权限 在Linux中,每个文件或目录都有三种权限:读、写和执行,每个权限又分别对应三种用户:拥有者、所在组、其他用户。下面是一个例子: -rw-r--r-- 1 user group 152 Jul 15 12:00 myfile.txt 文件权限由十个字符来表示:-代表是文件,d代表是目录。接下来的三个字符表示拥有者的权限,另外三个字符代表组权限,最后三个字符表示其他用户权限。 读权限用r表示,写权限用w表示,执行权限用x表示。如果没有对应的权限,那么用-表示。 设置用户权限命令 1. chmod命令 使用chmod命令可以修改文件的权限。使用chmod命令需要指定文件的权限,可以使用数字或rwx表示。 chmod 命令的基本语法: chmod [选项] [权限] 文件名 例如,要将myfile.txt的所在组的权限更改为读写,可以使用以下命令: chmod g+rw myfile.txt 2. chown命令 使用chown命令可以更改文件或目录的拥有者。 chown 命令的基本语法: chown [选项] 用户名 文件名 例如,将myfile.txt的拥有者更改为root,可以使用以下命令: chown root myfile.txt 3. chgrp命令 使用chgrp命令可以更改文件或目录的所在组。 chgrp 命令的基本语法: chgrp [选项] 组名 文件名 例如,将myfile.txt的所在组更改为admin,可以使用以下命令: chgrp admin myfile.txt 4. umask命令 umask命令用于设置默认权限。当创建新文件或目录时,会使用umask设置的默认权限,如果不想设置默认权限,则可以将umask设置为000。 umask命令的基本语法: umask [选项] [权限] 例如,将umask设置为022,则默认权限为644: umask 022 总结 Linux中的用户权限是非常重要的,可以防止非授权用户读取、修改或删除文件。在Linux中,可以使用chmod、chown、chgrp、umask命令来设置用户权限。为了保证安全性,应该根据实际需要为每个文件或目录设置不同的权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值