📄 0410accountmanager.htm
字号:
同样还是使用冒号『:』来作为栏位的分隔字元,而且你会发现,这个档案几乎与 /etc/group
一模一样啊!是这样没错~不过,要注意的大概就是第二个栏位吧~第二个栏位是密码栏,
如果密码栏上面是『!』时,表示该群组不能使用密码来登入呢!
至于第四个栏位也就是支援的帐号名称棉~<ol><span class=text_import2>
<li>群组名称
<li>密码栏,同样的,开头为 ! 表示无法登入;
<li>群组管理员的帐号 (相关资讯在后续介绍)
<li>该群组的所属帐号 (与 /etc/group 内容相同!)</ol></span>
不过,就以系统的操作来说,事实上,这个 /etc/gshadow 的密码提供,最大的功能是在于『
<span class=text_import2>让那些不在群组中的成员,临时加入该群组用的。</span> 』
实际上使用的情况是很少的~而如果真的要操作这样的环境,那就得要熟悉 newgrp 的用法棉!
而且还要提供某个群组的密码出来,真是不好管理。所以,若真的想要让某个使用者利用该群组的功能时,
还是直接将对方加入群组的支援就好了!省得麻烦~
</div>
</div>
</div>
<hr><a NAME="users"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">帐号管理</span><br>
<div class=block1>
好啦!既然要管理帐号,当然是由新增与移除使用者开始的棉~底下我们就分别来谈一谈如何新增、
移除与更改使用者的相关资讯吧~<br><br>
<hr><a name="users_adduser"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>新增与移除使用者∶
useradd, 相关设定档, passwd, usermod, userdel</span><br>
<div class=block2>
要如何在 Linux 的系统新增一个使用者啊?呵呵~真是太简单了~直接利用 useradd 这个指令即可!
他的指令下达方法如下∶<br><br>
<a name=useradd></a><hr><li><span class=text_import1>useradd</span></li>
<div class=block2>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>useradd [-u UID] [-g initial_group] [-G other_group] \</span>
> <span class=term_command> -[Mm] [-c 说明栏] [-d home] [-s shell] username</span>
<span class=term_say>参数∶
-u ∶后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号;
-g ∶后面接的那个群组名称就是我们上面提到的 initial group 啦~
该 group ID (GID) 会被放置到 /etc/passwd 的第四个栏位内。
-G ∶后面接的群组名称则是这个帐号还可以支援的群组。
这个参数会修改 /etc/group 内的相关资料喔!
-M ∶强制!不要建立使用者家目录
-m ∶强制!要建立使用者家目录!
-c ∶这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设定的啦~
-d ∶指定某个目录成为家目录,而不要使用预设值;
-r ∶建立一个系统的帐号,这个帐号的 UID 会有限制 (/etc/login.defs)
-s ∶后面接一个 shell ,预设是 /bin/bash 的啦~
范例∶</span>
<span class=term_hd>范例一∶完全参考预设值建立一个使用者,名称为 vbird1</span>
[root@linux ~]# <span class=term_command>useradd vbird1</span>
[root@linux ~]# <span class=term_command>ls -l /home</span>
drwxr-xr-x 3 vbird1 vbird1 4096 Aug 30 17:33 vbird1
[root@linux ~]# <span class=term_command>grep vbird1 /etc/passwd /etc/shadow /etc/group</span>
/etc/passwd:vbird1:x:502:502::/home/vbird1:/bin/bash
/etc/shadow:vbird1:!!:13025:0:99999:7:::
/etc/group:vbird1:x:502:
<span class=term_say># 做这个范例只是想要让您了解,其实系统已经规范好了一些新增使用者时的参数了!
# 因此,当我们使用 useradd 时,系统会主动的去修改 /etc/passwd 与 /etc/shadow,
# 而这两个档案内的相关栏位参考值,则会以一些设定档的内容来规范喔!
# 同时也要注意到,使用 useradd 新增使用者时,这个使用者的 /etc/shadow
# 密码栏会是不可登入的 (以 !! 为开头),因此还需要使用 passwd
# 来给予 vbird1 密码后,才算新增完毕!</span>
<span class=term_hd>范例二∶我知道我的系统当中有个群组名称为 users ,且 UID 700 并不存在,
请用这两个参数给予 vbird2 建立一个帐号!</span>
[root@linux ~]# <span class=term_command>useradd -u 700 -g users vbird2</span>
[root@linux ~]# <span class=term_command>ls -l /home</span>
drwxr-xr-x 3 vbird2 <span class=term_write>users</span> 4096 Aug 30 17:43 vbird2
[root@linux ~]# <span class=term_command>grep vbird2 /etc/passwd /etc/shadow /etc/group</span>
/etc/passwd:vbird2:x:<span class=term_write>700:100</span>::/home/vbird2:/bin/bash
/etc/shadow:vbird2:!!:13025:0:99999:7:::
<span class=term_say># 看一下,UID 与 initial group 确实改变成我们需要的了!</span>
<span class=term_hd>范例三∶建立一个系统帐号,名称为 vbird3</span>
[root@linux ~]# <span class=term_command>usradd -r vbird3</span>
[root@linux ~]# <span class=term_command>grep vbird3 /etc/passwd /etc/shadow /etc/group</span>
/etc/passwd:vbird3:x:<span class=term_write>101:102</span>::/home/vbird3:/bin/bash
/etc/shadow:vbird3:!!:13025::::::
/etc/group:vbird3:x:102:
<span class=term_say># 很重要喔!您会发现, UID 竟然是 101 ,而 GID 怎么会是 102,
# 并且与 /etc/group 有对应的关系喔!有没有加 -r 差很多ㄟ!</span>
</pre></td></tr></table>
我的天呐!这个指令更动的档案怎么怎么多啊?对啊!你才知道啊~
这也是为啥我们说帐号管理是很复杂的啦~而且他参考的设定档才更多哩!
这个指令至少可能会更动到的地方有∶<ul><span class=text_import2><font face="细明体">
<li>/etc/passwd<li>/etc/shadow<li>/etc/group<li>/etc/gshadow<li>/home/username
</ul></span></font>
那请教一下,您有没有想过,以上述的第一个范例一好了,为何 useradd vbird1
他会主动在 /home/vbird1 建立起使用者的家目录?家目录内有什么资料且来自哪里?
为何预设使用的是 /bin/bash 这个 shell ?呵呵!这就得要说明一下 useradd
所使用的参考档案棉!<br><br>
</div>
<a name=users_adduser_env></a><hr><li><span class=text_import1>相关设定档</span></li>
<div class=block2>
我们使用 useradd 去新增使用者时,一些在 /etc/passwd 当中的值会去参考『
<span class=text_import2><font face="细明体">/etc/default/useradd</font></span> 』
,这个档案的内容有点像这样∶<br>
<table class="term"><tr><td class="term"><pre>
GROUP=100 <span class=term_note><==预设的群组</span>
HOME=/home <span class=term_note><==预设的家目录所在目录</span>
INACTIVE=-1 <span class=term_note><==在 /etc/shadow 内的第 7 栏</span>
EXPIRE= <span class=term_note><==在 /etc/shadow 内的第 8 栏</span>
SHELL=/bin/bash <span class=term_note><==预设的 shell</span>
SKEL=/etc/skel <span class=term_note><==使用者家目录的内容资料参考目录</span>
</pre></td></tr></table><br>
<span class=text_import1>关于群组的建立机制∶</span><br><br>
当我们直接使用 useradd 来新增帐号时,在预设的情况下,相关的资讯都是参考
/etc/default/useradd 这个档案内容的设定的。不过,对于使用者群组的建立机制中,
则有两种不一样的机制存在的∶<ul><span class=text_import2>
<li>以 FC4 为代表,新建使用者时,若无指定 initial group ,
则系统会主动建立一个与帐号相同的群组名称,以该群组作为使用者的 initial group;</li><br>
<li>以 SuSE 9 为代表,新建使用者时,预设不会建立新群组,而以 /etc/default/useradd
内的 GROUP 设定值作为使用者的 initial group 。</ul></span>
这应该是很容易理解才是~如果看不懂,请回去前一小节查阅一下 /etc/passwd, /etc/shadow
的相关内容架构。<br><br>
<span class=text_import1>关于使用者家目录的参考∶/etc/skel/*</span><br><br>
在这个档案当中,比较奇怪的是 SKEL 这个玩意儿了,他是啥?
其实,这个咚咚就是使用者家目录的参考目录棉~举我们的范例一为例,我利用 useradd vbird1
时,他在 /home/vbird1 这个使用者家目录内的各项资料,都是由 /etc/skel
所复制过去的~所以呢,未来如果我想要让新增使用者时,该使用者的环境变数 ~/.bashrc
就设定妥当的话,您可以到 /etc/skel/.bashrc 去编辑一下,也可以建立
/etc/skel/public_html 这个目录,那么未来新增使用者后,在他的家目录下就会有 public_html
那个目录了!这样了呼?<br><br>
<span class=text_import1>关于使用者 UID/GID 的设定∶</span><br><br>
另外,与密码还有 UID/GID 有关的设定档则是在 /etc/login.defs 里面,
这个档案有点像这样∶<br>
<table class="term"><tr><td class="term"><pre>
MAIL_DIR /var/spool/mail <span class=term_note><==使用者预设邮件信箱放置目录</span>
PASS_MAX_DAYS 99999 <span class=term_note><==/etc/shadow 内的第 5 栏</span>
PASS_MIN_DAYS 0 <span class=term_note><==/etc/shadow 内的第 4 栏</span>
PASS_MIN_LEN 5 <span class=term_note><==密码最短的字元长度,建议可以改到 6 以上</span>
PASS_WARN_AGE 7 <span class=term_note><==/etc/shadow 内的第 6 栏</span>
UID_MIN 500 <span class=term_note><==使用者最小的 UID,意即小于 500 的 UID 为系统保留</span>
UID_MAX 60000 <span class=term_note><==使用者能够用的最大 UID</span>
GID_MIN 500 <span class=term_note><==使用者自订群组的最小 GID,小于 500 为系统保留</span>
GID_MAX 60000 <span class=term_note><==使用者自订群组的最大 GID</span>
CREATE_HOME yes <span class=term_note><==在不加 -M 及 -m 时,是否主动建立使用者家目录?</span>
</pre></td></tr></table>
看到这个档案后,您应该晓得的是,为何新建的使用者的 UID 都会大于 500 了吧?
而且某些版本的 distributions (例如 SuSE server 9) 则是将 UID_MIN 设定为 1000 ,
所以,他的一般身份使用者的 UID 就会从 1000 起跳棉~这样了解吗?!<br><br>
那如果我现在新增一个使用者,这个使用者的 UID 会是多少?答案是∶『
<span class=text_import2>如果 /etc/passwd 里面的帐号所属的 UID 没有大于
/etc/login.defs 里头的 UID_MIN (在本例中是 500)时,则以 UID 500 来作为一个新帐号的 UID。
如果 /etc/passwd 已有大于 500 以上的 UID 时,则取 /etc/passwd 内最大的那个 UID + 1
作为新设帐号的 UID。</span>』而如果我是想要建立系统用的帐号,所以使用 useradd -r sysaccount
这个 -r 的参数时,就会找『比 500 小的最大的那个 UID + 1 』就是了。 ^_^<br><br>
<span class=text_import1>关于家目录预设是否建立∶</span><br><br>
另外也要注意那个 CREATE_HOME 的设定值,这个设定值也很重要。一般来说,在 FC4 的环境下,
我们使用 useradd useraccount 时,预设是会主动的建立家目录的,除非使用 -M 这个参数~
至于 SuSE server 9 这个版本来说,嘿嘿!他预设是不建立家目录的,除非使用 -m 这个参数呢!
因此,在这里鸟哥也要建议您,如果肯定要建立家目录的话,不论在那个版本,
你最好还是加上 -m 这个参数来强制建立家目录吧! ^_^<br><br>
那么您就能知道棉, useradd 这支程式在建立 Linux 上的帐号时,至少会参考∶
<ul><span class=text_import2><font face="细明体">
<li>/etc/default/useradd
<li>/etc/login.defs
<li>/etc/skel/*</ul></span></font>
这些档案,不过,最重要的其实是建立 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow
还有使用者家目录就是了~所以,如果您了解整个系统运作的状态,
也是可以手动直接修改这几个档案就是了。<br><br>
</div>
<a name=users_adduser_pw></a><hr><li><span class=text_import1>passwd</span></li>
<div class=block2>
刚刚我们讲到了,使用 useradd 建立了帐号之后,在预设的情况下,该帐号是暂时被封锁的,
也就是说,该帐号是无法登入的,你可以去瞧一瞧 /etc/shadow 内的第二个栏位就晓得棉~
那该如何是好?怕什么?直接给他设定新密码就好了嘛!对吧~设定密码就使用 passwd 棉!<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>passwd [useraccount]</span>
<span class=term_hd>范例一∶如果 root 要帮 dmtsai 修改密码时?</span>
[root@linux ~]# <span class=term_command>passwd dmtsai</span>
Changing password for user dmtsai.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -