6、Linux用户和用户组管理

创建用户

下面操作都是在root用户下操作
如下图所示,Linux的用户至少需要属于一个组,每一个用户在home目录下都会有一个属于自己的单独的文件夹
添加用户的语句为:useradd 用户名,执行后会在home目录下自动创建一个与用户名同名文件夹
创建用户时指定家目录:useradd -d 家目录路径 用户名
当没有指定添加的用户在哪个组时,会自动创建一个与用户名同名的组,并将创建的新用户添加到组中
给用户指定或修改密码的语句为:passwd 用户名**,然后根据提示设定密码
6、Linux用户和用户组管理

删除用户

  • 删除用户,但是保留home下的目录:userdel 用户名
  • 删除用户,同时删除home下的目录:userdel -r 用户名
    一般实际工作中,删除用户都会保留home下的目录

查询用户信息

语句为: id 用户名
若用户存在,返回 uid、gid、组,分别表示用户的id、用户所属组的id、用户所属的组
若用户不存在,返回无此用户

用户和组的管理

一个组可以包含多个用户,组出现的意义就是为了方便系统对有共性的多个用户进行统一管理

  • 增加组:groupadd 组名
  • 删除组:groupdel 组名
  • 修改组:usermod -g 用户组 用户名
  • 给用户添加多个组:usermod -G 用户组 用户名

联系上文中创建用户的指令可知,创建组和创建用户相对完整的指令为:
groupadd 组名
useradd -g 组名 -d 家目录路径 用户名
passwd 用户名
当-g和-d都缺省时,自动创建与用户名同名的组和家目录

关机和重启命令

命令 含义
shutdown -h now 立即关机
shutdown -h 1 1分钟后关机
shutdown -r now 立即重启
reboot 立即重启
sync 将内存的数据同步保存到磁盘,单独使用没有显示的效果,但一般关机前最好用一下,防止数据丢失

用户和组的配置文件

  • /etc/passwd:用户配置文件
    每行的含义:用户名:口令:用户id:组id:家目录:用户对应的解析器(shell种类)
  • /etc/group:组配置文件
    每行的含义:组名:口令:组id:组成员
    Ubuntu中可以看到组成员,其他系统里没试过
  • /etc/shadow:口令配置文件(密码和登录信息)

用户登录和注销

命令 含义
su 用户名 切换到用户名指定的用户登录,执行后需要输入密码。用户名缺省时为root
sudo -i 切换到root用户登录
exit 退出当前用户
logout 退出当前用户
  • 两个切换用户命令的区别:
    【su 用户名】的方式在切换后会以用户名的身份留在当前目录
    【sudo -i】的方式在切换后会直接跳转到root目录下
  • 两个退出用户命令的区别:
    【exit】两种登录方式下,都可以用exit退出
    【logout】只有在sudo -i的登录方式下,才可以用logout退出
    两种退出方式的背后还涉及shell脚本和运行级别的不同,这里先不赘述

设定或修改root密码

CentOS和Ubuntu设定找回root密码的操作方式有所区别,不同用户下修改root密码的方式也有所不同

  • Ubuntu
    在安装Ubuntu的时候,是默认没有**root用户的,所以如果是首次使用su进入root用户时,会提示Authentication failure
    我们在安装时创建的用户是普通用户,但是和root是在相同的用户组里,与root有相同的权限
    当前用户 设定root密码 修改root密码 解释
    最初的普通用户 输入sudo passwd,然后输入当前用户密码,再输入新的root密码 同上 由于最初创建的普通用户与root有相同的权限,所以可以直接对root进行设定和修改密码
    root用户 —— 输入sudo passwd,然后输入旧的root密码,再输入新root密码 如果当前是root用户,那我们肯定是知道root的密码的,所以只涉及到修改密码的操作
    普通用户 —— 假如忘记了root密码,可以参考这篇文章修改root密码 这种方式是利用了运行级别1
  • CentOS
    CentOS在安装时,默认使用的就是root用户,所以安装的时候就要指定root密码
    如果安装的时候没有创建最初的普通用户,则已进入系统就是root用户
    CentOS中最初创建的普通用户就是普通的用户,没有和root相同的权限
    所以,如果当前用户是root用户,可以和ubuntu一样使用sudo passwd修改密码
    如果当前用户是普通用户,需要按下面的操作进行修改root密码:
    1、首先,重启centos7,在引导界面选择进入系统的界面按“e”进入编辑页面
    6、Linux用户和用户组管理
    2、然后按向下键,找到以“Linux16”开头的行,在该行的最后面先输入一个空格,再输入“init=/bin/sh”
    6、Linux用户和用户组管理
    3、接下来按“ctrl+X”组合键进入单用户模式
    4、接下来再输入“mount -o remount,rw /”(注意mount与-o之间和rw与/之间的有空格)
    5、然后再输入“passwd”回车
    6、接下来就是输入你的root账号密码了
    6、Linux用户和用户组管理
    7、接下来再输入touch /.autorelabel,回车
    8、输入exec /sbin/init,回车
    6、Linux用户和用户组管理
    9、回车后出现空白的界面,这里稍微等几分钟,系统会自动重启
    10、输入root,然后输入新密码,点开终端,看是否是以root登录的

Linux用户的安全问题

上面提到,在Ubuntu下普通用户可以通过sudo passwd修改root密码
CentOS和Ubuntu中普通用户也可以在引导界面修改root密码,有人就会觉得,这样不就很不安全吗?

首先,Ubuntu下只有最初创建的普通用户,才可以通过sudo passwd修改root密码
之后我们使用useradd 用户名创建的用户,如果没有加入管理员用户组,都默认都没有sudo权限
如果说想创建几个权限低点的用户,则要在创建时指定其他的用户组,然后用root给用户组设定权限
对于初学者来说,Ubuntu下root用户被禁用其实能够减少失误操作所带来的风险。
使用sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性。

第二个关于在引导界面进入单用户模式修改root密码的问题
要注意,如果想要进入引导界面修改root,必须要在实际的物理主机上进行操作,不能远程操作
即,如果想进入运行级别1进行操作,必须要在机房里的实际主机上操作
所以,一般公司的机房都会有严密的安全措施,普通人不能随便进入