一、前言:本篇介绍用户和组操作的15个命令,在介绍之前我们先来看看几个示例
1、先进入到etc目录下,找到passwd文件,用vi编辑器查看:
# vi /etc/passwd
解释:这里面存放着Linux系统里所有的用户信息,每当添加完用户后,这里面都会写入相应的数据,相当于我们windows的用户管理界面。拿第一行数据举例:
root:x:1:0:root:/root:/bin/bash
第一个root相当于用户名;
x相当于密码,密码都会用x代替;
第一个0为ID号,这个号码是唯一的号码,不会与其他的重复;
第二个0为组的ID号,这个号码也是唯一的,不会与其他重复;
第二个root为注释或者全称,详细介绍该用户的作用;
第三个root为自家目录,当用户登录系统的时候。默认登录到哪个目录;
/bin/bash 为命令解释器,当用户使用该用户登录时,就需要使用到/bin/bash这个命令解释器。可以看一下其他用户的命令解释器,是/sbin/nologin,也就是说这个用户是存在的,但是不允许登录的。
2、这里就有疑问了,x这个密码到底是存在哪里呢?
可以在etc目录下查看shadow这个文件
# vi /etc/shadow
解释:root为用户,第二项为加密后的面,命名我们的密码很简单123456,但是在这里加密以后却是这么长,
3、查看一下组信息
# vi /etc/group
解释:这里面大致情况和passwd的差不多。主要是最后一个冒号后面,会显示在这个组下面有哪些用户,由于我还没有添加,所以这里是没有显示的。
组密码的保存地点保存在/etc/gshadow
# vi /etc/gshaow
二、科普:
1、Linux 用户:Username/UID
管理员:root,0
普通用户:1-60000
系统用户:1-499, 1-999
登录用户:500+,1000+
2、Linux组:Groupname/GID
管理员组:root,0
普通组:
系统组:1-499,1-999
普通组:500+,1000+
3、Linux安全上下文:
运行中的程序:进程(process)
进程所能够访问的所有资源的权限取决于进程的发起者的身份
4、Linux组的类别:
用户的基本组(主组):组名同用户名,且仅包含一个用户:私有组
用户的附加组(额外组):
5、Linux用户和组相关的配置文件:
# vi
/etc/passwd --用户及其属性信息
/etc/group --组及其属性信息
/etc/shadow --用户密码及其相关属性
/etc/gshadow --组密码及其相关属性
详解:
(1)/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
用户名:密码:UID:GID:注示:主目录:默认shell
(2)/etc/group:
group_name:password:GID:user_list
组名:组密码:GID:以当前组为附加组的用户列表(分隔符为逗号)
(3)/etc/gshadow:
组名:组密码:组管理员:附加成员
(4)/etc/login.defs:
此文件是当创建用户时的一些默认规划
(5)/etc/default/useradd:
此文件是通过useradd 添加用户时的规则
(6)/etc/skel:
此目录是存放用户初始环境配置文件的目录
三、命令详解
1.useradd
【命令作用】
用户创建
密码设置# passwd ***
删除账号# userdel ***
【命令语法】
useradd [参数] [选项]
【常用选项】
-u --指定用户id
-g --指定用户所属基本组,可为组名,也可以GID;组必须事先存在
-c --"COMMENT"用户的注释信息
-d /PATH/TO/HOME_DIR --以指定的路径为家目录
-M --不创建用户家目录
-s(SHELL) --指明用户的默认shell程序,可用列表在/etc/shells文件中 # /sbin/nologin
-G(GROUP1[,GROUP2,...[,GROUPN]]]) --为用户指明附加组;组必须事先存在
-r --创建系统用户
-u UID-o --创建相同UID号的用户
【参数说明】
要创建的用户名
【命令示例】
创建一个新的用户qwe,并设置ID为666
# useradd qwe -u 666
查看是否创建用户qwe
# vi /etc/passwd
qwe用户存在
2.groupadd
【命令作用】
创建一个新的工作组
【命令语法】
groupadd [选项] [参数]
【常用选项】
-g --指明新键工作组的id
-r --创建系统组
-g GID -o --创建相同的GID号的组
【参数说明】
指定新建工作组的组名
【命令示例】
建立一个名为check的新的系统工作组
# groupadd -r check
查看是否创建check组
# vi /etc/group
check组存在
3.passwd【命令作用】
为用户账户设置或更改密码
系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
【命令语法】
passwd [选项] [参数]
【常用选项】
-d --删除指定用户的密码
-l --所动指定用户
-S --查看指定用户的状态
-u --解锁指定用户
-n mindays --指定最短使用期限
-x maxdays --最大使用期限
-w warndays --提前多少天开始警告
-w warndays --提前多少天开始警告
--stdin --从标准输入接收用户密码;
# echo "PASSWORD" | passwd --stdin USERNAME
-s --列出密码的相关信息,仅有系统管理者才能使用
【参数说明】
需要设置密码的用户名
【命令示例】
用标准输入为用户qwe设置一个新的密码
# passwd --stdin qwe
4.gpasswd
【命令作用】
组密码(组成员管理)
【命令语法】
gpasswd [选项] [参数]
【常用选项】
-a user --将user添加至指定组中
-d user --删除用户user的以前组为组名的附加组
-M user1,user2... --将多个用户添加至指定组中
-A user1,user2... --设置有管理权限的用户列表
-R --限制用户登入组,只有组中的成员才可以用newgrp加入该组
【参数说明】
指定要管理的工作组
【命令示例】
(1)将用户qwe加入check组中
# gpasswd -a qwe check
(2)设置qwe是check组里的管理员
# gpasswd -A qwecheck
5.usermod
【命令作用】
用户属性修改
【命令语法】
usermod [选项] [参数]
【常用选项】
-u --修改用户id(新id)
-g --修改用户所属的群组(新基本组)
-G --修改用户所属的附加群组(新附加组,原来的附加组将会被覆盖,若保留原有,则要同时使用 -a 选项,表示append)
-s --新的默认SHELL
-c --新的注释信息
-d --新的家目录,必须事先存在,原有家目录中文件不会同时移动至新的家目录
-L --lock指定用户
-l(login name) --新的名字
-U --unlock 指定用户
-e YYYY-MM-DD --指明用户账号过期日期
【参数说明】
指定要修改信息的用户登录名
【命令示例】
(1)修改qwe用户名为abc
# usermod -l abc qwe
# vi /etc/passwd
(2)锁定用户abc,解锁对用户abc的锁定
# usermod -L abc
# usermod -U abc
6.groupmod
【命令作用】
修改工作组名和id名称
【命令语法】
groupmod [选项] [参数]
【常用选项】
-n --修改工作组名
-g --修改工作组id
【参数说明】
指定要修改的工作组的组名
【命令示例】
(1)将check组改名为doc
# groupmod -n doc check
(2)修改doc组的组ID为333
# groupmod -g 333 doc
7.userdel
【命令作用】
删除用户
【命令语法】
userdel [选项] [参数]
【常用选项】
-r --删除用户家目录
-f --强制删除用户,即使用户当前已经登录
【参数说明】
要删除的用户名
【命令示例】
删除用户abc及其家目录
# userdel -r abc
8.groupdel【命令作用】
删除指定的工作组
【命令语法】
groupdel [参数]
【常用选项】
无
【参数说明】
要删除的工作组名
【命令示例】
删除doc工作组
# groupdel doc
9.id【命令作用】
显示真实和有效的 UID 和 GID
【命令语法】
id [选项] [用户名称]
【常用选项】
无
【参数说明】
需要查询的用户和组
【命令示例】
显示root的UID和GID
id root
10.newgrp
【命令作用】
登录到新的用户组中
【命令语法】
newgrp [组名称]
【常用选项】
无
【参数说明】
切换群组的名称(必须是该组的用户)
【命令示例】
将当前用户切换到dom组中
# newgrp dom
# id
11.su【命令作用】
切换当前登录的用户(用exit返回原用户)
【命令语法】
su [选项] [参数]
【常用选项】
-c --执行完指定的指令后,即恢复原来的用户
-<参数> --切换用户时,同时变更工作目录(家目录),以及环境变量
【参数说明】
指定要切换的身份目标用户名
【命令示例】
# su -c ls root --变更帐号为root并在执行ls指令后退出变回原使用者
13.finger(gdm-plugin-fingerprint)【命令作用】
用户信息查找程序
括号中的内容为软件包的名称,这个命令默认可能没有安装对应在的软件包,需要安装软件程序包之后才有这个命令
【命令语法】
finger [选项] [参数]
【常用选项】
-l --列出该用户的账号名称,真实姓名,用户专属目录。登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容
【参数说明】
指定要查询信息的用户
【命令示例】
显示root的用户信息
# finger -l root
12.chfn【命令作用】
改变finger命令显示的信息
【命令语法】
chfn [选项] [参数]
【常用选项】
无
【参数说明】
指定要改变finger信息的用户名
【命令示例】
# chfn abc --更改abc账户的finger信息
14.chsh【命令作用】
更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置
【命令语法】
chsh [选项] [参数]
【常用选项】
-l或list-shells --列出目前系统可用的shell清单
-s<shell名称.>或--shell<shell名称> --更改系统预设的shell环境
【参数说明】
要改变默认shell的用户
【命令示例】
(1)查看系统装了哪些shell(两种方法)
第一种:
# chsh -l
第二种:
# cat /etc/shells
15.chage
【命令作用】
修改账号和密码有效期限
【命令语法】
chage [选项] 用户名
【常用选项】
-m --密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M --密码保持有效的最大天数
-w --用户密码到期前,提前收到警告信息的天数
-d --上次更改的日期
-E --账号到期的日期,过了这天,此账号将不可用
【参数说明】
需要修改的用户名
【命令示例】
# chage abc --修改abc用户的密码有效期