Linux学习笔记(四)账号管理之管理用户账号
1.管理用户账号:每一个登录Linux操作系统的用户在系统中都应该有其对应的注册账号,这些账号记录了用户的信息,如用户名、登录口令、用户目录所在位置、所用的shell、建立时间、权限等信息。其中用户账号管理包括:添加用户、设置口令、删除用户,修改用户属性和权限等。因此,账号管理是系统管理员重要的日常工作之一。
(1).添加用户:其中超级用户的账号在Linux系统安装时已经创建了,即root用户,但超级用户的权限太大不适合给普通用户使用,否则会对Linux系统安全造成威胁;因此,所有要使用Linux操作系统管理资源的普通用户都要向超级用户root或拥有超级用户权限的系统管理员申请一个用户账号,以便登录Linux系统。这对于超级用户root或系统管理员来说,就是添加用户。
添加用户的方式可以在字符终端下,也可以在图形界面下,我只会介绍在字符终端下的添加用户方法,这种方式也有很多方法,如使用终端命令、修改配置文件、编写shell脚本程序等。
字符终端下的添加用户方法的第一种方式:
— — 终端命令添加用户:useradd命令,简单用法:useradd 用户名。基本用法:useradd [-d home_dir] [-s shell] 用户名,其中用括号括起来可选的,其中 -d home_dir 指定用户工作目录,-s shell 指定的是使用什么shell。
使用这个命令所建立的用户账号信息实际上保存在 /etc/passwd 文本文件上,而加密的用户账号信息则保存在 /etc/shadow文件上。默认的用户工作主目录是 /home/用户名,即Linux系统会自动在 /home目录下创建一个以用户名命名的目录作为用户的工作主目录,并复制初始化配置文件到该目录。其中系统也默认为每个用户建立一个组群并加入到系统中,而组群是放在 /etc/group下的。接下来我们来演示一下这个命令:
如果还想理解其它用法,即其它的选项参数,可以使用man useradd命令。
这样就添加了一个xg用户,但是没有设置口令,怎么知道它是否添加成功呢?可以用下面的方式看是否添加成功:
— — 我们可以分别输入命令:gedit /etc/passwd,gedit /etc/shadow,打开etc目录下的passd文件和shadow文件,看是否把用户的账号信息保存到里面去了:
当输入gedit /etc/passwd命令时,按下回车键,如下图所示:
从上图的红色框框处,可以看到我们已经把xg用户的账号信息保存到了passwd文件下。
当我们输入gedit /etc/shadow命令时,按下回车键,如下图所示:
从上图我们可以看出系统已经把xg用户的账号信息加密保存到了shadow文件下。
而默认的用户工作主目录是 /home/用户名,那我们可以看下home目录下是否有xg这个目录,输入下图的两行命令,可看到:
xg用户的工作目录已经存在了。
其中系统也默认为每个用户建立一个组群并加入到系统中,而组群是放在 /etc/group下的,所以我们输入命令 gedit /etc/group,打开group文件,如下图所示:
字符终端下的添加用户方法的第二种方式:
— — 修改文件添加用户:用useradd命令添加用户,实际上就是向 /etc/passwd、/etc/shadow、/etc/group文件中写入用户账号的信息。所以,我们可以用修改文件的方式添加用户,这个方法就是利用任意一个文本编辑器直接打开 /etc 目录下的 passwd 等文件进行修改,其中passwd文件的每一行有7个域、且由冒号分隔,每行就是一个用户的账号信息。若要添加用户,只要在该文件写入相应的条目即可。但是这种方法不会自动创建用户工作目录,不会自动修改shadow,group文件,也不会自动创建用户工作目录,所以超级用户或系统管理员一定要记住为新用户创建相应的工作目录,并把一些必要的用户配置文件复制到该用户目录下,还要按照规则修改shadow呵呵group文件。
注:采用这种方法必须对Linux系统非常熟悉,否则很容易漏掉一些操作,造成用户账号中数据的丢失或者无法正常使用,所以,对于像我这样的新手是不敢随便采用的,这里,建议初学者慎重采用这个方法。
但是我们可以了解下这个passwd文件的格式,格式如下:
Login name:passwd:user ID:group ID:user full name:home directory:login shell
其中每个域的含义如下:
Login name:用户向系统登录时输入的用户名。用户名的命名规则为:只能由字母、数字、下划线组成,而且只能以字母开头,虽然下划线开始也能创建用户账号,但系统不允许登录;用户名的长度不超过32个字符,否则提示为无效的用户名;同一个系统用户名必须是唯一的。
passwd:为了用户的安全,Linux系统对用户的口令和其他信息进行加密处理,并保存在/etc/shadow文件中,因此在passwd文件的passwd域不会明文显示口令,只是以字符"x"表示该用户存在登录口令。即口令是放在shadow文件中的,并且加密,在shadow文件显示的为密文。
user ID:是系统内部识别用户的标识,即用户ID,Linux把用户分为超级用户和普通用户,一般系统用户由系统进程、服务守护进程和超级用户等组成,分配给它们的用户ID一般为0~99,普通用户的ID默认从500开始递增,最大可以到60000。除非在使用useradd命令时加了 -r 这个参数选项,即useradd -r 用户名,建立一个超级用户,否则都为普通用户。
group ID:用户所属组群的标识,默认值都在500~60000之间。
注:其中user ID和group ID的默认值都放在etc目录下的login.defs文件中。
user full name:用户全名。该域实际上是对登录用户名的注释,该域的内容会被加到电子邮箱地址的前面。
home directory:该域是创建用户账号时设定的用户工作目录,用户在登录系统时自动进入该目录,用户建立的文件一般默认保存在该目录下。
login shell:该域是创建用户账号时设定用户所使用的shell。所谓shell,就是用户与操作系统内核之间的接口,是系统命令的解释程序。在LInux系统中有多种shell,如bash、sh、csh、ksh等。系统默认的shell为bash。
其中shadow文件的格式与passwd文件格式是一样的,只不过除了用户名域没有加密外其它各域都是加密保存的。
— — 我们可以用命令查看etc目录下的passwd文件和shadow文件的区别,其中以root超级用户为例:
输入命令 gedit /etc/passwd ,如下图所示:
输入命令 gedit /etc/shadow ,如下图所示:
从上面的图片可以看到,文件的每行有7个域,每个域之间用:分隔;每行就是一个完整用户账号信息,如root这个用户来说,在passwd文件中,它的用户ID和组ID都是0,因为属于系统用户,密码用"x"表示,超级用户的工作目录为/root,用户全名也为root,使用的shell为/bin目录下的bash;在shadow文件中,用户名为root,密码为密文,除用户名外都用密文来加密了用户账号的信息。
这里在介绍一下/etc目录的group文件,输入命令 gedit /etc/group,如下图所示:
— — 总结:上面通过修改文件添加用户这种方式,建议像我一样的新手慎重采用,其中那三个文件,/etc目录下passwd这个文件叫做口令名字,其访问权限普通用户都可以访问,/etc目录下的shadow文件叫做影子文件,其访问权限,只有系统用户可以访问,并且文件权限只能读,不能写,要写入东西的话要用vi编辑器,/etc目录下的group文件叫做组文件,访问权限,也是普通用户可以访问的。
(2).设置口令:上面我们使用useradd命令添加一个xg用户,并没为这个用户设置口令,如果没设置的话,就无法用这个用户登录上我们的Linux系统,因为系统时暂时禁止你使用该账号,所以必须为用户设置口令。
— — 口令设置的规则:口令设置的好坏,直接关系到用户账号是否容易被入侵、用户工作目录的资料是否安全,如果是超级用户root的话,则还关系到整个系统的安全。所以我们必须要设置一个好口令,使得系统安全,其中必须要注意一些内容:
口令必须忌用:用户名字或宠物名。容易与用户相关联的任何东西,如生日,电话,住址等。字典中的单词。上面任何一个的倒序,与用户有关联的东西的倒序容易被猜中,如电话。
口令易用:有足够长度,每增长一位,被破解的可能性会降低几个数量级。用混有数字,特定字符的组合。用一些自己容易记住,但是别人又难以猜到的数字、字符组合。用输入较快的数字、特定字符的组合。不要记录下密码,比如记录密码在你系统的文件等。经常改变密码。
— — 口令设置命令:设置口令的命令是passwd,如果要用该命令为其他用户设置口令,则只能由超级用户或有超级用户权限的系统管理员完成;如果是普通用户,会受到权限的限制,则只能改变该用户自己的口令。
其基本用法为:passwd [用户名],其基本用法中用户名省略的话,则设置的是当前已经登录用户的口令;如果设置的是新添加的用户,则必须指定该用户的用户名,如为上面我们所添加的用户xg设置口令的话,可以输入命令passwd xg,如下图所示:
输入你的新口令,再重新输入一次,就设置成功了。
如果想知道了解更多关于passwd命令的话,可以输入man passwd命令,看其中的选项参数,有什么作用等。
(3).修改用户属性:用户有时会提出修改登录得用户名、加入别的组群或使用其他的shell等要求,作为系统管理员要能根据用户合理的要求作出必要的修改,以便用户能方便,有效地使用系统。修改用户属性可以采用终端命令方式,也可以采用修改配置文件的方式。
— — 终端命令修改:修改用户属性的终端命令是usermod,该命令除了能修改用户属性外,还可以对用户账号口令进行加/解锁处理。
注:如果某个用户已经登录系统,则不允许用usermod修改这个用户的属性。
usermod -d home_dir [-m]:指定用户新的工作目录,如果采用 -m 的参数选项的话,则用户当前工作目录中的内容将一道新的工作目录;若新目录不存在,则自动建立它。
usermod -l login_name:修改用户登录的用户名。
usermod -L 用户名:锁定用户账号口令,使口令无效。
usermod -U 用户名:解除用户账号口令锁定,使口令生效。
如果想知道更多参数选项,可以使用man usermod命令。
— — 修改文件:与上面用修改文件添加用户的原理一样,所以直接修改 /etc/passwd 和 /etc/shadow 文件中该用户的账号信息行也可以达到修改用户属性的目的。如果修改了用户登录名,则在shadow文件所对应的用户名一定要修改。如果再手动更名用户工作目录,则就完整地修改了该用户的属性。其步骤如下:
~修改/etc/passwd和/etc/shadow文件中该用户属性对应的域。
~要用mv命令更名该用户的工作目录。
~还要在/etc/group文件中修改该用户组对应的行。
(4).删除用户:如果某个用户已永久地从系统撤离,则为了系统的安全,系统管理员要及时删除该用户账号和相关的目录与文件。如果只是暂时撤离,则只要使用passwd -l login_name这个命令把该用户账号锁住,或者在passwd文件的口令域的x字符前加上星号*或感叹号!即可。其中删除用户也有终端命令方式删除和修改文件方式删除。
— — 终端命令删除:使用userdel命令删除用户账号,这个命令包含两部分的操作。
第一,删除 /etc/passwd 、/etc/shadow、/etc/group这三个文件的用户账号信息。
第二,删除对应于该账号的系统配置文件和该账号的工作目录。
上面这两步,可以一起进行,也可以分开完成,取决于使用命令的参数选项。
其基本用法:userdel [-r] login_name,其中login_name为用户登录系统的用户名。
命令选项 -r 表示递归删除该用户的工作目录及该目录下的所有子目录和文件。如果选项 -r 不指定,则只是删除了该用户的账号信息,而保留该用户的工作目录以及该工作目录下的所有子目录和文件;除非该用户的工作目录要保留给其他用户使用,否则最好带上选项 -r 把上面的两步全部进行。
注:如果某个用户当前已经登录了系统,则不允许用userdel这个命令删除这个用户的账号。
— — 修改文件属性:由于用户的账号信息是记录在 /etc/passwd 和 /etc/shadow 文件中的,所以直接删除这个文件中该用户的账号信息行也可以达到删除用户的目的。如果再手动删除用户的工作目录,则完整地删除了该用户。其步骤如下:
~删除 /etc/passwd 和 /etc/shadow 文件中该用户对应的行。
~用rm -fr命令强制递归地删除该用户的工作目录以及目录下的所有子目录和文件。
~还要在 /etc/group文件中删除该用户组对应的行。
(5).成批添加用户和成批修改口令:提供了一个新的添加用户的命令newusers,利用它可以实现快速、便捷地成批添加用户;可以从一个文本文件中读取用户名和明文口令时,并用这些信息去更新若干已存在的用户组群或者建立一些新的用户。其中还有一个命令为chpasswd,是从标准输入设备上读取由用户名和口令组成的文件,并用这些信息去更新已存在的用户组群。
注:想理解这两个命令的话,可以使用man newusers和man chpasswd命令来查看。
2.以上内容仅供大家学习参考,写得不好,请见谅,如有错误,请指出,谢谢!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。