1 简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作。可能有很多人觉得用户管理没有意义,因为我们在使用个人计算机的时候,不管执行什么操作,都以管理员账户登录,而从来没有添加和使用过其他普通用户。这样做对个人计算机来讲问题不大,但在服务器上是行不通的。
大家想象一下,我们是一个管理团队,共同维护一组服务器,难道每个人都能够被赋予管理员权限吗?显然是不行的,因为不是所有的数据都可以对每位管理员公开,而且如果在运维团队中有某位管理员对 Linux 不熟悉,那么赋予他管理员权限的后果可能是灾难性的。
因此,越是对安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。
2 分类
2.1 用户分类
2.1.1 超级用户
用户名
:root
UID
:0(不重复)
2.2.2 普通用户
CentOS6-
UID
:1~499
CentOS7+
UID
:1~999
2.2.3 登录用户
CentOS6-
UID
:500+
CentOS7+
UID
:1000+
注意:60000+的UID通常需要用户自定义标识。
3 名字解释
名称解释
:系统将用户的名称和UID进行识别。
4 文件介绍
4.1 用户账号文件 passwd
存放用户信息,每项用 :
隔开
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名
:root
x
:口令、密码
第一个0
:用户
第二个0
:所在组
第二个root
:密码
:
:描述
/root
:用户主目录
/bin/bash
:用户缺省Shell

- passwd命令用于设置用户的认证信息,包括用户密码,密码过期时间等。
- 只有管理员可以指定用户名称。
- 一般用户只能变更自己的密码。
参数介绍:
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码,不让修改。
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
4.1.1 用户test
密码操作
4.1.1.1 更改or创建用户test
用户的密码
passwd test

当用户不存在的时候后报错
4.1.1.2 当前用户修改自己的密码
passwd

4.1.1.3 禁止test
用户修改密码
passwd -l test

4.1.1.4 清除test
用户密码
passwd -d test
注意:密码清除后,无需密码,即可登录。

4.1.1.5 查询test
用户密码
passwd -S test

4.2 用户影子文件 shadow
cat /etc/shadow

4.3 用户组账号文件 groun和gshadow
jack:$!$:???:13801:0:99999:7:*:*:
组名
:jack
$!$
:被加密的口令
13801
:创建日期与今天相隔的天数
0
:口令最短位数
99999
:用户口令
7
:到7天时提醒
*
:禁用天数
*
:过期天数
查看组文件
cat /etc/group

cat /etc/gshadow

5 创建用户 useradd
创建好的用户保存在/etc/passwd
文件中
5.1 参数
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户
5.2 实战演练
5.2.1 创建用户并加入组
在这里插入代码片
5.2.2 创建用户and设置ID
useradd charles -u 520
注:设定ID值时尽量大于500,避免冲突,因为linux安装后会建立一些特殊用户,一般 0~499
之间的值留给bin、mail这样的系统账号。
5.3 实例
创建一个用户 tom,并设置uid为556,主目录为/usr/tom,属于users组:
useradd -u 544 -d /usr/tom -g users -m tom
-m
:如果主目录不存在则自动创建
6 修改用户信息 usermod
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。
6.1 将tom用户添加到staff中
usermod -G staff tom
6.2 修改tom用户名为tom1
usermod -l tom1 tom
6.3 锁定账号tom1
usermod -L tom1
6.3 解除tom1用户锁定
usermod -U tom1
7 删除用户 userdel
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
7.1 删除用户 不删目录and文件
userdel linuxde
7.2 删除用户 目录文件一起删
记得提前备份
userdel -r linuxde
如果在 /etc/passwd
这里面删除也行,但是要注意不要失误(不建议)。
8 ubuntu 添加新普通用户
8.1 创建用户
useradd -m charles -s /bin/bash
passwd charles
adduser charles sudo
su charles
8.2 给用户授权
groups charles
usermod -aG sudo charles
visudo
-
查看charles所在的组。
-
设置charles权限为superuser。
-查看sudoer的文本文件,可以添加charles ALL=(ALL:ALL) ALL
为charles设置superuser权限。
8.3 删除用户
deluser --remove-home charles
参考文章:
https://www.cnblogs.com/ruanni/p/13922064.html
https://blog.csdn.net/thq0201/article/details/7195152
https://www.huaweicloud.com/articles/116bf3e57ee2a75bd74b121f146b5337.html
https://www.runoob.com/linux/linux-user-manage.html
http://c.biancheng.net/linux_tutorial/60/
<h2><a id="1__0"></a>1 简介</h2>
<blockquote>
<p>Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。<br />
用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作。可能有很多人觉得用户管理没有意义,因为我们在使用个人计算机的时候,不管执行什么操作,都以管理员账户登录,而从来没有添加和使用过其他普通用户。这样做对个人计算机来讲问题不大,但在服务器上是行不通的。</p>
</blockquote>
<p>大家想象一下,我们是一个管理团队,共同维护一组服务器,难道每个人都能够被赋予管理员权限吗?显然是不行的,因为不是所有的数据都可以对每位管理员公开,而且如果在运维团队中有某位管理员对 Linux 不熟悉,那么赋予他管理员权限的后果可能是灾难性的。</p>
<p>因此,越是对安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。</p>
<h2><a id="2__7"></a>2 分类</h2>
<h3><a id="21__8"></a>2.1 用户分类</h3>
<h4><a id="211__9"></a>2.1.1 超级用户</h4>
<p><code>用户名</code>:root</p>
<p><code>UID</code>:0(不重复)</p>
<h4><a id="222__15"></a>2.2.2 普通用户</h4>
<p>CentOS6-</p>
<p><code>UID</code>:1~499</p>
<p>CentOS7+</p>
<p><code>UID</code>:1~999</p>
<h4><a id="223__26"></a>2.2.3 登录用户</h4>
<p>CentOS6-</p>
<p><code>UID</code>:500+</p>
<p>CentOS7+</p>
<p><code>UID</code>:1000+</p>
<p>注意:60000+的UID通常需要用户自定义标识。</p>
<h2><a id="3__39"></a>3 名字解释</h2>
<p><code>名称解释</code>:系统将用户的名称和UID进行识别。</p>
<h2><a id="4__43"></a>4 文件介绍</h2>
<h3><a id="41__passwd_44"></a>4.1 用户账号文件 passwd</h3>
<p>存放用户信息,每项用 <code>:</code> 隔开</p>
<pre><div class="hljs"><code class="lang-shell">cat /etc/passwd
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">root:x:0:0:root:/root:/bin/bash
</code></div></pre>
<p><code>用户名</code>:root<br />
<code>x</code>:口令、密码<br />
<code>第一个0</code>:用户<br />
<code>第二个0</code>:所在组<br />
<code>第二个root</code>:密码<br />
<code>:</code>:描述<br />
<code>/root</code>:用户主目录<br />
<code>/bin/bash</code>:用户缺省Shell</p>
<p><img src="https://static.couragesteak.com/article/4a5319c9ac7c78b22e48c26ea4e52582.png" alt="faa25e58a55041bb8f7b674693023300.png" /></p>
<ol>
<li>passwd命令用于设置用户的认证信息,包括用户密码,密码过期时间等。</li>
<li>只有管理员可以指定用户名称。</li>
<li>一般用户只能变更自己的密码。</li>
</ol>
<p>参数介绍:</p>
<pre><div class="hljs"><code class="lang-shell">-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码,不让修改。
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
</code></div></pre>
<h4><a id="411_test_79"></a>4.1.1 用户<code>test</code>密码操作</h4>
<h5><a id="4111_ortest_80"></a>4.1.1.1 更改or创建用户<code>test</code>用户的密码</h5>
<pre><div class="hljs"><code class="lang-shell">passwd test
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/91dc3bbab308ea38272d822cce932ba8.png" alt="5721c3b302844b399155bae9b8a6f962.png" /></p>
<p>当用户不存在的时候后报错</p>
<h5><a id="4112__90"></a>4.1.1.2 当前用户修改自己的密码</h5>
<pre><div class="hljs"><code class="lang-shell">passwd
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/3907159d5ac2b3a76ad695a666e7c19a.png" alt="a13c5d8f910d41c7bc643b8eab5179d1.png" /></p>
<h5><a id="4113_test_97"></a>4.1.1.3 禁止<code>test</code>用户修改密码</h5>
<pre><div class="hljs"><code class="lang-shell">passwd -l test
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/9cd1a65406835a0049e91f412df6a370.png" alt="563c62b77fa1421bbe6f96740f08ca94.png" /></p>
<h5><a id="4114_test_105"></a>4.1.1.4 清除<code>test</code>用户密码</h5>
<pre><div class="hljs"><code class="lang-shell">passwd -d test
</code></div></pre>
<p>注意:密码清除后,无需密码,即可登录。</p>
<p><img src="https://static.couragesteak.com/article/7974e3ee1f187fcfb7c20fb0c4b063d3.png" alt="abdc99929d444b89962588a9df542a19.png" /></p>
<h5><a id="4115_test_113"></a>4.1.1.5 查询<code>test</code>用户密码</h5>
<pre><div class="hljs"><code class="lang-shell">passwd -S test
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/2e0b5b867f934c37cd76960e6f2c0719.png" alt="4536551cd8294be7ba100926aa887813.png" /></p>
<h3><a id="42__shadow_120"></a>4.2 用户影子文件 shadow</h3>
<pre><div class="hljs"><code class="lang-shell">cat /etc/shadow
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/af1231578bc3517393b058c95bf737fd.png" alt="7eb755f60baf487197882c3098786ea7.png" /></p>
<h3><a id="43__groungshadow_127"></a>4.3 用户组账号文件 groun和gshadow</h3>
<pre><div class="hljs"><code class="lang-shell">jack:$!$:???:13801:0:99999:7:*:*:
</code></div></pre>
<p><code>组名</code>:jack<br />
<code>$!$</code>:被加密的口令<br />
<code>13801</code>:创建日期与今天相隔的天数<br />
<code>0</code>:口令最短位数<br />
<code>99999</code>:用户口令<br />
<code>7</code>:到7天时提醒<br />
<code>*</code>:禁用天数<br />
<code>*</code>:过期天数</p>
<p><strong>查看组文件</strong></p>
<pre><div class="hljs"><code class="lang-shell">cat /etc/group
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/4b87c2578cdaf6d3e6f52edb376ba31f.png" alt="201f32c05a534e54ab02532cda5920a0.png" /></p>
<pre><div class="hljs"><code class="lang-shell">cat /etc/gshadow
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/d65a3ec0d346ed663650c455d973b8a2.png" alt="750af8a90dc64fc5bc0a04f12a8452ca.png" /></p>
<h2><a id="5__useradd_154"></a>5 创建用户 <code>useradd</code></h2>
<p>创建好的用户保存在<code>/etc/passwd</code>文件中</p>
<h3><a id="51__157"></a>5.1 参数</h3>
<pre><div class="hljs"><code class="lang-shell">-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户
</code></div></pre>
<h3><a id="52__175"></a>5.2 实战演练</h3>
<h4><a id="521__176"></a>5.2.1 创建用户并加入组</h4>
<pre><div class="hljs"><code class="lang-shell">在这里插入代码片
</code></div></pre>
<h4><a id="522_andID_182"></a>5.2.2 创建用户and设置ID</h4>
<pre><div class="hljs"><code class="lang-shell">useradd charles -u 520
</code></div></pre>
<p>注:设定ID值时尽量大于500,避免冲突,因为linux安装后会建立一些特殊用户,一般 <code>0~499</code> 之间的值留给bin、mail这样的系统账号。</p>
<h3><a id="53__190"></a>5.3 实例</h3>
<p>创建一个用户 tom,并设置uid为556,主目录为/usr/tom,属于users组:</p>
<pre><div class="hljs"><code class="lang-shell">useradd -u 544 -d /usr/tom -g users -m tom
</code></div></pre>
<p><code>-m</code>:如果主目录不存在则自动创建</p>
<h2><a id="6__usermod_198"></a>6 修改用户信息 usermod</h2>
<pre><div class="hljs"><code class="lang-shell">-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。
</code></div></pre>
<h3><a id="61_tomstaff_213"></a>6.1 将tom用户添加到staff中</h3>
<pre><div class="hljs"><code class="lang-shell">usermod -G staff tom
</code></div></pre>
<h3><a id="62_tomtom1_219"></a>6.2 修改tom用户名为tom1</h3>
<pre><div class="hljs"><code class="lang-shell">usermod -l tom1 tom
</code></div></pre>
<h3><a id="63_tom1_224"></a>6.3 锁定账号tom1</h3>
<pre><div class="hljs"><code class="lang-shell">usermod -L tom1
</code></div></pre>
<h3><a id="63_tom1_230"></a>6.3 解除tom1用户锁定</h3>
<pre><div class="hljs"><code class="lang-shell">usermod -U tom1
</code></div></pre>
<h2><a id="7__userdel_236"></a>7 删除用户 userdel</h2>
<pre><div class="hljs"><code class="lang-shell">-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
</code></div></pre>
<h3><a id="71__and_242"></a>7.1 删除用户 不删目录and文件</h3>
<pre><div class="hljs"><code class="lang-shell">userdel linuxde
</code></div></pre>
<h3><a id="72___247"></a>7.2 删除用户 目录文件一起删</h3>
<p>记得提前备份</p>
<pre><div class="hljs"><code class="lang-shell">userdel -r linuxde
</code></div></pre>
<p>如果在 <code>/etc/passwd</code> 这里面删除也行,但是要注意不要失误(不建议)。</p>
<h2><a id="8_ubuntu__255"></a>8 ubuntu 添加新普通用户</h2>
<h3><a id="81__257"></a>8.1 创建用户</h3>
<pre><code class="lang-">useradd -m charles -s /bin/bash
passwd charles
adduser charles sudo
su charles
</code></pre>
<ul>
<li>
<p>创建charles用户,使用<code>/bin/bash</code>作为<code>shell</code></p>
</li>
<li>
<p>设置密码</p>
</li>
<li>
<p>添加管理员权限</p>
</li>
<li>
<p>切换登录用户charles</p>
</li>
</ul>
<h3><a id="82__272"></a>8.2 给用户授权</h3>
<pre><code class="lang-">groups charles
usermod -aG sudo charles
visudo
</code></pre>
<ul>
<li>
<p>查看charles所在的组。</p>
</li>
<li>
<p>设置charles权限为superuser。</p>
</li>
</ul>
<p>-查看sudoer的文本文件,可以添加<code>charles ALL=(ALL:ALL) ALL</code>为charles设置superuser权限。</p>
<h3><a id="83__285"></a>8.3 删除用户</h3>
<pre><code class="lang-">deluser --remove-home charles
</code></pre>
<p>参考文章:</p>
<p>https://www.cnblogs.com/ruanni/p/13922064.html</p>
<p>https://blog.csdn.net/thq0201/article/details/7195152</p>
<p>https://www.huaweicloud.com/articles/116bf3e57ee2a75bd74b121f146b5337.html</p>
<p>https://www.runoob.com/linux/linux-user-manage.html</p>
<p>http://c.biancheng.net/linux_tutorial/60/</p>
留言