当我们管理一台Linux主机的时候,用户账号的管理是我们最经常要做的事情,今天主要就是介绍一下Linux下用户账号管理最为基本的一些操作,能够满足我们最基本的要求。
关于用户账号操作设计的最重要的几个文件有:/etc/passwd , /etc/group , /etc/shadow,/etc/gshadow 等文件,这里我们不再说这几个文件里面具体包含哪些字段,具体有什么用了,不过本人还是建议如果你真想弄明白用户账号以及用户组操作的有关问题,还是一定要去看看这几个文件的。好,我们就来单独讲一下都有哪些命令吧:
1. 新建用户 useradd
这个命令的基本用法就是 useradd [-gGsMm] 用户名
最简单的用法为:<假设新建用户hou> useradd hou
查看一下是否新建成功:grep hou /etc/passwd /etc/shadow
里面包含我们的信息则说明我们这个用户新建成功,执行完这样的操作,我们还不能利
用该账号登录,因为我们还没有设置密码,下面我们执行: passwd hou
弹出修改密码的操作,这里我们输入两次密码就可以了,这里要注意一下修改普通用户的密码,对密码的长度、格式等有很严格的要求,所以如果我们的密码不符合系统的要求是无法修改成功的,这是因为系统采用了PAM的方式对我们的密码进行检验。这里还应当注意,如果我是以root的身份来执行: passwd 后面不接任何东西,此时是修改root的密码,这里千万要注意,很可能你一不小心就将root的密码改掉。这里root修改自己的密码时也会有对密码的限制不过root用户输入两次密码后会强制生成此密码,而不用理会系统弹出的限制条件等信息。
Useradd -g 503 hou 这里的-g是为hou用户指定他的用户组。
Useradd -G group hou 这里的-G是用户hou可以加入的次要用户组
Useradd – s /bin/bash 这里的-s是设定用户hou的shell路径,默认为/bin/bash
Useradd – M hou 这里的-M表示强制不要创建主文件夹,是系统账号默认的属性
Useradd – m hou 这里的-m表示强制创建用户主文件夹。
2. 删除指定用户 userdel [-r] username
-r 在这里起的作用是连同该用户的主文件夹一起删除
执行 userdel hou 代表删除该hou用户 当我们执行id hou 或者 grep /etc/passwd /etc/shadow的时候没有信息了,但是在主目录文件夹下仍然存在名字为hou的文件夹,如果你确定要清空用户hou的文件数据就执行 userdel -r hou 吧。
3. 对创建的用户属性进行微调usermod [-gGsMm] username
当创建完一个用户后,对其属性进行微调,例如我想改变用户hou的登陆shell
Usermod -s /sbin/nologin hou
4. 创建用户组 groupadd [-g gid] [-r] groupname
-g 执行用户组的组号,例如我知道502这个号没有利用,我可以创建一个student用户组用这个gid
Groupadd -g 502 student
-r是指创建系统用户组,我们知道系统用户组的组号范围为2-500 就是这个作用
5 删除用户组 groupdel groupname
注意这个命令执行成功的前提是在该用户组内没有用户,也可以说如果在/etc/passwd文件中某个账号的GID的号码还是该用户组的号码,那么这个用户组就无法删除,必须要确认/etc/passwd内的账号没有任何人使用该用户组作初始用户组才行。
6 chage -d 0 username
为什么指出这个命令呢,如果我们作为一个管理员,在批量创建用户的时候可以先为他们制定初始密码为用户自己的名字,然后当用户第一次登陆的时候就要提醒用户将默认的密码修改为自己的密码,这不失为一种好的方式,而我们这个命令就是实现这个功能的。
一个小例子:
在account.txt中每一行有一个用户名,批量创建该文件内的所有账号,以用户名作为初始密码,而且当用户登陆时要提醒用户修改为自己的私有密码
Vi account.sh
#!/bin/bash
Export PATH=/bin:/sbin:/usr/bin:/usr/sbin
#检测account.txt是否存在
If [ ! -f account.txt] ; then
Echo “所输入的账号文件不存在,请新建账号文件,每行一个账号名称”
Exit 1
Fi
Username = $ ( cat account.txt )
For username in $username
Do
Useradd $username
Echo $username | passwd –stdin $username #设置为与账号相同的密码
Chage -d 0 $username
Done
保存后,执行sh account.sh 即可批量创建account.txt内的所有账号。
Account.txt内容如下:
Student01
Studeng02
Student03
Student04
Studeng05
………