侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Linux基础(13)之创建用户组和su命令

zze
zze
2019-10-22 / 0 评论 / 0 点赞 / 583 阅读 / 3125 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

创建用户组

创建组使用的命令为 groupadd,它的使用和 useradd 很相像,格式如下:

groupadd [OPTION] ... GROUPNAME

例:创建一个名为 testGroup 的组。

[root@localhost ~]# groupadd testGroup
[root@localhost ~]# tail -1 /etc/group
testGroup:x:1003:

可以看到,通过 groupadd 命令创建了一个组,并且该组的信息可以在 /etc/group 中看到。

指定GID

groupadd 命令可以通过 -g 选项指定新创建组的 GID,GID 的范围在 /etc/login.defs 中有定义,最小值和最大值分别对应 GID_MINGID_MAX 属性。和 UID 相同的是,创建组不指定 GID 时生成的 GID 也是以最近一次创建的组的 GID 为基础再自增 1。

创建系统组

useradd 命令可以通过 -r 选项指定创建系统用户,而 groupadd 命令可以通过 -r 选项来指定创建系统组,对于 CentOS 6,系统组 GID 的范围必须在 0-500,对于 CentOS 7,系统组 GID 的范围必须在 0-1000。

补充命令

su

su 命令名称是 switch user 的缩写,译为切换用户。
它的作用是切换当前会话的用户或使用指定的用户身份来运行命令。

非登录切换和登录切换

例:切换用户身份为 user2

[root@localhost ~]# su user2
[user2@localhost root]$ exit
exit
[root@localhost ~]# su - user2
上一次登录:二 9月 10 11:13:21 CST 2019pts/1 上
[user2@localhost ~]$ 

通过上述示例可以看到,su 命令后可以直接跟要切换到的用户名,也可以中间使用一个 - 分割。从输出结果可以看到是有差别的:

  1. 执行 su user2 将身份切换到了 user2,但用户当前工作目录还是在原来 root 用户的家目录。
  2. 而通过执行 su - user2 将身份切换到 user2,用户当前的工作目录也随之切换到了 user2 的家目录。

所以上述实际上是两种登录方式,su USERNAME 这种方式为非登陆式切换,不会读取目标用户的配置文件;
su - USERNAME 这种方式为登录式切换,也叫完全切换,会读取目标用户的相关配置文件。

登录式切换也可以使用 su -l USERNAME,与 su - USERNAME 效果相同。

看如下示例:

[root@localhost ~]# su user2
[user2@localhost root]$ echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[user2@localhost root]$ exit
exit
[root@localhost ~]# su - user2
上一次登录:二 9月 10 11:20:55 CST 2019pts/1 上
[user2@localhost ~]$ echo "$PATH"
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user2/.local/bin:/home/user2/bin

可以看到,非登录式切换和完全切换后输出的 $PATH 变量值是不同的,这是因为上述非登录切换输出的变量还是原来 root 用户下的变量值,而完全切换后读取了 user2 特有的配置。

root 用户通过 su 命令切换到其它用户不需要密码,而非 root 用户切换到其它用户时需要密码。

以指定用户身份执行命令

如果不需要完全切换到某用户下,而只是要使用某用户的身份来执行命令,则可以通过 -c 选项来指定,例:

[root@localhost ~]# su - user2 -c 'echo "$PATH"'
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user2/.local/bin:/home/user2/bin

上述示例就是在 root 用户登录的环境下以 user2 的身份来执行 echo "$PATH" 命令。

使用指定的shell程序

可以通过 -s 选项让 su 命令切换到目标用户后直接使用指定的 shell 程序,例:

[root@localhost ~]# su user2 -s /bin/sh
sh-4.2$ 

更多详细使用可通过 man su 查看。

0

评论区