Linux菜鸟成长日记(Linux用户管理:对用户的增、删、改、查等)
今天给大家带来的是Linux中对于用户信息的相关管理
首先介绍一下何为用户:用户就是系统使用者的身份,有超级用户和普通用户之分;而用户又属于用户组,,这些概念在面内容中会讲到。
而用户在系统中是以若干窜字符+若干个系统配置文件的形式存在的。
用户信息涉及到的系统配置文件如下:
1./etc/passwd 中储存着用户信息
这些字符从左到右分别是,用户:密码:用户ID:用户所在组ID:说明:家目录:用户使用的shell(以冒号隔开)
对应的操作字符为: -u -g -c -d -s
2./etc/shadow中储存着用户的认证信息
这些字符从左到右分别是,用户:密码:最后一次密码修改该时间:密码最短有效期:密码最长有效期:警告期:非活跃期:帐号到期日(以冒号隔开)
3./etc/group中存储着用户组信息
这些字符从左到右分别是,组名称:组密码:组id:附加组成员
3./etc/gshadow 中存储着组认证信息
/home/username 中存储着用户家目录。用户家目录,存放用户个人数据,除了root用户,其他用户的设置文件,桌面以及个人数据都是放在各自的用户目录下面的。
/etc/skel/.* 中存储着用户骨架文件,所谓骨架文件就是创建用户系统时所需的基本框架结构,和我们人体的骨骼一样,为基本的框架。这个目录和里面的东西是十分重要的。 /etc/skel/ 此目录中的所有文件或目录,在用户新建的过程中会被复制到用户的家目录里,而且这个目录中默认存在的隐藏文件是用户的默认配置文件
注:小帮手 watch -n 1 'tail -n 3 /ect/passwd /etc/group;echo ====;ls -1 /home;echo ===;ls -1 /mnt,可用来实时监控对用户信息的各种操作,简捷明了,方便理解。不明白的可以执行“watch --help 或者 man help”查看对watch的详细解释。
下面是对用户的管理:
1.用户id信息的查看
具体操作是 在shell中执行"id+参数+用户名"进行对用户信息的查看,具体参数如下
-u 查看用户 uid; -g 查看用户初始组id;
-G 用户所有所在组id; -n 显示名称而不是id数字
-a 显示用户所有信息(id+用户名,默认为显示用户所有信息)
2.用户的信息管理
(1)添加用户
在shell中执行"useradd + 用户名"对系统添加新用户。
如下添加一个名叫“linux”的新用户。用户信息如下所示,其中默认用户所在组为“linux”。
也可以按照组名添加用户
在shell下执行“useradd -g +组名+用户名” 这个组必须已经存在,若是不存在则会报错
示例如下,建立一个属于linux组并且用户名为lin的用户。用户信息显示,用户名为lin应乎所在组为linux,若是组别不存在,系统报错,显示没有这个组。
在shell下执行“useradd -G +组名+用户名” 指定用户附加组,即用户可以属于多个组
示例如下,建立一个附加组为student的用户liming,用户信息如下,用户的组有liming和student。
下面三个都是指定用户的某一固定信息建立用户,其他的用户名称和组别都按建立时给的用户名称来建立。
useradd + -c +用户名 指定用户说明来建立用户
useradd + -d +用户名 指定用户家目录来建立用户
useradd + -s +用户名 指定用户所使用的shell来建立用户(/etc/shells记录了用户能使用shell的名字)
如按照用户说明来建立一个名叫为westos的用户
可以在/etc/passwd 查看westos的详细信息
按照家目录和用户所使用的shell来建立用户与上同,均可在/etc/passwd中查看用户对应信息。
(2)删除用户
userdel -r 用户名称 -r表示删除用户信息及用户的系统配置,若不添加“-r”将会对用户删除不彻底,造成不必要的麻烦。
(3)组的建立
可以单独建立组而不建立用户,组信息可在/etc/group中查看
组的建立:groupadd+组名
组的删除groupdel+组名字
建立组名为zhangsan的组,并可在/etc/group中查看他的信息,删除后再查看就消失了。
(5)用户信息更改
usermod+参数+用户,可以做到对用户信息的修改
具体操作如下:
usermod+ "-l" +用户名 用来更改用户名称
usermod+" -u" +用户名 用来更改用户ID
usermod+ "-g" +用户名 用来更改组ID
usermod+"-G" + 用户名 用来更改附加组
usermod+"-aG"+用户名 用来添加附加组
usermod+ " -c" +用户名 用来更改说明
usermod+ "-d"+用户名 用来更改家目录 注:不管是修改家目录还是以家目录添加用户,若是家目录中间有空格字符,必须用''单引号引起来,在linux shell 中执行指令也一样空格分开两个指令,引号内为一个
usermod+ "-md"+用户名 用来更改家目录指定及家目录名称
usermod+ "-s" +用户名 用来更改shell
usermod+ "-L" +用户名 用来冻结帐号
usermod+"-U" +用户名 用来解锁
其他按照步骤来都没什么大问题,这里强调一下帐号冻结和解锁
打开shell 先新建一个名为“list”的用户,后执行“passwd”为其赋予密码。然后执行usermod -L list 用来冻结帐号,在普通用户下切换到list(小知识点linux中在shell下可利用su - 用户名来切换用户),输入密码后将会报错,显示身份验证失败。示例如下:
想要解除锁定,执行“usermod+-U +用户名”来进行解锁
3.用户权限的下放
一般而言,对系统建立新的用户正能在超级用户下进行,这是因为系统用户的权限问题,但是在某些情况下我们可以将系统管理员权限下放给普通用户,即让普通用户可以执行系统管理员的某些能力。执行如下。
在超级用户下执行"vistudo" 进入编辑/etc/sudoers模式,在100行左右进行编辑,具体设置,
以test用户为例 ,让其可执行仅超级用户可执行的对系统用户的添加删除。
获得权限用户 主机名称=(得到某用户的身份) 需要执行的命令
test hostanme=(root) /usr/sbin/useradd
注:在shell中执行hostname可查询主机名称,每个主机的名称都是不同的!!
执行visudo后的显示:
查看主机名称
进行权限下放
在切换到test用户后可输入 "sudo+useradd + 用户名"来以普通用户来进行新建用户的操作
注:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。
执行该操作后,系统会让用户输入密码。以验证用户身份,难免繁琐,可以在对/etc/sudoers 进行修改时,在需要执行的命令前加上NOPASSWD:这样就可以免密进行用户的增添啦。
用户删除也是同样的,只要将需要执行的命令后加上 ,/usr/sbin/userdel即可
4.用户认证信息的控制(passwd)
所谓用户认证信息的控制,就是对用密码信息的修改。
(1)passwd + -S + 用户名 对用户密码信息进行查看
用上 watch -n 1 passwd -S 用户认证信息进行监控,方便后续操作。
执行后显示如下:
上面的passwd -S student 查看的student用户的认证信息含义分别是
2014-07-09至今:密码默认使用天数; 0:密码最短有效期(即过多久可以下一次修改密码,默认为0);
99999:密码最长有效期; 7:密码过期前警告期;
-1:密码非活跃天数
(2)passwd +用户名 用来修改密码。
如果是超级用户执行此命令,不需要知道原来密码直接修改,没密码强度限制
如果是普通用户需要输入原始密码,并且密码不能少于8个字符,不能是纯数字,不能是纯字母
(3)passwd +-d +用户名 删除用户密码
(4)passwd+ -l+ 用户名 冻结帐号密码
passwd +-u+ 用户名 解锁用户
上述两个与usermod +-L+用户名和usermod+-U+用户名有区别,在/etc/shadow下监测可以看出。
执行watch -n1 tail - n1 /etc/shadow 注意密码一栏,即test后的那长串字符
执行usermod -L test后字符前出现一个!
执行passwd -l test 后字符前出现两个!,而usermod -U test 一次只能取消一个!,passwd -u 可一次取消完。
(5)passwd +"-e"+ 用户 更改密码默认使用天数(一个让密码快速失效的方法,用户在下次登录时必须强制修改密码)
passwd +"-x数字"+ 用户 密码最长有效期
passwd +"-n数字"+ 用户 密码最短有效期
passwd +"-w数字"+用户 密码过期前警告期
passwd+ "-i数字"+ 用户 密码非活跃天数
(6) passwd +"--stdin" +用户 非交互式更改用户密码(必须在超级用户下执行)
例如:修改test用户密码为lin,执行echo tlin | passwd --stdin test
修改用户参数: 指令为 "chage+参数+用户"
对应参数: -d 用户密码组后一次修改的时间,如果设定成0,用户登陆系统后必须修改自己的密码
-m 修改最短有效期
-M 修改最长有效期
-W 修改警告期
-I 修改用户非活跃天数
-E 修改帐号到期日,格式 -E "YYYY-MM-DD"