账号和权限管理


前言

当我们在使用linux前,需要我们先进行登录操作(和windows一样),本文将以这个话题展开,详细说说用户账号和文件权限管理

1、用户和用户组的概述

1.1 用户的分类

Linux 中的用户分为三种角色:超级用户、普通用户和程序用户,每个角色有不同的权限和用途。理解这些角色及其对应的权限设置是系统管理的基础

1.1.1 超级用户(Root)

  • Root用户是 Linux 系统中的管理员账户,拥有系统的所有权限。类似于 Windows 系统中的 administrator 用户。root 用户对系统的任何部分都拥有完全的控制权,可以执行任何操作,包括安装软件、修改系统配置和管理用户账户等
  • Root用户的 UID 和 GID 都是 0
  • 使用建议:为了安全,建议仅在进行系统管理任务时使用 root 用户,日常操作应使用普通用户账号,以降低系统被攻击的风险

1.1.2 普通用户

  • 普通用户账号需要由 root 或其他管理员用户创建,权限较为有限,通常只能在自己的宿主目录中有完全控制权限
  • UID 范围:CentOS 7 中普通用户的 UID 从 1000 开始,直到系统允许的最大值。每个用户的 UID 类似于个人身份证号码,是唯一标识用户的方式

1.1.3 程序用户

  • 程序用户是安装 Linux 操作系统和应用程序时创建的低权限用户,通常用于运行系统服务或特定程序。这些用户不能登录系统,它们的主要任务是维持某个服务的正常运行。如 bin、daemon、ftp、mail 等
  • UID 范围:通常是 1-499(CentOS6),1-999(CentOS7)这些 UID 被系统保留给程序用户使用
  • 伪用户:它们通常不用于登录系统,而是为系统进程提供服务。例如:ftp 用户用于管理 FTP 服务,apache 用于 Web 服务

1.2 组账号的分类

Linux 系统通过将用户分配到不同的组来实现权限的管理。每个用户至少属于一个组,这个组是用户的基本组(或私有组)。用户还可以属于多个附加组,用于共享文件和服务

1.2.1 基本组

  • 基本组是用户默认所属的组,通常与用户名相同。每个用户在创建时会自动拥有一个与用户名相同的基本组
  • 在创建用户时,系统会为用户自动创建与其同名的基本组

1.2.2 附加组

  • 附加组是用户除了基本组之外,可以加入的其他组。一个用户可以加入多个附加组,用于访问该组所授权的资源
  • 这些附加组的权限影响所有加入该组的用户

1.3 UID和GID

  • UID:即每个用户的身份标示,类似于每个人的身份证号码

  • GID :是每个用户组的唯一标识符。每个用户都属于至少一个组,该组的 GID 用来标识该组。用户组用于管理一组具有相同权限的用户,文件和目录的访问权限通常由文件的 GID 来决定

2、用户帐号文件

2.1 passwd文件

/etc/passwd/ 文件在 Linux 系统中保存了所有用户的基本信息,而用户的密码信息和一些安全设置则保存在 /etc/shadow/ 文件中。密码的加密存储在 /etc/shadow/ 文件中,/etc/passwd/ 文件只存储占位符(如 x!! ),以确保密码的安全

文件格式
/etc/passwd/ 文件记录每个用户的基本信息,每行一个用户,字段之间用冒号分隔,格式如下:

用户名 : 密码占位符 : UID : GID : 用户描述 : 宿主目录 : 登录Shell

字段解释

  • 密码占位符:通常显示为 x ,表示密码存储在 /etc/shadow/ 文件中,而不直接存储在 /etc/passwd/ 文件里。ps:虽然 x 并不表示真正的密码,但也不能删除,如果删除了那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆
  • 用户描述:该字段一般用于描述该用户的详细信息,通常为用户的全名或其他说明
  • 宿主目录:用户登录时的默认工作目录
  • /bin/bash:允许用户登录。程序文件是不允许登录,会显示 /sbin/nologin
    在这里插入图片描述

2.2 shadow文件

/etc/shadow/ 文件用于存储用户的加密密码以及关于密码的有效期、过期时间等信息。文件中的每一行表示一个用户,字段之间由冒号分隔,格式如下:

用户名:加密密码:最后修改密码时间:最小修改间隔:最大修改间隔:密码警告天数:密码失效宽限天数:账户失效时间:保留

字段解释

  1. 加密密码:加密后的密码,通常使用 SHA-512 算法。若显示为 !!*,则表示该账户已被锁定或无密码
  2. 上次修改密码的时间:Linux 计算日期的时间是以1970年1月1日作为第一天不断累加得到的时间。下图显示的20312意思是今天距离1970-1-1有20312天
  3. 最小修改间隔:密码修改的最小间隔,单位是天,默认为 0 表示没有限制
  4. 最大修改间隔:密码的最大有效期,超过该期限必须修改密码,通常默认为 99999,表示密码永不过期
  5. 密码过期警告天数:密码过期前提前通知用户的天数,默认是 7
  6. 密码过期宽限期:密码过期后的宽限期,表示密码过期后用户可以继续登录的天数,过期后禁用账户。0 表示过期后立即失效,-1 表示永不失效
  7. 账户失效时间:账户的失效日期,使用自 1970 年 1 月 1 日以来的天数。为空表示账户永不过期
  8. 保留字段:该字段目前未使用,用作后续新增字段使用
    在这里插入图片描述

3、用户管理相关的命令

3.1 修改用户密码信息—chage

chage 命令用于查看和修改用户账户的密码有效期、账户失效等信息。常见选项如下:

  • -l:列出当前设置
  • -m:设置密码可更改的最小天数
  • -M:设置密码的最大有效期(最大天数)(chage -M 60 root)
  • -W:设置密码到期前提前警告的天数
  • -E:设置账户失效日期
  • -d:设置上次修改密码的日期
  • -i:设置密码过期后宽限期的天数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

date -s "2025-12-23 14:30:00"

在这里插入图片描述

3.2 添加用户账号—useradd

添加用户账号

  • -u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用
  • -d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)
  • -e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式
  • -g:指定用户的基本组名
  • -G:指定用户的附加组名
  • -M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录
  • -s:指定用户的登录Shell
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.3 管理用户密码—passwd

passwd是用于管理用户密码的核心命令,主要功能包括密码修改、账户锁定及密码策略配置等

格式:passwd【选项】【用户】
  • -d:清空指定用户的密码,仅使用用户名即可登录系统
  • -l:锁定用户账户
  • -S:查看用户账户的状态
  • -u:解锁用户账户
    在这里插入图片描述
1、单用户修改密码
echo "123" | passwd --stdin zhangsan
注:由于这里密码会明文展示,所以一般都用作于批量修改密码
2、通过脚本批量修改密码
#!/bin/bash
users=("user1" "user2" "user3")
password="CommonP@ss1"
for user in "${users[@]}"; do
    echo "$password" | sudo passwd --stdin "$user"
done

3.4 修改用户账号的属性—usermod

格式:usermod 【选项】 用户
  • -l:更改用户账号的登录名称
  • -L:锁定用户账户
  • -U:解锁用户账户
  • -u:修改用户的 UID 号
  • -d:修改用户的宿主目录位置。
  • -e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式
  • -g:修改用户的基本组名
  • -G:修改用户的附加组名
  • -s:指定用户的登录 Shell
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.5 删除用户账号—userdel

格式:userdel  [-r]  用户名
 -r 表示连用户的宿主目录一并删除

在这里插入图片描述

3.6 用户账号的初始配置文件

添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件,较常用的初始配置文件 包括“.bash_logout”、“.bash_profile”和“.bashrc”。其中,“.bash_profile”文件中的命令将在该用户每次登录时被执行;“.bashrc”文件中的命令会在每次加载“/bin/Bash”程序(当然也包括登 录系统)时执行;而“.bash_logout”文件中的命令将在用户每次退出登录时执行
理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。 在“.bashrc”等文件中,可以添加用户自己设置的可执行语句(如 Linux 命令行、脚本控 制语句等),以便自动完成相应的任务
如果希望为所有用户添加登录后自动运行的命令程 序、自动设置变量等,可以直接修改/etc 目录下的类似文件,如/etc/bashrc 文件、/etc/profile 文件。例如,执行以下操作可以为所有用户自动设置 myls 命令别名

  • 每次修改 .bashrc后,使用 source ~./bashrc 可以刷新修改的配置,使之生效
  • 一般会在 .bash_profile 文件中调用 .bashrc ,每次登录linux会启动 .bash_profile ,这样 .bashrc也就同步执行了
  • 同理:可以在 /etc/skel/.bash_logout 文件中添加下面这行 rm -f $HOME/.bash_history 当用户每次注销时,.bash_history 文件都会被删除

4、组管理相关的命令

4.1 组账号文件

与组账号相关的配置文件也有两个,分别是 /etc/group/etc/gshadow 前者用于保存 组账号名称、GID 号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息。某一个组账号包含哪些用户成员,将会在 group 文件内最后一个字段中体现出来,多个组成员之间使用逗号分隔
在这里插入图片描述

4.2 添加组账号—groupadd

groupadd  [-g GID]  组账号名
groupadd -g 1200 market
tail -1 /etc/group

在这里插入图片描述

4.3 添加删除组成员—gpasswd

  • -a:添加用户到组
  • -d:从组删除用户
  • -A:指定管理员
  • -M:指定组成员和-A的用途差不多
  • -r:删除密码
    在这里插入图片描述

4.4 删除组账号—groupdel

格式:groupdel 组账号名

在这里插入图片描述

5、查询账号信息

5.1 groups命令

格式:groups [用户名]
查询用户所属的组

在这里插入图片描述

5.2 id命令

格式:id  [用户名]
查询用户身份标识

在这里插入图片描述

5.3 finger命令

格式:finger [用户名]
查询用户账号的详细信息

在这里插入图片描述

5.4 w、who、users命令

w命令:综合显示当前登录用户及其活动状态
用户信息‌:用户名(USER)、终端(TTY)、登录来源(FROM)、登录时间(LOGIN@)。
who命令:列出当前登录用户的基础会话信息
用户名、终端设备(TTY)、登录时间、远程主机 IP/域名
users命令:极简显示当前登录用户的用户名列表‌
ps:同名用户多次登录会重复显示用户名

在这里插入图片描述

5.5 su命令

格式:su - 目标用户
- 选项表示将使用目标用户的环境登录
没有 - 表示使用当前用户的环境变量

在这里插入图片描述

6、文件权限

6.1 查看文件/目录的权限和归属

  • 读取 r:允许查看文件内容、显示目录列表
  • 写入 w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
  • 可执行 x:允许运行程序、切换目录
  • 属主:拥有该文件或目录的用户帐号
  • 属组:拥有该文件或目录的组帐号
    查看文件的权限
ls -lh 目录  查看全部
ls -ld 目录  查看某一个

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

drwxr-xr-x.  2 root root      6 102 2020 modules-load.d
-rw-r--r--.  1 root root      0 67 2013 motd
lrwxrwxrwx.  1 root root     17 87 23:34 mtab -> /proc/self/mounts

## 第一个字符表示文件的类型
		- 是普通文件
		d是目录
		l是软链接(快捷方式)
## 之后的每三个字符为一组
分别对应 r、w、x,如果有对应的权限就显示出来,没权限就会显示 -
第一组对应的是属主的权限
第二组对应的是属组的权限
第三组对应的是其他用户的权限

6.2 设置文件和目录的权限—chmod

格式1:chmod 【ugoa】【+-=】【r、w、x】【目标文件或目录】
u、g、o、a 分别表示属主、属组、其他用户、所有用户
“+-=”表示设置权限的操作动作
“+”代表增加相应权限,“-”代表减少相应权限,“=” 代表仅设置对应的权限

格式2:chmod nnn 目标文件或目录

在这里插入图片描述
在这里插入图片描述

r、w、x 每个都有对应的数字
r --- 4
w --- 2
x --- 1

在这里插入图片描述

6.3 设置文件和目录的归属—chown

chown  属主:属组  	文件或目录
chown  属主   		文件或目录
chown  :属组  		文件或目录

-R:递归修改指定目录下所有文件、子目录的归属

在这里插入图片描述
在这里插入图片描述

7、提权

7.1 sudo机制介绍

通过 su 命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登录密码。例如,若要从zhangsan用户切换为 root 用户,必须知道 root 用户的密码。对于生产环境中,每多一个人知道特权密码,其安全风险也就增加一分。 有没有一种折中的办法,既可以让普通用户拥有一部分管理权限,又不需要将 root 用户的密码告诉他呢?答案是肯定的,使用 sudo 命令就可以提升执行权限。不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令

7.2 sudo命令

  • -l 列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的
  • -v 验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳
  • -u 指定以以某个用户执行特定操作
  • -k 删除时间戳,下一个sudo 命令要求用求提供密码

etc/sudoers 文件的默认权限为440,需使用专门的 visudo 工具进行编辑。虽然也可以用 vim 进行编辑,但保存时必须执行“:w!”命令来强制操作,否则系统将提示为只读文件而拒绝保存。 配置文件/etc/sudoers 中,授权记录的基本配置格式如下

user MACHINE=COMMANDS
用户   主机    命令
用户(user):直接授权指定的用户名,或采用 %组名 的形式(授权一个组的所有用户)
主机(MACHINE):使用此配置文件的主机名称。一般设为 localhost 或者实际的主机名即可
命令(COMMANDS):允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号进行分隔

root用户给普通用户设置网卡权限
visudo
配置文件里插入
在这里插入图片描述
切换到普通用户
执行 sudo -l
在这里插入图片描述
执行sudo命令修改临时网卡
在这里插入图片描述
在这里插入图片描述
当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、 主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置
在这里插入图片描述

总结

本文介绍了用户管理相关的命令如:useradd(增)、userdel(删)、chage(改)、usermod(改)、passwd(管理),组管理的命令groupadd增、group删、gpasswd(增、删组成员),查询账号信息(groups、id、finger、w、who、users),设置文件/目录的权限(chmod)、设置归属(chown),sudo提权【sudo 是一个灵活一种方式来控制用户(普通)的系统权限,通常以最小权限的一个原则来给普通用户赋权,通过编辑**/etc/sudoers配置文件或可视化编辑visudo**来赋权】

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值