⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0410accountmanager.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		同样还是使用冒号『:』来作为栏位的分隔字元,而且你会发现,这个档案几乎与 /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>&lt;==预设的群组</span>
HOME=/home		<span class=term_note>&lt;==预设的家目录所在目录</span>
INACTIVE=-1		<span class=term_note>&lt;==在 /etc/shadow 内的第 7 栏</span>
EXPIRE=			<span class=term_note>&lt;==在 /etc/shadow 内的第 8 栏</span>
SHELL=/bin/bash		<span class=term_note>&lt;==预设的 shell</span>
SKEL=/etc/skel		<span class=term_note>&lt;==使用者家目录的内容资料参考目录</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>&lt;==使用者预设邮件信箱放置目录</span>

PASS_MAX_DAYS   99999		<span class=term_note>&lt;==/etc/shadow 内的第 5 栏</span>
PASS_MIN_DAYS   0		<span class=term_note>&lt;==/etc/shadow 内的第 4 栏</span>
PASS_MIN_LEN    5		<span class=term_note>&lt;==密码最短的字元长度,建议可以改到 6 以上</span>
PASS_WARN_AGE   7		<span class=term_note>&lt;==/etc/shadow 内的第 6 栏</span>

UID_MIN         500	<span class=term_note>&lt;==使用者最小的 UID,意即小于 500 的 UID 为系统保留</span>
UID_MAX       60000	<span class=term_note>&lt;==使用者能够用的最大 UID</span>
GID_MIN         500	<span class=term_note>&lt;==使用者自订群组的最小 GID,小于 500 为系统保留</span>
GID_MAX       60000	<span class=term_note>&lt;==使用者自订群组的最大 GID</span>

CREATE_HOME     yes	<span class=term_note>&lt;==在不加 -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 + -