用户、群组和权限

Linux系统的安全措施:

Linux系统所采取的安全措施如下,用户登录系统时必须提供用户名和密码,以用户和群组来控制访问文件和其他资源,每个文件都属于一个用户并与一群文件相关,每个进程都与一个用户和群组相关联。

用户及passwd文件:

在Linux系统中用户具有如下特性:每一个用户都有一个唯一的用户标识符,用户名和UID都存放在/etc/passwd文件中,在口令文件中还存放了每个用户的家目录、以及该用户登录后第一个执行的程序,如果没有相应的权限就不能读、写或执行其他用户的文件。

/etc/passwd文件中的内容:

在/etc/passwd文件中记录了每个用户的信息,每一个用户都占用一行记录,以冒号分隔成7个字段(列),其中第一个记录是root用户的。这7个字段的具体含义为:

1.记录的是这个用户的名字

2.如果是x,表示该用户登录系统时必须使用密码,如果为空则该用户在登录时无需提供密码

3.记录的是这个用户的uid

4.记录的是这个用户所属群组的gid

5.记录的是有关这个用户的注释信息

6.记录的是这个用户的家目录的路径

7.记录的是这个用户登录后,第一个要执行的进程

shadow文件:

/etc/shadow文件存储了所有用户的密码,每一个用户占用一行记录,它实际上是存放用户密码的数据库。

群组及相关文件:

Linux系统中群组(groups)具有如下特征:每个用户一定隶属至少一个群组,而每一个群组都有一个groups标识符------即gid。群组和对应的gid都存放在/etc/group文件中,系统创建用户时为每个用户创建一个同名的群组文件并将该用户加入到这个群组中、也可以加入到其他群组中。如果有一个文件属于某个群组,那么该群组中所有的用户都可以访问这个文件。

group文件中的内容:

/etc/group文件存放了所有群组的信息,它实际上是一个存放群组信息的数据库,每个群组占用一行记录。每个记录以冒号分隔成4个字段:第1个字段是这个群组的名字,第2个字段的x表示该群组在登录时必须使用密码,第3个字段记录的是这个群组的gid,第4个字段记录的是该群组里还有哪些其他的成员。

root用户及文件的安全控制:

在每个Linux系统上都一定有一个root用户,root用户也被称作超级用户、有至高无上的权限。root可以完全不受限制地访问任何用户的账户和所有的文件及目录。每一个文件(或目录)具有3种类型的权限:

1.这个文件(或目录)的所有者的权限

2.与所有者用户在同一个群组的其他用户的权限

3.既不是所有者也不与所有者在同一群组的其他用户的权限。

文件操作权限:

Linux系统的文件操作权限包括:

r:表示read权限,即可阅读文件或使用ls命令列出目录内容的权限

w:表示write权限,即可编辑文件或在一个目录中的创建和删除文件的权限

x:表示execute权限,即可执行程序或使用cd命令切换到该目录以及使用带有-l选项的ls命令列出该目录中详细内容的权限等

-:表示没有相应的权限(与所在位置的r、w、或x相对应)

用户及文件的控制:

系统上的每个文件都一定属于一个用户(一般该用户就是文件的创建者)并与一个群组相关。通常一个用户可以操作属于他自己的文件(或目录),也可以访问其他同组用户共享的文件,但是一般是不能访问非同组的其他用户的文件,root用户并不受这个限制,该用户可以不受限制地访问Linux系统上的任何资源。

查看文件的权限:

以带有-l选项的ls命令查看文件上的权限,显示结果的第1列的第1个字符表示文件的类型,紧跟其后的9个字符是该文件或目录的权限。

表示权限的每个字符的含义:

第2~4个字符为第2组、定义了文件所有者的权限、使用u代替所有者(owner)对文件的所有权限。第5~7个字符为第3组、定义了文件所有者所在群组中其他成员所具有的权限、使用g代表这一组权限。第8~10个字符为第4组、定义了其他用户对文件所具有的权限使用o代表这一组(other)权限。

在第2、3、4组中,每一组的第1个字符都是r,表示具有读权限,若是-,表示没有读权限。在第2、3、4组中,每一组的第3个字符都是w,表示具有写权限,若是-,表示没有写权限。在第2、3、4组中,每一组的第3个字符都是x、表示具有执行权限,若是-,表示没有执行权限。

Linux依照下图的流程验证一个用户或群组是否有权限存放一个文件或目录:

以符号表示法设定权限:

chmod [-R] mode 文件或目录名 -R表示不但要设置该目录权限而且还要递归地设置该目录中所有文件和子目录的权限。mode为存取模式/状态,一下为权限状态的汇总表:

例:

在dog_wolf文件上添加所有者和同组用户的可执行权限:

chmod ug+x dog_wolf

在babydog目录上为其他用户添加上一个写权限:

chomd o+w babydog

以数字表示法设定权限:

以一组三位数字表示文件上的权限状态,第1个数字代表所有者(owner)的权限(u),第2个数字代表群组(group)的权限(u),第3个数字代表其他用户(other)的权限(o)。每一位数字所表示资源权限状态为:4:表示具有读(read)权限,2:表示具有写(write)权限1:表示具有执行(execute)权限,0:表示没有相应的权限。以上数字相加就得到一个范围在0~7之间的一个数字,而这一组0~7的数字就是表示所有者、同组和其他用户权限状态的数字。

管理和维护用户和群组:

在Linux上每一个用户都有一个内部的ID号码,每一个群组的名称都有一个内部的ID号码,这些ID号码的信息以数字的方式存储在文件中,Linux通过这些ID管理和维护用户和群组。

与用户和群组相关的系统文件:

前面介绍的那些ID和其他的验证信息都以纯文本方式存储在如下文件中:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow。

/etc/shadow文件:

存放用户密码,即所谓使用者的密码数据库,每一行的第1个字符是用户名,第2个字段是该用户的密码,如果第2个字段以$1$开头表示该用户已经设定了密码,紧跟其后的鬼画符为MD5加密后的密码。

系统使用者和系统群组:

存放在/etc/passwd文件,第3个和第4字段为用户ID和群组ID,LInux将1~499之间的号码(包括1和499)保留给内建的系统用户和系统群组使用,这些系统用户和系统群组对某些系统服务和应用程序具有控制的权限。

passwd命令的使用:

使用passwd命令修改密码和查看密码状态,普通用户只能修改自己的密码,Linux要求普通用户的密码必须足够安全,root用户修改的密码可以不安全,root用户可以修改其他用户的密码,root用户可以查看其他用户的密码状态,使用带有-S或--status选项的passwd命令查看。

su命令:

su - dog命令要重新设置环境变量,使用-在用户切换后系统重新启动login shell,即重新装入当前用户的环境变量,su dog命令不重新设置环境变量,su - 和 su - root命令都是切换到root用户,用su从root用户切换到普通用户时不需输入密码。

默认系统提示符的含义:

[dog@dog ~ ]$、[root@dog ~ ]#:$ 符号表示当前用户是一个普通用户,#表示当前用户是root用户,@之前的dog和root为用户名,@之后的dog为主机名(没有包括域名) ~ 表示当前用户的家目录。

获取与用户相关信息的命令:

groups ~ 确定dog用户所属的群组:

[root@dog ~ ] # groups

root bin daemon sys adm disk wheel

id ~ 不但可以获取当前用户所属的群组、还可以获取群组的ID以及用户ID和用户名:

[root@dog ~ ]# id

uid = 0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),10(wheel)

last ~ 列出用户登录系统和重启LInux系统时间的历史记录

Linux系统的默认权限设定:

文件系统的默认权限是666 ------- rw-rw-rw-

目录系统的默认权限是777 ------ rwxrwxrwx

以上并不是最终的文件和目录的权限,要经过掩码挡掉某些不需要的默认权限才能最后产生用户所需的文件和目录的最终权限。普通用户的默认掩码(umask)为002,root用户的默认掩码(umask)为022,使用umask命令来确定当前用户目前的掩码。

文件的最终权限:

文件系统默认权限是666,普通用户默认掩码为002、经过掩码遮挡后other的写权限被遮挡掉,最终文件的权限为664,root默认掩码为022,经过掩码遮挡后group和other的写权限都遮挡掉、最终这个文件的权限是644。文件系统默认权限为666,而这回umask为033,当666与033相减之后所得的结果为633,而该文件的最后权限应该是644。

特殊权限:

特殊权限分为suid、sgid和sticky 3种权限,suid借用用户权限的可执行权限位并以s表示,sgid借用群组权限的最后一位并以s表示,sticky借用其他用户权限中最后一位并以t表示。

添加suid特殊权限例子:

有一文件,其所有用户都有执行权限,而有一目录,其所有用户都没有执行权限。如果要在该文件上加入suid特殊权限,因为文件的所有者本来有执行权限,所以LInux系统就会使用小写的s替换这一位的x。如果在这个文件上加入sgid特殊权限,因为文件的同一群组本来就有执行权限,所以Linux会使用小写的s替换这一位的x。如果在这个目录上加入sgid特殊权限,因为目录的同意群组本身没有执行权限,所以Linux会使用大写的S替换这一位的x。

添加sticky特殊权限的例子:

如果在该文件上加入sticky特殊权限,因为文件的其他用户本来就有执行权限,所以Linux会使用小写的t替换这一位的x。如果在该目录上加入sticky特殊权限,因为目录的其他用户本身没有执行权限,所以Linux会使用大写的T替换这一位的x。

特殊权限对可执行文件的作用:

将suid和sgid特殊权限设定在可执行文件上所具有的特性如下:suid将可执行文件所有者权限来运行这一命令,而不是以执行者的权限来运行该命令。sgid特殊权限与suid类似,是以可执行文件的群组的权限运行这一命令(可执行文件)的。普通用户之所以可以执行ping命令是因为是因为在ping可执行文件上设置了suid特殊权限。

ping命令的工作原理:

ping是使用ICMP网络协议,LInux内核中设定只有root才有权控制ICMP封包。为了使其他用户有权使用ping,必须在ping可执行文件上设置suid权限而其他用户都有执行权限、并且ping的所有者为root用户。

特殊权限对目录的作用:

将sticky和sgid特殊权限设定在目录上所具有的特性如下:如果在一个目录上设置了sticky特殊权限,只有文件的所有者和root用户才可以删除该目录中的文件,而Linux不会理会group或other的写权限。如果在一个目录上设置了sgid特殊权限,只要是同一群组的成员,都可以在这个目录中创建文件。通常会对目录同时设置stickyhesgid这两个特殊权限以方便项目管理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Fast R-CNN

    提出了一种基于区域卷积网络的快速目标检测方法(Fast R-CNN)。Fast R-CNN建立在以前工作的基础上,使用深度卷积网络有效地分类目标建议。与之前的工...

    于小勇
  • 多维张量的几何理解

    Tensor是Tensorflow中最基础的数据结构,常常翻译为张量,可以理解为n维数组或矩阵,相关函数:

    于小勇
  • Tensorflow入门

    tensorflow的第一个词tensor表明了它的数据结构,那么flow则体现了它的计算模型。flow翻译成中文就是“流”,它直观地表达了张量之间通过计算相互...

    于小勇
  • 计算机网络学习--数据链路层

    第一章 概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层

    shimeath
  • 漫话:为什么计算机起始时间是1970年1月1日?

    1970-01-01对于开发者来说都是不陌生的,有些系统对于时间的处理如果不够好的话,就可能把时间显示成1970-01-01,所以经常有用户看到1970-01-...

    帅地
  • 基于xgboost的风力发电机叶片结冰分类预测

    xgboost中文叫做极致梯度提升模型,官方文档链接:https://xgboost.readthedocs.io/en/latest/tutorials/mo...

    潇洒坤
  • 趋势政策齐推云计算发展 云服务商或成最大受益者

    计算机行业自6月下旬以来对大盘的收益显著,但行业主要呈现结构化行情。业绩主线主要是云计算领域的龙头。其中用友网络、启明星辰两家中报业绩暴增,扭亏为盈。机构认为,...

    安徽云际文化传媒
  • dubbo 面试18问

    透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减...

    JAVA葵花宝典
  • Dubbo面试20问!这些题你都遇到过吗?

    https://deanwang1943.github.io/bugs/2018/10/05/面试/饿了么/dubbo 面试题/

    Java技术栈
  • css-transform

    上面我们介绍了使用transform对元素进行旋转、缩放、倾斜、移动的方法,这里讲介绍综合使用这几个方法来对一个元素进行多重变形。

    踏浪

扫码关注云+社区

领取腾讯云代金券