30. 【Linux教程】Linux 添加用户

上小结介绍了 Linux 系统中的用户,本小节介绍如何添加 Linux 普通用户,添加完普通用户后可以在当前登录进程切换登录用户。

1. useradd 命令

若想要添加 Linux 系统普通用户,可以使用 useradd 命令,使用 root 账号登录 Linux 系统之后就可以添加系统普通用户了。

1.1 useradd 命令参数介绍

下面列举了一些 useradd 命令参数作用:

useradd 命令参数名称功能与作用描述
-b表示 --base-dir,新用户主目录的基目录
-c表示 --comment,给新用户添加备注
-d表示 --home-dir, 新账户的家目录
-D表示 --defaults,显示或更改默认的 useradd 配置
-e表示 --expiredate,用 YYYYY-MM-DD 格式指定一个账户过期的日期
-f表示 --inactive_days,指定这个帐户密码过期后多少天这个账户被禁用,0表示密码一过期就立即禁用,-1表示禁用这个功能
-g表示 --gid GROUP,指定用户登录组的GID或组名
-G表示 --groups,指定用户除登录组之外所属的一个或多个附加组
-k表示 --skel,使用此目录作为骨架目录
-K表示 --key,不使用 /etc/login.defs 中的默认值
-l表示 --no-log-init,不要将此用户添加到最近登录和登录失败数据库
-m表示 --create-home,创建用户的家目录
-M表示 --no-create-home,不创建用户的家目录(当默认设置里指定创建时,才用到)
-N表示 --no-user-group,不创建同名的组
-o表示 --non-unique,允许使用重复的 UID 创建用户
-p表示 --password,为用户账户指定默认密码
-r表示 --system,创建一个系统账户
-s表示 --shell,shell 指定默认登录 shell
-u表示 --uid,为账户指定一个唯一的 UID
-U表示 --user-group,创建与用户同名的组
-Z表示 --selinux-user,为 SELinux 用户映射使用指定名字

若使用 useradd 命令不指定参数,则新添的用户默认参数如下:

  • 新用户 GID 默认为 100;
  • 新用户的家目录位于 /home/用户名
  • 新用户密码过期后不会被禁用;
  • 新用户账户没有被设置过期日期;
  • 新用户将 bash shell 作为默认 shell

1.2 添加用户

可以使用 useradd 命令新增 Linux 系统普通用户,命令如下:

useradd study_linux

执行结果如下图:

如上图所示是 /etc/passwd 文件中展示的用户信息,下面查看 /etc/shadow 文件中记录的用户信息,命令如下:

tac /etc/shadow

执行结果如下图:

2. passwd 命令设置用户密码

可以使用 passwd 命令给上述 study_linux 用户设置用户密码,命令如下:

passwd study_linux

执行结果如下图:

3. 切换当前登录用户

若想要从当前登录用户直接切换到另外一个用户,可以使用 su 命令,以切换到 study_linux 用户为例,命令如下:

su study_linux

执行结果如下图:

4. sudo 命令介绍

sudo 是 Linux 系统管理指令,是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具,如 halt,reboot,su 等等。这样不仅减少了 root 用户的登录和管理时间,同样也提高了安全性。sudo 不是对 shell 的一个代替,它是面向每个命令的。下面演示一个普通用户执行 root 权限的过程,过程命令下:

cat /etc/shadow # 使用普通用户直接查看 /etc/shadow 会提示权限不够

sudo cat /etc/shadow # 使用 sudo 执行 root 权限

su root # 切换 root 用户

执行结果如下图:

Tips:之前提到过 /etc/shadow 只有 root 权限才能访问。

如上图所示切换至 root 用户之后,可以在 /etc/sudoers 文件中设置 study_linux 用户的 sudo 权限,首先使用 Vim 打开 /etc/sudoers 文件,命令如下:

vim /etc/sudoers

执行结果如下图:

保存退出之后,切换至 study_linux 用户,重新执行之前查看 /etc/shadow 文件的过程,命令如下:

su study_linux

cat /etc/shadow

sudo cat /etc/shadow

执行结果如下:

5. 小结

本小节介绍了如何添加 Linux 系统用户,还介绍了如何切换当前登录用户,root 用户 可以通过修改 /etc/sudoers 文件赋予普通用户指定的 root 权限,普通用户有了 sudo 权限之后,可以在命令前面加上 sudo 执行 root 权限,需要注意的是本小节介绍的 /etc/sudoers 文件中设置的 study_linux 用户 sudo 权限 为 ALL,可以指定特定的权限。

### 关于AcWing平台上最长公共子序列问题 #### 解决方案概述 针对AcWing平台上的最长公共子序列(LCS)问题,采用动态规划(DP)[^1]是一种高效的方法来解决此类挑战。此方法不仅能够有效地计算两个字符串之间的最大匹配字符数量,而且可以进一步扩展以追踪具体的匹配路径。 #### 动态规划原理说明 通过构建二维表格dp[i][j]表示第一个串前i个字符与第二个串前j个字符的最大匹配数[^2]。当遇到相同字符时,在左上角的基础上加一;如果不同则取上方和左侧较大者继承下来作为当前格子的值。最终整个表填满后的右下角即为所求的结果长度。 #### Python代码实现示例 下面是一个基于上述理论的具体Python程序: ```python def longest_common_subsequence(text1: str, text2: str) -> int: m, n = len(text1), len(text2) dp = [[0] * (n + 1) for _ in range(m + 1)] for i in range(1, m + 1): for j in range(1, n + 1): if text1[i - 1] == text2[j - 1]: dp[i][j] = dp[i - 1][j - 1] + 1 else: dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) return dp[-1][-1] ``` 这段代码实现了寻找两段文字间最长公共子序列的功能,并返回其长度[^3]。 #### 进一步获取具体子序列内容 为了得到实际构成这个最小子序列的内容而不是仅仅知道它的长度,可以在原有基础上增加回溯过程。从`dp[m][n]`出发向左上角遍历直到起点位置,每当发现相等情况就记录对应字母到列表中最后反转即可获得完整的LCS字符串[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晟玮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值