Shell/Bash在线运行

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
shell脚本学习 发布于:2024-03-07 16:03 bash zndf判断 发布于:2024-03-06 10:23 #### 实验1.1验证输入密码脚本 发布于:2024-03-05 20:16 rm -f测试程序 发布于:2024-03-05 17:40 shell保存简悦导出的markdown文件 发布于:2024-03-03 15:22 grep 三个命令递进组合 发布于:2024-02-28 17:41 if+单大括号 发布于:2024-02-22 15:18 cp拷贝文件 发布于:2024-02-22 14:48 shell脚本编辑学习 发布于:2024-02-20 09:24 shell脚本 发布于:2024-01-26 20:43 学习shell 发布于:2024-01-23 17:31 此脚本检测ChIP-seq样本是否input和IP匹配 发布于:2024-01-17 13:38 一键运行脚本 发布于:2024-01-13 21:37 单点进程与图形声音进程 发布于:2024-01-12 14:58 随机生成10个不相同的整 发布于:2023-12-08 10:18 game color 发布于:2023-12-04 20:01 一键sh安装脚本 发布于:2023-12-15 18:53 打印等边三角形 发布于:2023-11-28 20:00 shell计算器 发布于:2023-11-22 17:22 重启执行docker 发布于:2023-11-21 10:57 测试数据局 发布于:2023-10-19 17:06 查询被封禁ip 发布于:2023-09-19 16:37 shell减法函数 发布于:2023-09-13 10:57 centos7测试tomcat服务是否正常运行 发布于:2023-09-13 10:25 shell-study 发布于:2023-09-06 15:06 just for shell script learn 发布于:2023-09-01 09:34 测试Shell参数传递 发布于:2023-08-24 11:27 对cdh6进行自动化安装 发布于:2023-08-23 10:10 安装zookeeper 发布于:2023-08-14 18:32 安装mongo 发布于:2023-08-11 17:40 容器安装mysql 发布于:2023-08-04 15:19 最后的最后把它搞定 发布于:2023-08-03 14:32 shell测试 发布于:2023-08-01 16:07 Shell 代码验证 发布于:2023-07-24 15:25 shell测试程序 发布于:2023-07-23 22:31 shell函数5-4 while循环 发布于:2023-07-20 10:56 shell的demo 发布于:2023-07-17 23:14 # linux 初学者 发布于:2023-08-24 15:02 shell 在线脚本 1 发布于:2023-07-12 22:16 简单的计算器实现 发布于:2023-07-11 17:17 手机号码正则验证 发布于:2023-08-07 16:20 指定关闭或打开端口号 发布于:2023-07-07 16:14 #!/bin/bash a="hello,world,nice,to,meet,you" #要将$a分割开,先存储旧的分隔符 OLD_IFS="$IFS" #设置分隔符 IFS="," #如下会自动分隔 arr=($a) #恢复原来的分隔符 IFS="$OLD_IFS" function func1(){ echo $@ } #遍历数组 for s in ${arr[@]} do func1 "$s" done echo "完成" 发布于:2023-07-04 14:17 批量增加用户打印 发布于:2023-06-12 13:41 ##10num求最值平均值 发布于:2023-06-12 16:12 测试Jenkins 发布于:2023-06-07 14:02 九九乘法表 发布于:2023-06-07 10:37 case判断 发布于:2023-06-07 10:13 这是一个测试代码 发布于:2023-06-07 09:25 测试shell 发布于:2023-05-29 18:53 [更多]
显示目录

useradd 命令-新建用户



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

useradd 命令

使用 useradd 命令新建用户

基本格式

[root@localhost ~]#useradd [选项] 用户名

useradd命令常用选项

选项 含义
-u UID 手工指定用户的 UID,注意 UID 的范围(不要小于 500)。
-d 主目录 手工指定用户的主目录。主目录必须写绝对路径,
而且如果需要手工指定主目录,则一定要注意权限;
-c 用户说明 手工指定/etc/passwd文件中各用户信息中第 5 个字段的描述性内容,可随意配置;
-g 组名 手工指定用户的初始组。一般以和用户名相同的组作为用户的初始组,
在创建用户时会默认建立初始组。一旦手动指定,则系统将不会在创建此默认的初始组目录。
-G 组名 指定用户的附加组。我们把用户加入其他组,一般都使用附加组;
-s shell 手工指定用户的登录 Shell,默认是 /bin/bash;
-e 曰期 指定用户的失效曰期,格式为 "YYYY-MM-DD"。也就是 /etc/shadow 文件的第八个字段;
-o 允许创建的用户的 UID 相同。例如,执行 "useradd -u 0 -o usertest" 命令
建立用户 usertest,它的 UID 和 root 用户的 UID 相同,都是 0;
-m 建立用户时强制建立用户的家目录。在建立系统用户时,该选项是默认的;
-r 创建系统用户,也就是 UID 在 1~499 之间,供系统程序使用的用户。
由于系统用户主要用于运行系统所需服务的权限配置,因此系统用户的创建默认不会创建主目录。

没有特殊要求下,无需使用任何选项即可成功创建用户

例如:

[root@localhost ~]# useradd lamp

此行命令就表示创建 lamp 普通用户。

它会完成以下几项操作:

在 /etc/passwd 文件中创建一行与 lamp 用户相关的数据:

[root@localhost ~]# grep "lamp" /etc/passwd
lamp:x:500:500::/home/lamp:/bin/bash

可以看到,用户的 UID 是从 500 开始计算的。同时默认指定了用户的家目录为 /home/lamp/,用户的登录 Shell 为 /bin/bash。 在 /etc/shadow 文件中新增了一行与 lamp 用户密码相关的数据:

[root@localhost ~]# grep "lamp" /etc/shadow
lamp:!!:15710:0:99999:7:::

用户还没有设置密码,所以密码字段是 "!!",代表这个用户没有合理密码,不能正常登录。同时会按照默认值设定时间字段,例如密码有效期有 99999 天,距离密码过期 7 天系统会提示用户“密码即将过期”等。 在 /etc/group 文件中创建一行与用户名一模一样的群组:

[root@localhost ~]# grep "lamp" /etc/group
lamp:x:500:

该群组会作为新建用户的初始组。 在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息:

[root@localhost ~]# grep "lamp" /etc/gshadow
lamp:!::

当然,我们没有设定组密码,所以这里没有密码,也没有组管理员。 默认创建用户的主目录和邮箱:

[root@localhost ~]#ll -d /home/lamp/
drwx------ 3 lamp lamp 4096 1月6 00:19 /home/lamp/
[root@localhost ~]#ll /var/spod/mail/lamp
-rw-rw---- 1 lamp mail 0 1月6 00:19 /var/spool/mail/lamp

注意这两个文件的权限,都要让 lamp 用户拥有相应的权限。 将 /etc/skel 目录中的配置文件复制到新用户的主目录中(至于为什么,学完本节内容就会明白)。

可以看到,useradd 命令创建用户的过程,其实就是修改了与用户相关的几个文件或目录,前面章节已经对这些文件做了详细介绍。

除了默认创建用户,我们还可以利用 useradd 命令的各种选项亲自定制要创建的用户,例如:

[root@localhost ~]# groupadd lamp1
#先手工添加lamp1用户组,因为我一会儿要把lamp1用户的初始迎指定过来,如果不事先建立,则会报告用户组不存在
[root@localhost ~]# useradd -u 550 -g lamp1 -G root -d /home/lamp1 -c "test user" -s /bin/bash lamp1
#在建立用户lamp1的同时,指定了UID(550)、初始组(lamp1)、附加组(root)、家目录(/home/lamp1/)、用户说明(test user)和用户登录Shell(/bin/bash)
[root@localhost ~]# grep "lamp1" /etc/passwd /etc/shadow /etc/group
#同时查看三个文件
/etc/passwd:lamp1:x:550:502:test user:/home/lamp1:/bin/bash
#用户的UID、初始组、用户说明、家目录和登录Shell都和命令手工指定的一致
/etc/shadow:lamp1:!!:15710:0:99999:7:::
#lamp1用户还没有设定密码
/etc/group:root:x:0:lamp1
#lamp1用户加入了root组,root组是lamp1用户的附加组
/etc/group:lampl:x:502:
#GID为502的组是lamp1组
[root@localhost ~]#ll -d /home/lamp1/
drwx------ 3 lamp1 lamp1 4096 1月6 01:13 /home/lamp1/
#家目录也建立了,不需要手工建立

以上 2 种方式,都可以成功创建用户。通常情况下,根本不需要手工指定任何内容,因为使用默认值就可以满足我们的要求。那你有没有想过,useradd 命令的这些默认值保存哪里,能否手工修改呢?

答案是肯定的。useradd 命令在添加用户时参考的默认值文件主要有两个,分别是 /etc/default/useradd 和 /etc/login.defs。前面我们已经详细介绍了 /etc/login.defs,这里不再过多赘述,本节带大家详细了解 /etc/default/useradd 文件。 /etc/default/useradd 文件 首先,使用 Vim 命令查看 /etc/default/useradd 文件中包含哪些内容:

[root@localhost ~]#vim /etc/default/useradd
# useradd defaults file
GR0UP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

另外,也可以直接通过命令进行查看,结果是一样的:

[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

-D 选项指的就是查看新建用户的默认值。

/etc/default/useradd 文件内容

参数 含义
GR0UP=100 这个选项用于建立用户的默认组 Linux 中默认用户组有两种机制:
一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;
另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。
HOME=/home 指的是用户主目录的默认位置,所有新建用户的主目录默认都在 /home/下,
刚刚新建的 lamp1 用户的主目录就为 /home/lamp1/。
INACTIVE=-1 指的是密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。
这里默认值是 -1,代表所有新建立的用户密码永远不会失效。
EXPIRE= 表示密码失效时间,也就是 /etc/shadow 文件的第八个字段。
默认值是空,代表所有新建用户没有失效时间,永久有效。
SHELL=/bin/bash 表示所有新建立的用户默认 Shell 都是 /bin/bash。
SKEL=/etc/skel 更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。
CREATE_MAIL_SPOOL=yes 指的是给新建用户建立邮箱,默认是创建。

注意,此文件中各选项值的修改方式有 2 种,一种是通过 Vim 文本编辑器手动修改,另一种就是使用文章开头介绍的 useradd 命令,不过所用的命令格式发生了改变:

useradd -D [选项] 参数

useradd -D 命令可用选项

用此命令修改 /etc/default/useradd 文件,可使用的选项如下

选项+参数 含义
-b HOME 设置所创建的主目录所在的默认目录,只需用目录名替换 HOME 即可,
例如 useradd -D -b /gargae。
-e EXPIRE 设置密码失效时间,EXPIRE 参数应使用 YYYY-MM-DD 格式,
例如 useradd -D -e 2019-10-17。
-f INACTIVE 设置密码过期的宽限天数,例如 useradd -D -f 7。
-g GROUP 设置新用户所在的初始组,例如 useradd -D -g bear。
-s SHELL 设置新用户的默认 shell,SHELL 必须是完整路径,
例如 useradd -D -s /usr/bin/csh。

例如,要修改新用户的默认 Shell 为 /bin/csh,可以使用如下方式:

[root@localhost ~]# useradd -D -s /bin/csh
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

通过 /etc/default/useradd 文件,仅能修改有关新用户的部分默认值,一些内容并没有在这个文件中,例如修改用户默认的 UID、GID,以及对用户密码的默认设置,对这些默认值的修改就需要在 /etc/login.defs 文件中进行。

由JSRUN为你提供的Shell/Bash在线运行、在线编译工具
        JSRUN提供的Shell/Bash 在线运行,Shell/Bash 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout