在 Linux 系统中,对权限的划分是很严格的。并且一般是不允许直接登录 root 用户进行操作系统的,因为 root 用户的权限实在是太大了,可以说是 “为所欲为”。近几年,我们经常在新闻上可以看到一些删库的案件,不管是出于什么原因,删库这件事带来的后果都是很可怕的,对于一个企业的损失来讲也是极大的。为了尽量避免上面这些惨剧发生,建议大家平时在使用 Linux 系统时,都最好避免使用 root 密码登录,而是选择使用其他用户,并且最好是根据工具不同部分、不同组别创建不同的用户,进行区分管理,这样出了问题也比较好追查。
上面说了那么多,今天这篇文章就来教大家如何在 Linux 系统中创建用户,默认一般系统安装好之后可以登录的用户只有一个,那就是 root 用户。虽然从配置文件里可以看到还有其他的用户信息,但是这些都属于系统用户,默认都是设置为禁止登录的,系统用户的作用主要就是用来启动某个服务或者进程时使用。创建用户的命令很简单,并且也很实用,下面先来说说它的语法格式:
useradd [options] LOGIN
useradd 选项 添加的用户
useradd -D
useradd -D [options]
man 手册里对 useradd
命令的介绍就是:create a new user or update default new user information,创建一个新的用户或者更新默认的新用户信息。
在使用 useradd
这个命令时,如果不加任何的参数选项,后面直接跟上需要添加的用户名,那么系统默认的流程是这样的,首先会读取 /etc/login.defs 也就是用户定义文件 和 /etc/default/useradd 用户默认配置文件中定义的参数和规则,然后根据这两个文件中设置的规则进行添加用户。并且同时还会向配置文件 /etc/passwd 和配置文件 /etc/group 中添加新增用户记录和新增用户组记录,会向 /etc/shadow 和 /etc/gshadow 中添加新建用户和新建用户组回应的密码相关信息进行记录。除此之外,还会给新增的用户创建一个家目录,并且将 /etc/skel 中的所有文件,包括隐藏的环境配置文件统统复制到新建用户的家目录中。
虽然新建用户的命令很简单,但是却涉及到了上面所提到的那么多文件,那么接下来就对上面所提到的文件做一下简单的介绍。
-
/etc/login.defs:用户定义文件,创建用户时的默认设置文件。简单来说就是这个文件主要作用于创建用户的时候,会给用户做一些比较基础的默认配置,就比如指定用户 UID 和 GID 的范围起始、用户主目录的权限、用户的过期时间,还有指定用户密码可以设置的最大长度等等。
-
/etc/default/useradd:创建用户时使用的默认文件
$ cat /etc/default/useradd
# useradd defaults file
GROUP=100 表示用户的组ID
HOME=/home 表示用户默认的家目录位置
INACTIVE=-1 表示是否启用账号过期停权,-1 表示不启用
EXPIRE= 表示账号是否启用过期设置,无表示不启用
SHELL=/bin/bash 默认使用的 shell 种类
SKEL=/etc/skel 当新建一个用户时,用户主目录下的文件都是从这个目录下复制的
CREATE_MAIL_SPOOL=yes 用来表示是否创建邮箱缓存,yes 就是创建的意思 -
/etc/passwd:这个文件默认存放的是系统上一些用户的相关信息
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin这个文件它对每个用户都有相对应的记录,每个用户一行,记录着这个用户的一些基本属性。总结一下就是这个文件它存储了当前系统中所有用户的基本信息。并且这个文件只有 root 用户可以修改,对其他用户都是只读的,这也是保证系统安全的一种策略。
-
/etc/shadow:这个文件正如它的名字一样 “影子” ,它就相当于是 passwd 这个文件的一个影子,并且这个文件只有 root 用户才可以修改和查看。
-
/etc/skel:这个目录往往不会引起人们的注意,但是这个文件其实还是很有用的,某种程度上来讲可以节约一定的配置时间,skel 是单词 skeleton 的缩写,意为骨骼、框架的意思。上面已经提到这个目录的作用,即在新建用户时,拿来初始化新建用户家目录的,所以如果不想在每次新建用户时都重新设定框架,那么很简单直接修改 skel 就可以了。skel 默认为空。
到这里已经差不多介绍完了上面所提到的跟用户相关的配置文件及其作用。那么下面就来说说如何创建用户。
创建用户需要用到的命令是 useradd
,这个命令很好理解,相当于两个英文单词之间的拼接,就是用户添加的意思。下来我们就直接以示例来对这个命令进行介绍:
-
正常添加用户
$ useradd zhangsan
这样,zhangsan 用户就添加完成,我们可以在 /etc/passwd、/etc/shadow 里查看相关信息。
在上述示例中,我们添加了一个 zhangsan 的系统用户,此时如果查看 /home 目录,会发现系统在这个目录下自动建立了一个 zhangsan 目录,也就是 zhangsan 用户的家目录,这个目录是作为用户登入进去的起始目录,即家目录。在上面的图片中,可以看到用户的 UID 和 GID,都是 1001,所对应的 shell 是 /bin/bash。在 shadow 文件中,虽然没有创建密码,但是对应的密码文件还是会增加一行相关信息。
-
使用一些参数添加用户
$ useradd -M -s /sbin/nologin lisi
-M:不创建家目录
-s:指定用户的家目录,这里指定为 /sbin/nologin,表示该用户不可登录,这种做法一般用于部署 Nginx、MySQL 等服务时使用
$ ls -ld /home/lisi
ls: cannot access /home/lisi: No such file or directory
因为用了 -M 选项,所以没有创建 lisi 用户的家目录
$ grep -w lisi /etc/passwd
lisi:x:1002:1002::/home/lisi:/sbin/nologin
这里登录的 shell 也变成了 /sbin/nologin这里关于
useradd
的示例就演示上面两个,平时使用已经足够了。有创建肯定就有删除,这里再补充一下删除用户的方法:$ userdel zhangsan
这个命令的其实也是由两个单词组成:user delete 用户删除的意思。它的用法也非常简单,
userdel
后面直接跟上需要删除的对象就可以了。