【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记

目录

  • 一、Linux 的安全性
    • 1.1 `/etc/passwd` 文件
    • 1.2 `/etc/shadow` 文件
    • 1.3 添加新用户 —— useradd
    • 1.4 删除用户 —— userdel
    • 1.5 修改用户 —— usermod、passwd、chpasswd
  • 二、使用 Linux 组
    • 2.1 `/etc/group` 文件
    • 2.2 创建新组 —— groupadd
    • 2.3 修改组 —— groupmod
  • 三、理解文件权限
  • 四、更改安全设置
  • 五、共享文件


在这里插入图片描述

一、Linux 的安全性

Linux 安全系统的核心是用户账户
用户权限是通过创建用户时分配的用户 ID( user ID, UID)来跟踪的。 UID 是个数值,每个用户都有一个唯一的 UID。
用户在登录系统时是使用登录名( login name)来代替 UID 登录的。
下面介绍 Linux 系统使用哪些 特定文件和工具 来跟踪及管理系统的用户账户。

1.1 /etc/passwd 文件

Linux 系统使用一个专门的文件 /etc/passwd 来匹配登录名与对应的 UID 值,下面是我的Ubuntu系统的 /etc/passwd 做了部分删减的文件示例,

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
sshd:x:116:65534::/var/run/sshd:/usr/sbin/nologin
statd:x:117:65534::/var/lib/nfs:/bin/false
wkd:x:1000:1000:,,,:/home/wkd:/bin/bash
aaa:x:1001:1001::/var/www/html/aaa:
tftp:x:118:125:tftp daemon,,,:/var/lib/tftpboot:/bin/false
$ 

/etc/passwd 文件各个字段的含义如下:

  • 登录用户名
  • 用户密码
  • 用户账户的 UID(数字形式)
  • 用户账户的组 ID(数字形式)
  • 用户账户的文本描述(称为备注字段)
  • 用户$HOME 目录的位置
  • 用户的默认 shell

文件解析:

  • root 用户账户是 Linux 系统的管理员,为其固定分配的UID 是 0;
  • Linux 系统会为各种各样的功能创建 系统用户,是系统中运行的各种服务进程访问资源使用的特殊账户。例如,上面的daemon用户、bin用户。
  • Linux 会为系统账户预留了UID,Ubuntu系统预留了1000个ID,所以创建普通用户时使用的UID会从1000。例如,上面的wkd用户。
  • /etc/passwd 文件中的密码字段都被设置为 x,并不是说所有的用户账户都使用相同的密码。而是因为绝大多数 Linux 系统将用户密码保存在单独的文件(称为 shadow 文件,位于/etc/shadow)中。只有特定的程序(比如登录程序)才能访问该文件。
  • /etc/passwd 是一个标准的文本文件,可直接使用文本编辑器修改内容,但不建议修改,如果/etc/passwd 文件受损,系统无法读取文件内容,则会导致用户(即便是 root 用户)无法正常登录

1.2 /etc/shadow 文件

/etc/shadow文件对 Linux系统密码管理提供了更多的控制。只有 root 用户才能访问 /etc/shadow 文件,这使其与 /etc/passwd 相比要安全许多。
下面是wkd用户在 ``/etc/shadow` 文件的记录:

wkd:$1$jNrWJ3eQ$4ONPjdkvFngn5j7R09g90/:17704:0:99999:7:::

/etc/shadow 文件中的每条记录共包含 9 个字段。

  • 登录名,对应于/etc/passwd 文件中的登录名。
  • 加密后的密码。
  • 自上次修改密码后已经过去的天数(从 1970 年 1 月 1 日开始计算)。
  • 多少天后才能更改密码。
  • 多少天后必须更改密码。
  • 密码过期前提前多少天提醒用户更改密码。
  • 密码过期后多少天禁用用户账户。
  • 用户账户被禁用的日期(以从 1970 年 1 月 1 日到当时的天数表示)。
  • 预留给以后使用的字段

有了 shadow 密码系统, Linux 系统就可以更好地控制用户密码了,比如控制用户多久更改一次密码,以及如果密码未更新的话,什么时候禁用该账户。

1.3 添加新用户 —— useradd

useradd命令可以一次性轻松创建新用户账户并设置用户的$HOME 目录结构。
-D 选项,查看useradd 命令所使用的默认值:

wkd@ubuntu:~$ useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
wkd@ubuntu:~$ 

上面默认值解析:

  • 新用户会被添加到 GID 为 100 的公共组。
  • 新用户的主目录会位于/home/登录名
  • 新用户账户密码在过期后不会被禁用。
  • 新用户账户不设置过期日期。
  • 新用户账户将 /bin/sh 作为默认 shell。
  • 系统会将/etc/skel 目录的内容复制到用户的$HOME 目录。
  • 系统不会为该用户账户在 mail 目录下创建一个用于接收邮件的文件。

在Ubuntu下,/etc/skel/ 目录下有下面文件,创建新用户时会被复制到新用户的主目录。

wkd@ubuntu:~$ ls /etc/skel/ -la
total 40
drwxr-xr-x   2 root root  4096 Jun 14 18:50 .
drwxr-xr-x 133 root root 12288 Jun 15 02:59 ..
-rw-r--r--   1 root root   220 Apr  9  2014 .bash_logout
-rw-r--r--   1 root root  3637 Apr  9  2014 .bashrc
-rw-r--r--   1 root root  8980 Oct  4  2013 examples.desktop
-rw-r--r--   1 root root   675 Jun 14 18:50 .profile
wkd@ubuntu:~$ 

useradd 命令行选项:

选 项描 述
-c comment给新用户添加备注
-d home_dir为主目录指定一个名字(如果不想用登录名作为主目录名的话)
-e expire_date用 YYYY-MM-DD 格式指定账户过期日期
-f inactive_days指定账户密码过期多少天后禁用该账户; 0 表示密码一过期就立即禁用, -1 表示不使用这个功能
-g initial_group指定用户登录组的 GID 或组名
-G group …指定除登录组之外用户所属的一个或多个附加组
-k必须和-m 一起使用,将/etc/skel 目录的内容复制到用户的$HOME 目录
-m创建用户的$HOME 目录
-M不创建用户的$HOME 目录,即便默认设置里要求创建
-n创建一个与用户登录名同名的新组
-r创建系统账户
-p passwd为用户账户指定默认密码
-s shell指定默认的登录 shell
-u uid为账户指定一个唯一的 UID

useradd 修改系统默认新用户设置值

选 项描 述
-b default_home修改用户$HOME 目录默认创建的位置
-e expiration_date修改新账户的默认过期日期
-f inactive修改从密码过期到账户被禁用的默认天数
-g group修改默认的组名称或 GID
-s shell修改默认的登录 shell

例如:useradd -D -s /bin/tsch

1.4 删除用户 —— userdel

在默认情况下, userdel 命令只删除 /etc/passwd 和 /etc/shadow 文件中的用户信息,属于该账户的文件会被保留。
加入 -r 选项,则 userdel 会删除用户的 $HOME 目录以及邮件目录。

1.5 修改用户 —— usermod、passwd、chpasswd

usermod 修改用户账户字段,还可以指定主要组( primary group)以及辅助组( secondary group)的所属关系。
提供了修改 /etc/passwd 文件中大部分字段的相关选项,只需指定相应的选项即可。

  • -c用于修改备注字段,
  • -e 用于修改过期日期,
  • -g 用于修改默认的登录组
  • -l:修改用户账户的登录名
  • -L:锁定账户,禁止用户登录。
  • -p:修改账户密码。
  • -U:解除锁定,恢复用户登录。

-L 选项尤为实用。该选项可以锁定账户,使用户无法登录,无须删除账户和用户数据。要恢复账户,只需使用-U 选项即可。

passwd 命令可以方便地修改用户密码:passwd 用户名
-e 选项可以强制用户下次登录时修改密码;

chpasswd 命令能从标准输入自动读取一系列以冒号分隔的登录名和密码对偶;

chsh 命令可以快速修改默认的用户登录 shell。使用时必须用 shell 的 全路径名 作为参数:chsh -s /bin/csh test

chage 命令可用于帮助管理用户账户的有效期:

选 项描 述
-d设置自上次修改密码后的天数
-E设置密码过期日期
-I设置密码过期多少天后锁定账户
-m设置更改密码的最小间隔天数
-M设置密码的最大有效天数
-W设置密码过期前多久开始出现提醒信息

在这里插入图片描述

二、使用 Linux 组

为了解决共享资源的一组用户的安全性问题,Linux 系统采用了另一个安全概念——组。
组权限允许多个用户对系统对象(比如文件、目录或设备等)共享一组权限。
每个组都有唯一的 GID,和 UID 类似,该值在系统中是唯一的。除了 GID,每个组还有一个唯一的组名。
这节将介绍 Linux 系统中用于创建和管理组的 组工具

2.1 /etc/group 文件

/etc/group 文件包含系统中每个组的信息,下面是/etc/group的内容,有删减。

wkd@ubuntu:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,lu
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
users:x:100:
nogroup:x:65534:
sambashare:x:124:lu
wkd:x:1000:
aaa:x:1001:
tftp:x:125:
wkd@ubuntu:~$ 

/etc/group 文件有 4 个字段。

  • 组名
  • 组密码
  • GID
  • 属于该组的用户列表

组密码允许非组内成员使用密码临时性地成为该组成员。

2.2 创建新组 —— groupadd

groupadd 命令可用于创建新组:groupadd 组名

groupadd shared

在创建新组时,默认不为其分配任何用户,groupadd 命令没有提供向组中添加用户的选项,但可以用 usermod 命令来解决,下面语句将用户rich添加到shared组:

usermod -G shared rich

2.3 修改组 —— groupmod

groupmod 命令可以修改已有组的 GID(使用-g 选项)或组名(使用-n 选项):groupmod -n sharing shared语句将 shared 组改名为 sharing。

在这里插入图片描述

三、理解文件权限

在这里插入图片描述

四、更改安全设置

在这里插入图片描述

五、共享文件

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35991.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Swagger-Bootstrap-UI

Swagger-Bootstrap-UI 是一个为 Swagger 提供美观、易用的界面展示和增强功能的开源项目。它通过自定义样式和交互,提供了更好的文档展示和交互体验,包括美化的界面、接口测试工具、在线调试、文档导出等功能。 更高阶的有Knife4j,Knife4j是一个集Swagg…

免费 Selenium各大浏览器驱动【谷歌chrme、火狐Firefox、IE浏览器】

aardio群 625494397 废话不多说 直接开整! 竟然还有脸收费 服了 下载对应版本的浏览器驱动 目标网址 应用场景 Selenium库涉及到 安装selenium库 pip install selenium-i https://mirrors.aliyun.com/pypi/simple/下载对应浏览器驱动 https://registry.npmmirror.c…

水电站运行数据3D可视化展示方便管理运维

水电站是现代能源体系中的重要组成部分,对于保障国家能源安全和经济发展具有重要的意义。然而,由于水电站的建设和管理涉及到大量的技术和专业知识,许多人对水电站的运行和维护存在许多疑惑和困惑。为了解决这些问题,我们引入了全…

TCP 重传机制 滑动窗口 流量控制 拥塞控制 学习总结!

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 这篇博客主要记录 tcp 的基础知识的学习总结相关内容!备注:图片均来自作者:小林哥 tcp 的三大特性 tcp 大家都不陌生&#xff0c…

Work20230705

//main.c #include "uart4.h" extern void printf(const char *fmt, ...); void delay_ms(int ms) {int i,j;for(i 0; i < ms;i)for (j 0; j < 1800; j); }int main() {while(1){//将获取到的字符1发送到终端//hal_put_char(hal_get_char()1);hal_put_string…

chatGPT之100个例子-从体验到精通

简介 本博文演示了100个chatGPT在各行各业的使用例子,全部看完有助于培养chatGPT解决问题的思维。 在人工智能时代,智能软件并不会淘汰人类,淘汰人类的是会使用人工智能的人! 我们直接使用openAI官方chatGPT,生动演示了chatGPT的一些妙用! 请仔细看完,一定会有收获! 每…

[期末网页作业]-精仿华为官网10个网页(html+css+js)

经过漫长的期末考试季节&#xff0c;我成功地完成了一个华为官网的仿写项目&#xff0c;并且非常高兴地与大家分享。这个项目包含了10个页面&#xff0c;每一个页面都经过了精心的设计和努力的填充。 首先&#xff0c;我注重了页面的整体布局与设计。借鉴了华为官网的风格&…

apache php mysql python 环境部署与离线安装deb包

文章目录 1.背景介绍2. 主要涉及操作2.1 安装系统&#xff1a;2.2 apache mysql php安装2.3 配置2.4 python相关库安装 3. 操作记录3.1 软件安装3.2 读取文件内容后进行文件内容抽取3.3 执行以上的sh脚本3.4 所学3.5 打包发送 4. 参考文献 1.背景介绍 使用的系统为ubuntu18.04…

vscode安装+配置+使用+调试【保姆级教程】

1. VScode是什么 Visual Studio Code简称VS Code&#xff0c;是一款跨平台的、免费且开源的现代轻量级代码编辑器&#xff0c;支持几乎主流开发语言的语法高亮、智能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比等特性&#xff0c;也拥有对git的开箱即…

架构师进阶之路 - 微服务怎么划分

目录 微服务划分目标 业务、技术、团队导向规划服务 领域检查 依赖DAG检查 分布式事务检查 性能分布检查 稳定&#xff08;易变&#xff09;性检查 调用链检查 微服务划分目标 我们常说服务的合理划分是微服务成功的重中之重&#xff0c;一个合理的服务划分应该符合一下…

Linux性能优化实践——CPU上下文

CPU上下文切换 Linux是一个多任务操作系统&#xff0c;它支持远大于CPU数量的任务同时运行。这些任务不是真正意义上的并行运行&#xff0c;而是系统在短时间内&#xff0c;将CPU轮流分配给它们&#xff0c;造成任务同时运行的错觉。 CPU需要知道任务从哪里加载&#xff0c;从…

Linux调优–I/O 调度器

Linux 的 I/O 调度器是一个以块式 I/O 访问存储卷的进程&#xff0c;有时也叫磁盘调度器。Linux I/O 调度器的工作机制是控制块设备的请求队列&#xff1a;确定队列中哪些 I/O 的优先级更高以及何时下发 I/O 到块设备&#xff0c;以此来减少磁盘寻道时间&#xff0c;从而提高系…

QC51XX---I2c使用

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 今天我们聊聊I2C的使用。在开发过程中多多少少会加入一些外围传感器可以给用户带来更好的使用体验。例如,利用接近传感器识别戴上耳机和取下耳机,从而去自动暂停播放音乐,或接听转移通话。又例如,用触摸或敲击替代…

软件安全技术复习内容

软件安全技术 边复习边写的&#xff0c;有错误及时指正第一章 软件安全概述零日漏洞安全威胁分类CIA安全基本属性PDRR模型软件安全的主要方法和技术基本方法主要技术 第二章 软件漏洞概述概念软件漏洞成因分析软件漏洞分类基于漏洞成因的分类基于漏洞利用位置的分类基于威胁类型…

基于Stable Diffusion的2D游戏关卡生成【实战】

接下来的几篇文章将与常规主题有所不同&#xff08;这是在从事通用机器人技术的职业中吸取的教训&#xff09;。 相反&#xff0c;我决定利用我的一些新空闲时间 1 边做边学&#xff0c;并使用所有酷孩子都在谈论的一些很酷的新 ML。 推荐&#xff1a;用 NSDT设计器 快速搭建可…

第五章 运输层【计算机网络】

第五章 运输层【计算机网络】 前言推荐第五章 运输层5.1运输层协议概述5.1.1 进程之间的通信5.1.2运输层的两个主要协议5.1.3运输层的端口 5.2用户数据报协议UDP5.2.1UDP概述5.2.2UDP的首部格式 5.3传输控制协议TCP概述5.3.1TCP最主要的特点5.3.2TCP的连接 5.4可靠传输的工作原…

Node中express路由基本使用

1.路由的基本使用 //引入express const expressrequire("express") //创建路由 const appexpress() //规定路由的请求方法 app.get(/,(req,res)>{res.end("hello express") }) //启动路由&#xff0c;并且端口为9000 app.listen(9000,()>{console.l…

通俗易懂讲解CPU、GPU、FPGA的特点

1. CPU vs GPU 大家可以简单的将CPU理解为学识渊博的教授&#xff0c;什么都精通&#xff1b;而GPU则是一堆小学生&#xff0c;只会简单的算数运算。可即使教授再神通广大&#xff0c;也不能一秒钟内计算出500次加减法。因此&#xff0c;对简单重复的计算来说&#xff0c;单单一…

注册HTTPS证书

注册HTTPS证书 1. 从ACME获取脚本文件2. 运行shell脚本3. 安装socat4. 把acme.sh这个脚本添加到环境变量软连接直接添加到.bashrc 5. 注册ACME账户6. 注册证书6.1. 首先把80端口打开6.2. 申请证书 7. 部署到Flask上 1. 从ACME获取脚本文件 wget https://get.acme.shmv index.ht…

多元分类预测 | Matlab 鲸鱼算法(WOA)优化xgboost的分类预测模型,多特征输入模型,WOA-xgboost分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab 鲸鱼算法(WOA)优化xgboost的分类预测模型,多特征输入模型,WOA-xgboost分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可…