Linux用户和权限管理

Linux用户和权限管理

  • root用户组:GID=0
  • 伪用户组:GID=1-999(CentOS 7)
  • 普通用户组:GID=1000-65535

查看全部用户组

1
cat /etc/group  

查看用户的所属组

1
groups

添加用户组

1
groupadd security

删除用户组

1
groupdel security
  • root用户组:UID=0
  • 程序用户组(系统用户组):UID=1-999(CentOS 7)
  • 普通用户组:UID=1000-65535

查看全部用户

1
cat /etc/passwd

添加用户

1
useradd ...

修改用户密码

1
passwd ...

删除用户

1
userdel ...

修改用户信息

1
usermod ...

用于存储用户组(Group)的信息

内容格式:组名:组密码:GID:用户列表

  1. 组名(Group Name):表示组的名称,用于标识组的身份。
  2. 组密码(Group Password):在早期的UNIX系统中,组密码是以明文形式存储在这个字段中,但在现代的Linux系统中,通常是以占位符或加密的形式表示。实际的组密码信息现在通常存储在/etc/gshadow文件中。
  3. 组ID(Group ID,GID):是一个唯一的数字标识符,用于识别组。每个组在系统中都有一个独特的GID。
  4. 用户列表(User List):包含属于该组的用户的用户名列表。这些用户名之间使用逗号(,)进行分隔。

https://pic.imgdb.cn/item/64a8aa8c1ddac507ccdb0eb2.jpg

查看影子组文件

1
cat /etc/gshadow

格式:组名:密码:组管理员:组附加用户列表

在Linux系统中,与影子文件类似,还存在一个影子组文件(shadow group file)的概念,它通常是/etc/gshadow文件。影子组文件用于存储组信息的加密版本,提供对组信息的额外安全性。

与影子文件类似,影子组文件的目的是将敏感的组信息从普通用户可读取的/etc/group文件中分离出来,以增加系统的安全性。

影子组文件包含了组的加密密码,这些密码通常被用于对特定组执行特殊操作的权限验证。与影子文件一样,影子组文件也只能由系统管理员(root用户)访问,并具有更高的安全级别。普通用户无法直接读取或修改影子组文件。

通过使用影子组文件,系统管理员可以确保只有经过授权的用户或进程能够对组信息进行更改或访问,从而增加系统的安全性和灵活性。

用于存储用户账户的基本信息

内容格式:用户名:密码:UID:GID:全名:home路径:shell工具

  1. 用户名(Username):表示用户的登录名。
  2. 密码(Password):在早期的UNIX系统中,密码是以明文形式存储在这个字段中,但在现代的Linux系统中,通常是以占位符或加密的形式表示。实际的密码信息现在通常存储在/etc/shadow文件中。
  3. 用户ID(User ID,UID):是一个唯一的数字标识符,用于识别用户。每个用户在系统中都有一个独特的UID。
  4. 组ID(Group ID,GID):表示用户所属的主要组的ID。这个ID对应于/etc/group文件中的一个组。
  5. 全名(Full name):是用户的真实姓名或描述性的标识,可以包含任意文本信息。
  6. 家目录(Home directory):表示用户的主目录或工作目录的路径。当用户登录时,会自动切换到这个目录。
  7. Shell工具(Shell):指定用户登录后默认使用的命令行解释器或shell。它定义了用户在终端中输入命令时使用的交互式环境。

https://pic.imgdb.cn/item/64a8ac6f1ddac507ccdd2cac.jpg

查看影子文件

1
cat /etc/shadow

格式:用户名:加密密码:上次修改密码的日期:最小修改间隔时间:密密码有效期:密码需要变更前的警告天数:密码过期后的宽限天数:账号失效时间:保留字段

  1. 用户名(Username):表示用户的登录名。
  2. 加密密码(Password):存储用户的加密密码,通常以哈希值的形式呈现,而不是明文密码。
  3. 上次修改密码的日期(Last password change):表示上次用户更改密码的日期,通常以从特定日期(例如1970年1月1日)到更改日期的天数计算。
  4. 最小修改间隔时间(Minimum password change interval):要求用户在此字段指定的天数之后才能更改密码。
  5. 密码有效期(Password expiration):表示密码在何时过期,以从特定日期(例如1970年1月1日)到过期日期的天数计算。过期的密码需要用户在下次登录时强制更改。
  6. 密码需要变更前的警告天数(Password expiration warning):在密码过期之前的天数,系统会向用户发出提醒密码即将过期的警告。
  7. 密码过期后的宽限天数(Password expiration grace period):密码过期后的宽限期,在此期间内用户仍然可以使用过期的密码登录系统。
  8. 账号失效时间(Account expiration):表示账户在何时过期,以从特定日期(例如1970年1月1日)到过期日期的天数计算。过期的账户将被禁用。
  9. 保留字段(Reserved field):该字段目前没有使用,保留供将来使用。

在Linux系统中,影子文件(shadow file)是用于存储用户的加密密码的文件。它通常是/etc/shadow文件。影子文件的目的是提高系统的安全性,通过将密码信息从普通的用户可读取的/etc/passwd文件中分离出来。

在早期的UNIX系统中,密码是以明文形式存储在/etc/passwd文件中,这使得用户的密码信息容易受到攻击和滥用。为了解决这个安全问题,影子文件的概念被引入。

影子文件只能由系统管理员(root用户)访问,并且具有更高的安全级别。它包含了加密后的用户密码、密码过期信息、密码策略等。普通用户无法直接读取或修改影子文件。

当用户尝试登录系统时,系统会将用户提供的密码与影子文件中存储的加密密码进行比较验证。如果密码匹配成功,用户将被授权访问系统。

通过使用影子文件,系统管理员可以更好地保护用户的密码信息,减少潜在的安全风险。

生成使用MD5算法加密的密码

1
openssl passwd -1 -salt admin 123456
  • openssl passwd是一个命令行工具,用于生成密码哈希值。
  • -1选项表示使用MD5算法进行哈希。
  • -salt admin选项指定盐值为admin,盐值是用于增加哈希强度和防止彩虹表攻击的随机字符串。
  • 123456是要进行哈希的原始密码。

**/etc/shadow里的密码格式:$id$salt$encrypted **

eg. $1$admin$LClYcRe.ee8dQwgrFc5nz.

数字 加密方式
1 MD5
2a Blowfish (某些Linux发行版)
5 SHA-256
6 SHA-512

用于定义哪些用户和用户组具有使用sudo命令执行特权操作的权限

内容格式:user/host=(runas) command

  • user:指定允许执行特权操作的用户或用户组。
  • host:指定允许执行特权操作的主机或主机组。
  • runas:指定以哪个用户或用户组的身份执行特权操作。
  • command:指定允许执行的特权命令或命令组。

eg.kali ALL=(ALL) NOPASSWD: /bin/useradd

sudo命令允许普通用户以超级用户或其他特权用户的身份执行命令

1
sudo command(要执行的命令)

修改配置文件命令:

1
visudo

查询用户账号身份标识

1
id

查询用户账号的登录属性

1
finger

查询当前主机的用户登录情况

1
w
1
who

查询系统当前在线的用户

1
users

查看用户

1
whoami

切换用户

1
su

修改文件的所属用户 chown [用户] [文件]

修改文件的所属组 chgrp [组] [文件]

https://pic.imgdb.cn/item/64a8e5e81ddac507cc4d61a6.jpg

https://pic.imgdb.cn/item/64a8e5911ddac507cc4c9a24.jpg

chmod命令用于修改文件或目录的权限

全拼:change mode

1
chmod [options] mode file(s)
  • options:表示可选的选项,可以用于更改chmod命令的行为。常见选项包括-R(递归修改所有子目录和文件)和-v(显示详细操作信息)等。
  • mode:表示要设置的新权限模式。可以使用数字形式(如777、644)或符号形式(如u+rwx、g-w)来指定权限。后续会详细解释权限模式的表示方法。
  • file(s):表示要修改权限的文件或目录列表。

示例:

  • 添加组用户的写权限。

    1
    
    chmod g+w test.log
    
  • 删除其他用户的所有权限。

    1
    
    chmod o= test.log
    
  • 使得所有用户都没有写权限。

    1
    
    chmod a-w test.log
    
  • 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。

    1
    
    chmod u=rwx, g=rw, o=r test.log
    

    等价的八进制数表示:

    1
    
    chmod 764 test.log
    
  • 将目录以及目录下的文件都设置为所有用户拥有读写权限。 注意,使用’-R’选项一定要保留当前用户的执行和读取权限,否则会报错!

    1
    
    chmod -R a=rw testdir/
    
  • 根据其他文件的权限设置文件权限。

    1
    
    chmod --reference=1.log test.log
    

属性–>特征

权限–>有权利做什么

lsattr //查看文件属性

chattr [选项] [文件]

选项

  • a:让文件或目录仅供附加用途。(适用于各种日志文件)

  • b:不更新文件或目录的最后存取时间。

  • c:将文件或目录压缩后存放。

  • d:将文件或目录排除在倾倒操作之外。

  • i:不得任意更动文件或目录。(防止系统中某个关键文 件被篡改)

  • s:保密性删除文件或目录。

  • S:即时更新文件或目录。

  • u:预防意外删除。

chattr +a 1.txt

chattr -a 1.txt

find [目录] [选项]

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-name:严格查找 -iname:模糊查找