09-1 权限
本章将介绍系统安全的基础知识以及如下命令的使用。
- id: 显示用户身份标识。
- chmod: 更改文件的模式。
- umask: 设置文件的默认权限。
- su: 以另一个用户身份运行 shell 。
- sudo: 以另一个用户身份执行命令 。
- chown: 更改文件所有者。
- chgrp: 更改文件所属群组。
- passwd: 更改用户密码。
一、所有者、组成员和其它所有用户
给一个文件区分所有者、所属组和其他人,就是为了分配权限方便。
在之前学习 ls 命令以长格式显示结果时提到过,命令的第 3 列 pyvip 用户就是文件的所有者,第 4 列 pyvip 组就是文件的所属组。
1.用户
在 UNIX 安全模型中,一个用户可以拥有(own)文件和目录。 当一个用户拥有一个文件或目录时,它将对该文件或目录的访问权限拥有控制权。
2.所有者
文件的所有者就是这个文件的建立者。 此外,系统中绝大多数系统文件都是由 root 建立的,所以大多数系统文件的所有者都是 root。
3.群组(用户组)
用户又归属于一个群组(group),该群组由一个或多个用户组成(也就是就是一组用户的集合),组中用户对文件和目录的访问权限由其所有者授予。 除了可以授予群组访问权限之外,文件所有者也可以授予所有用户一些访问权限(所有用户是指整个世界)。 许多类 UNIX 系统会把普通用户分配到一个公共的群组中(比如:users),然而现在的 Linux 操作都是创建一个独一无二的,只有一个用户的群组,而且组名和用户的名字相同,这使得特定类型的权限分配变得更加容易。
(1)为什么?
为什么要把用户放入一个群组中呢? 当然是为了方便管理。想想看,如果我有 50 位用户,而这 50 位用户对同一个文件的权限是一致的,那我是一位用户一位用户地分配权限方便,还是把 50 位用户加入到一个群组中,然后给这个用户组分配权限方便呢? 可想而知,一定是给一个用户组分配权限更加方便。
4.概念举例
比如:我买了一台电脑,那我当然是这台电脑的所有者,可以把我的读者加入一个用户组,其他不认识的路人当然就是其他人了。分配完了用户身份,就可以分配权限了,所有者当然对这台电脑拥有所有的权限,而位于所属组中的这些学生可以借用我的电脑,而其他人则完全不能碰我的电脑。
5.id-显示用户身份标识
(0)简介
id 命令 可以显示真实有效的用户ID(uid)和组ID(gid)。uid 是对一个用户的单一身份标识。组ID(gid)则对应多个uid。 id命令已经默认预装在大多数 Linux 系统中。要使用它,只需要在你的控制台输入id。不带选项输入id ,结果会输出使用活跃用户。
① 应用
当我们想知道某个用户的 uid 和 gid 时 id命令 是非常有用的。一些程序可能需要 uid 和 gid 来运行。id 命令使我们更加容易地找出用户的 uid 和 gid 而不必在
/etc/passwd
和/etc/group
文件中搜寻。 此外,你也可以在控制台输入man id
进入id的手册页来获取更多的详情。
(1)用户身份标识
① 用户ID和有效组ID
在创建用户账户的时候,用户将被分配一个称为 用户ID 或者 uid 的号码(用户ID与用户名一一映射)。 同时用户也将被分配一个 有效组ID 或者 gid,而且该用户也可以归属于其它的群组。
1)不同系统结果不同
注意: 在 Fedora 系统中,普通用户账号是从 500 开始编号的。 而在 Ubuntu 系统中,是从 1000 开始编号的。 同时,Ubuntu 系统中的用户归属于更多的群组,这和 Ubuntu 系统管理系统设备和服务权限的方式有关。
2)主组和附加组的区别
在创建用户的时侯可以用 -g 和 -G 选项来指定用户所属组 和 附属组。 基本组:如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是基本组,不可以把用户从基本组中删除。在创建文件时,文件的所属组就是用户的基本组。 附加组:除了基本组之外,用户所在的其他组,都是附加组。用户是可以从附加组中被删除的。 用户不论处于基本组中还是附加组中,就会拥有该组的权限。一个用户可以属于多个附加组。但是一个用户只能有一个基本组。
② 信息来源
类似于 Linux 系统中的很多情况,这些信息来源于一系列的文本文件。 用户账户定义在文件 /etc/passwd 中,用户组定义在 /etc/group 文件中。 在创建用户账户和群组时,这些文件随着文件 /etc/shadow 的变动而修改,文件 /etc/shadow 中保存了用户的密码信息。 对于每一个用户账户,文件 /etc/passwd 中都定义了对应用户的用户(登录)名、uid、gid、账户的真实姓名、主目录以及登录 shell 信息。如果查看文件(/etc/passwd )和文件( /etc/group )的内容,那你将会发现除了普通用户帐户信息之外,文件中还有对应于超级用户(uid = 0)和其它不同种类的系统用户的账户信息。
(2)语法格式
id [选项]... [用户名]
'''
功能: 显示用户身份标识(比如:用户ID(uid)、有效组ID(gid))。
参数:
① 用户名: 指定用户后,将会显示 指定用户 的身份标识。
(也可以不指定用户名,只写一个命令,这样就会显示当前用户的身份标识)
②
选项:
① -a :忽略同其它版本兼容。
② -g , --group :只显示 组ID。
③ -G , --groups :只显示 附加组。
④ -n, --name :显示 名字 而不是 数值。
⑤ -r, --real :显示 真实ID 而不是 有效ID。
⑥ -u, --user :只显示 用户ID。
⑦ --help :显示 帮助 并且退出。
⑧ --version :显示 版本信息 并且退出。
如果不附带任何选项,程序会显示一些可供识别用户身份的有用信息。
返回值: 用户身份标识.
'''
示例
① 显示当前用户的所有信息
id
② 显示指定用户的所有信息
id root
③ 打印用户名、用户ID、所属的所有组
id -u
④ 显示用户ID
id -u 或 id --user
⑤ 显示用户所属群组的ID
id -g
⑥ 显示所属组的名字
id -ng
⑦ 显示用户所属附加组的ID
id -G
⑧ 显示用户所属附加组名字
id -nG
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- React中的setState是异步的吗?
- java安全编码指南之:堆污染Heap pollution
- ECMAScript6基础学习教程(五)对象
- React入门系列(三)创建组件
- prometheus学习笔记(2)-利用java client写入数据
- Vue入门系列(一)Vue技术栈
- Openwrt智能路由系统开发--内容总结
- 干爆红队-爆破CS Teamserver 密码
- 使用Golang免杀Tips
- centos7卸载自带jdk并安装新的jdk
- 即使不懂单元测试,会用这个工具也够了~
- 统计分布讲解
- 使用PyTorch Lightning自动训练你的深度神经网络
- linux防火墙相关配置命令及操作(centos和ubuntu)
- 带你吃透Spring事务7种传播行为 | Spring第45篇