被爱的人都是祖宗 發表於 2020-10-28 20:59:00

CentOS 7创建用户两种方式

<h3 id="什么是用户">什么是用户</h3>
<p>登录进系统的用户对硬件资源的操作都需要通过操作系统,操作系统的开发者们都专门开发了安全机制,要使用操作系统必须事先输入正确的用户名和密码。</p>
<h3 id="为何要有用户">为何要有用户</h3>
<p>系统上的每一个进程,都需要一个特定的用户运行,一个用户拥有特定的权限,该用户运行的进程与用户权限一致。</p>
<p>通常在生产环境是使用普通用户管理服务器,因为root权限过大,容易出问题。</p>
<h3 id="查看用户信息的命令">查看用户信息的命令</h3>
<ul>
<li>id:查看用户信息</li>
</ul>
<pre><code class="language-bash">$ id
uid=1001(chirou) gid=1001(chirou) 组=1001(chirou) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
</code></pre>
<ul>
<li>whoami:查看当前用户是谁</li>
<li>who:查看当前登录的所有用户登录时间及终端信息</li>
</ul>
<pre><code class="language-bash">$ who
root   tty1         2020-10-28 08:50
chirou   pts/0      2020-10-28 08:52 (192.168.12.102)
test   pts/1      2020-10-28 15:07 (192.168.12.102)
</code></pre>
<ul>
<li>w:查看当前登录的所有用户详细信息</li>
</ul>
<pre><code class="language-bash">$ w
19:19:16 up 10:32,3 users,load average: 0.00, 0.03, 0.05
USER   TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root   tty1                      08:50   30:20   0.11s0.11s -bash
chirou   pts/0    192.168.12.102   08:52    1:40   0.68s0.19s sshd: chir
test   pts/1    192.168.12.102   15:07    4.00s0.31s0.21s sshd: test
</code></pre>
<h3 id="linux系统中对用户的划分">Linux系统中对用户的划分</h3>
<p>Linux系统中对用户主要分为管理员root与其他用户,管理员拥有最高权限,其他用户根据管理员的分配拥有不同的权限。</p>
<p>在Linux系统中是通过UID和GID来区分不同用户和组的,用户的名称是给人类看的,系统仅仅能够识别ID这样的数字。</p>
<ul>
<li>UID:用户ID,唯一标识一个用户的数字。
<ul>
<li>在CentOS 系统中UID为0的用户为管理员root用户,CentOS 7之前UID1-499为系统用户,为了满足文件或服务启动的需要,一般不能登录,UID500之后为普通用户。CentOS 7中UID1-200为运行系统自带进程的系统用户,201-999为安装程序的系统用户。1000+为普通用户。</li>
</ul>
</li>
<li>GID:组ID,唯一标识一个组的数字。</li>
</ul>
<p>每个用户可以属于多个组,用户必须有一个主组,其他为用户的附加组。每个组里可以包含多个用户。</p>
<h3 id="用户相关文件">用户相关文件</h3>
<table>
<thead>
<tr>
<th style="text-align: center">文件</th>
<th style="text-align: center">作用</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">/etc/passwd</td>
<td style="text-align: center">记录用户账号信息</td>
</tr>
<tr>
<td style="text-align: center">/etc/shadow</td>
<td style="text-align: center">记录用户密码信息</td>
</tr>
<tr>
<td style="text-align: center">/etc/group</td>
<td style="text-align: center">记录组信息</td>
</tr>
<tr>
<td style="text-align: center">/etc/gshadow</td>
<td style="text-align: center">记录组密码信息</td>
</tr>
<tr>
<td style="text-align: center">/home/USER_NAME</td>
<td style="text-align: center">用户家目录</td>
</tr>
<tr>
<td style="text-align: center">/etc/skel</td>
<td style="text-align: center">用户家目录的模板目录</td>
</tr>
<tr>
<td style="text-align: center">/var/spool/mail/USER_NAME</td>
<td style="text-align: center">邮箱文件</td>
</tr>
</tbody>
</table>
<ul>
<li>
<p>/etc/passwd以冒号:分隔,分为七个字段</p>
<ul>
<li>第一字段:用户名</li>
<li>第二字段:密码占位符,</li>
<li>第三字段:UID</li>
<li>第四字段:GID</li>
<li>第五字段:用户注释信息</li>
<li>第六字段:用户家目录</li>
<li>第七字段:用户的登录SHELL</li>
</ul>
<pre><code class="language-bash">$ head /etc/passwd
root:x:0:0:root:/root:/bin/bash
</code></pre>
</li>
<li>
<p>/etc/shadow以冒号:分隔,分为九个字段</p>
<ul>
<li>第一字段:用户名</li>
<li>第二字段:加密后的密码,!!表示没有密码</li>
<li>第三字段:最近一次更改密码的时间,记录的是当前时间距离Unix元年的天数</li>
<li>第四字段:密码最少使用天数,0表示无限制</li>
<li>第五字段:密码最长使用天数,99999表示无限制。</li>
<li>第六字段:密码距离过期天数的预警时间。</li>
<li>第七字段:密码过期后的宽恕时间,在此时间内用户可以更改密码,过了此时间后系统会禁用此用户,不能再登录。</li>
<li>第八字段:账号过期时间,如果值为空则表示永久可用。</li>
<li>第九字段:保留字段,未使用。</li>
</ul>
<pre><code class="language-bash"># head -1 /etc/shadow
root:$6$.zQAsXpp$3cwrj/2R1rtf.NuMd.PdJX3Wvh8.uRl3z9BvSVzSjiID9jPFIV/ItSX48oaiaknZ1qKhTybiq8vp7DQixET9F0:18554:0:99999:7:::
</code></pre>
</li>
<li>
<p>/etc/group:组信息文件,分成四个字段</p>
<ul>
<li>第一字段:组名称。</li>
<li>第二字段:组密码占位符。</li>
<li>第三字段:GID。</li>
<li>第四字段:显示该组作为哪个用户的附加组,多个用逗号分隔。</li>
</ul>
<pre><code class="language-bash"># head -1 /etc/group
root:x:0:
</code></pre>
</li>
<li>
<p>/etc/gshadow:组密码文件,分为四段</p>
<ul>
<li>第一段:组名称。</li>
<li>第二段:组密码,如果是空或者!表示没有密码。</li>
<li>第三段:用户组管理者,空表示没有管理者,如果有多个用逗号分隔。</li>
<li>第四段:显示该用户组作为哪个用户的附加组,若有多个用逗号分隔。</li>
</ul>
<pre><code class="language-bash"># head -1 /etc/gshadow
root:::
</code></pre>
</li>
<li>
<p>/etc/skel:存放用户家目录模板文件,新用户家目录内的初识内容从该目录内复制。</p>
</li>
</ul>
<pre><code class="language-bash">$ ll -a /etc/skel
总用量 24
drwxr-xr-x.   3 root root   78 10月6 10:14 .
drwxr-xr-x. 146 root root 8192 10月 28 20:31 ..
-rw-r--r--.   1 root root   18 4月   1 2020 .bash_logout
-rw-r--r--.   1 root root193 4月   1 2020 .bash_profile
-rw-r--r--.   1 root root231 4月   1 2020 .bashrc
drwxr-xr-x.   4 root root   39 10月6 10:14 .mozilla
</code></pre>
<ul>
<li>/var/spool/mail/:用户邮箱文件所在目录</li>
</ul>
<pre><code class="language-bash">$ ll /var/spool/mail
总用量 0
-rw-rw----. 1 chirou mail 0 10月 27 19:45 chirou
-rw-------. 1 root   mail 0 10月 20 21:02 root
-rw-rw----. 1 rpc    mail 0 10月6 10:14 rpc
-rw-rw----. 1 test   mail 0 9月26 10:46 test
</code></pre>
<h3 id="用户管理命令">用户管理命令</h3>
<h4 id="创建用户useradd">创建用户:useradd</h4>
<ul>
<li>-u:指定UID</li>
<li>-g:指定主组</li>
<li>-G:指定附加组,附加组必须事先存在。</li>
<li>-d:指定家目录</li>
<li>-c:指定备注信息</li>
<li>-s:指定shell</li>
<li>-e:修改过期时间</li>
<li>-M:不创建家目录</li>
<li>-r:创建系统账号,UID处于系统用户范围内,默认没有家目录</li>
</ul>
<pre><code class="language-bash">$ useradd chirou
# 默认会创建一个与用户名同名的组,组员为该用户,会在/home目录下创建一个与用户同名的目录,shell为/bin/bash,UID为1000+,永不过期,/var/spool/mail目录下会创建一个与用户名相同的邮箱文件。家目录中会存在.bash_*环境变量相关的文件,这些文件默认从/etc/skel目录中拷贝。这个默认拷贝环境变量位置是由/etc/default/useradd和/etc/login.defs两个配置文件定义的。

# 当普通用户在家目录下执行了rm -rf *命令,下次登录系统时会出现-bash-4.1$这样的提示符,解决方法就是在/etc/skel目录中拷贝需要的环境变量文件,然后重新登录即可。
cp -a /etc/skel/.bash* ./
</code></pre>
<h4 id="设置密码passwd">设置密码:passwd</h4>
<p>普通用户只能修改自己的密码,root用户可以修改所有用户密码。</p>
<pre><code class="language-bash">passwd chirou
# 执行完后即成功创建了一个普通用户,可以正常登录使用。

echo “密码” | passwd --stdin 用户名
# 非交互式设置密码,常用于批量添加用户。

# 可用系统内置变量生成随机字符来充当密码
echo $RANDOM | md5sum | cut -c 1-10
</code></pre>
<h3 id="手动创建用户">手动创建用户</h3>
<p>useradd和passwd命令创建用户本质上也是在修改账户相关文件,那么我们也可以通过直接编辑这些文件来创建一个新用户。下述操作都需要root权限才能进行。</p>
<ul>
<li>1、首先编辑/etc/passwd文件,添加新的一行,指定用户名、UID、GID、家目录和shell。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205500577-1936414500.png" alt="" loading="lazy"></p>
<ul>
<li>2、编辑/etc/shadow文件,在最下面添加新的一行,指定与上面相同的用户名,添加秘文密码。在shadow文件中密码都是以秘文形式存放,可以通过opensslpasswd命令生成加密的密码,然后粘贴到密码字段即可。/etc/shadow的权限是000,修改后需要在末行模式下执行:wq!来强制保存。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205529318-375683171.png" alt="" loading="lazy"></p>
<ul>
<li>3、编辑/etc/group文件,添加一行。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205555335-435219907.png" alt="" loading="lazy"></p>
<ul>
<li>4、编辑/etc/gshadow文件。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205617357-272607178.png" alt="" loading="lazy"></p>
<ul>
<li>5、在/home目录中创建与用户名同名的目录。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205636490-625025615.png" alt="" loading="lazy"></p>
<ul>
<li>6、将/etc/skel中的文件复制至该目录中,并修改属性。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205652786-1496410014.png" alt="" loading="lazy"></p>
<ul>
<li>7、创建邮箱文件并修改属性。</li>
</ul>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205710787-139855571.png" alt="" loading="lazy"></p>
<p>此时新用户创建完成,可以正常登录系统。</p>
<p><img src="https://img2020.cnblogs.com/blog/2102222/202010/2102222-20201028205733464-1852582669.png" alt="" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/ChiRou/p/13893417.html
頁: [1]
查看完整版本: CentOS 7创建用户两种方式