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

这篇具有很好参考价值的文章主要介绍了【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

一、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 | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记,linux系统,linux,安全,笔记,bash

二、使用 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。

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

三、理解文件权限

3.1 文件权限解释

使用ls -l命令时,第一列的符号就表示了文件权限,它由四部分组成:文件类型、属主权限、属组权限、其他用户权限;

wkd@ubuntu:~$ ls test.sh -l
-rwxrw-r-- 1 wkd wkd 73 Jul  9 22:30 test.sh
wkd@ubuntu:~$ 

例如上面这个文件的权限-rwxrw-r--
①表示它是一个普通文件;
②它属于的用户拥有可读、可写、可执行的权限;
③它所属于的组的用户拥有可读、可写权限、不可执行;
④其他用户可读、不可写、不可执行。

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

其他文件类型:

  • -代表文件
  • d 代表目录
  • l 代表链接
  • c 代表字符设备
  • b 代表块设备
  • p 代表具名管道
  • s 代表网络套接字

3.2 默认文件权限

从上小节可知,文件权限由文件类型 和 三组权限值(rwx)组成,每组权限值可以看出是 3 bit 的二进制值,r--最高位为1(100)表示可读、-w-次高位为1(010)表示可写、--x最低位为1(001)表示可执行。每组总共有8种情况,如下表:

权 限 二进制值 八进制值 描 述
--- 000 0 没有任何权限
--x 001 1 只有执行权限
-w- 010 2 只有写入权限
-wx 011 3 有写入和执行权限
r-- 100 4 只有读取权限
r-x 101 5 有读取和执行权限
rw- 110 6 有读取和写入权限
rwx 111 7 有全部权限(读取、写入和执行)

以上小节的权限-rwxrw-r--为例,
①第一组权限rwx的二进制就是111,转成八进制就是7
②第二组权限rw-的二进制就是110,转成八进制就是6
③第三组权限rw-的二进制就是100,转成八进制就是4
所以其文件权限是764;

清楚了权限怎样转换成二进制值和八进制值之后,再来看看Linux系统怎样设置文件默认权限。答案是通过umask命令,直接执行umask,就可以看到当前的掩码:

wkd@ubuntu:~$ umask
0022
wkd@ubuntu:~$ 

默认的文件权限就是:全权权限 减去 umask值。
对文件而言,全权权限是 666(所有用户都有读取和写入的权限);
对目录而言,全权限值是 777(所有用户都有读取、写入和执行权限)。

wkd@ubuntu:~$ touch test_mask
wkd@ubuntu:~$ mkdir dir_mask
wkd@ubuntu:~$ ls -l 
drwxr-xr-x 2 wkd wkd 4096 Jul 11 20:06 dir_mask
-rw-r--r-- 1 wkd wkd    0 Jul 11 20:01 test_mask

由以上输出,dir_mask 目录权限为 777-022=755,转成二进制就是111 101 101,对应权限为rwx r-x r-x
test_mask 文件权限为 666-022=644,转成二进制就是110 100 100,对应权限为rw- r-- r--

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

四、更改安全设置

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

五、共享文件

【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记,linux系统,linux,安全,笔记,bash
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁文章来源地址https://www.toymoban.com/news/detail-540080.html

到了这里,关于【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux操作系统】【综合实验三 用户帐号、文件系统与系统安全管理】

    要求掌握Linux系统用户的创建、删除与管理操作;熟悉Linux文件系统的管理模式,学会创建用户文件系统并装载和卸载文件系统;掌握超级用户的管理方式与权限,并实施对普通用户的管理;熟悉Linux系统安全机制与相关管理方法。 通过这个第三阶段实验,要求掌握以下操作与

    2023年04月14日
    浏览(35)
  • 【Linux】 Linux用户权限、文件权限、权限操作相关介绍

    Linux下有两种用户:超级用户(root)、普通用户 其中, root用户的权限 在Linux中可以看作是 不受任何管控 的,就像 Windows中的管理员 : 而除了 root 之外的其他的所有用户都只是 普通用户 ,普通用户的权限是 受到管控 的 root 和 所有普通用户 都是需要设置密码的 ,且root和其他

    2024年02月05日
    浏览(38)
  • 【Linux操作系统】【综合实验三 用户帐号、文件系统与系统安全管理】【未整理】

    要求掌握Linux系统用户的创建、删除与管理操作;熟悉Linux文件系统的管理模式,学会创建用户文件系统并装载和卸载文件系统;掌握超级用户的管理方式与权限,并实施对普通用户的管理;熟悉Linux系统安全机制与相关管理方法。 通过这个第三阶段实验,要求掌握以下操作与

    2024年02月06日
    浏览(43)
  • linux用户权限相关命令笔记

     1.1 ls 扩展  ls -l   1.2 chmod 简单使用(重要)  + 是加权限, - 是减权限 chmod 修改文件权限   chmod 修改目录权限: 想要在目录下执行终端命令,就必须要有可执行权限。 1.3 超级用户     groupadd 组名 :添加组     chgrp -R 组名  文件/目录名:修改文件/目录的所属组  本来

    2024年02月06日
    浏览(41)
  • linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S 软链接和硬链接 shell

    r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。 x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该

    2024年02月16日
    浏览(54)
  • Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)

    Linux严格意义上说的是一个操作系统,我们称之为\\\"核心(kernel)\\\", 但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。 操作系统本身是需要易用程度和安全性的 而对于我们使用电脑的普通用户来说,我们是不能直接访问

    2024年02月08日
    浏览(49)
  • Linux 用户管理与文件权限

    Linux 是一个多用户系统,它允许多个用户同时登陆主机,并为他们分配不同的资源和工作环境进行使用。当然,不同的用户都有文件的私有需求,所以设置不同用户文件的权限管理十分重要。 Linux 中一般将文件访问权限的身份分为三种角色: 文件所有者、用户组成员、其他

    2024年02月03日
    浏览(35)
  • 【Linux】用户和文件权限管理

    💗个人主页💗 ⭐个人专栏——Linux学习⭐ 💫点击关注🤩一起学习C语言💯💫 Linux一切皆文件,文件都是有对应的权限的,而今天我们就来了解一下Linux中的权限。 在Linux系统中,有三种不同类型的用户:root用户、系统用户和普通用户。 区分这三种用户类型的目的是为了安

    2024年01月22日
    浏览(38)
  • Linux 下 普通用户创建文件(目录)权限不足问题

     原因:                 执行此操作的用户对上级目录 缺乏相应权限 上图中的上级目录为 test2 ,查看权限如下,其他用户的权限为  r-x(读和执行)   ,要在其下创建新文件还需要 写(w) 的权限  解决问题:修改test权限为 drwxr-x rwx        命令: chmod 757 test2 需要注

    2024年02月11日
    浏览(53)
  • 权限提升-Linux系统权限提升篇&Vulnhub&Rbash绕过&Docker&LXD容器&History泄漏&shell交互

    1、普通用户到Linux-泄漏-History 2、普通用户到Linux-限制-Rbash绕过 3、普通用户到Linux-容器-LXDDocker 4.Linux系统提权-web/普通用户-docker逃逸提权shell交互 章节点: 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 Linux: 应用场景 获取到

    2024年04月08日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包