用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
添加用户:
useradd 选项 用户名
参数:
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项
- -g 用户组
- -G 附加组
- -s 登录shell
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是/bin/sh
,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
删除用户
# userdel -r sam 常用的选项是 -r,它的作用是把用户的主目录一起删除。
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
修改账号
usermod:
参数与添加用户一多一个:
有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
用户账号刚创建时没有口令,但是被系统锁定,无法使用
用户口令管理
指定和修改用户口令的Shell命令是passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为: 超级用户为用户指定口令时,就不需要知道原口令。
passwd 选项 用户名
参数;
- -l 锁定口令,即禁用账号。 -l(lock) 选项锁定某一用户
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
用户组管理:
每个用户都有一个用户组:创建用户同时创建用户组
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
groupadd 选项 用户组
-g GID 指定新用户组的组标识号(GID)
-o 可以有相同GID
groupadd group1 不指定GID则在原来最大上加一
# groupadd -g 101 group2 指定GID
删除用户组:
groupdel 用户组
修改用户组:
groupmod 选项 用户组 -g -o
# groupmod –g 10000 -n group3 group2 此命令将组group2的标识号改为10000,组名修改为group3。
,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。切换 当前所在的用户组以便拥有相应权限
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组
1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
sam:x:200:50:Sam san:/usr/sam:/bin/sh 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
1)"用户名"是代表用户账号的字符串。
2)“口令”一些系统中,存放着加密后的用户口令字。
3)“用户标识号”是一个整数,系统内部用它来标识用户。
4)“组标识号”字段记录的是用户所属的用户组。
5)“注释性描述”字段记录着用户的一些个人情况。
6)“主目录”,也就是用户的起始工作目录。
7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
8)系统中有一类用户称为伪用户(pseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
常见的伪用户如下所示:
伪 用 户 含 义 (拥有特殊文件) bin 拥有可执行的用户命令文件 sys 拥有系统文件 adm 拥有帐户文件 uucp UUCP使用 lp lp或lpd子系统使用 nobody NFS使用
用户组的所有信息都存放在/etc/group文件中
bin::2:root,bin 组名:口令:组标识号:组内用户列表
组名:口令:组标识号:组内用户列表
批量添加用户:
。Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下:
(1)先编辑一个文本用户文件。
每一列按照/etc/passwd
密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:
user001::600:100:user:/home/user001:/bin/bash user002::601:100:user:/home/user002:/bin/bash user003::602:100:user:/home/user003:/bin/bash
以root身份执行命令 /usr/sbin/newusers
newusers < user.txt
将 /etc/shadow
产生的 shadow
密码解码,然后回写到 /etc/passwd
中,并将/etc/shadow
的shadow
密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password
功能。
# pwunconv
编辑每个用户的密码对照文件。
范例文件 passwd.txt
内容如下:
user001:密码 user002:密码
以root身份执行命令 /usr/sbin/chpasswd
。
创建用户密码,chpasswd
会将经过 /usr/bin/passwd
命令编码过的密码写入 /etc/passwd
的密码栏。
# chpasswd < passwd.txt
user001::600:100:user:/home/user001:/bin/bash
us001:X:1000:1000::/home/us001:sbin/bash
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
确定密码经编码写入/etc/passwd的密码栏后。
执行命令 /usr/sbin/pwconv
将密码编码为 shadow password
,并将结果写入 /etc/shadow
。
# pwconv