一、用户管理番外(1)
1、查看当前登录用户信息
who
w
2、添加用户:一定要指定所属组和描述信息
useradd [-options] name
options有如下选项
- -u:UID
- -g:缺省所属用户组GID
- -G:指定用户所属多个组
- -d:宿主目录
- -s:命令解释器shell
- -c:描述信息,如果有空格或者特殊符号要用双引号引起来
- -e:指定用户失效时间
sudo useradd -u 1001 -g 1000 -G 0 -d /home/Mary -s /bin/bash -c "project zhangsan" Mary
3、删除用户:
userdel -r [用户名] 删除用户目录
若想手工删除用户,需要同时修改下面四个文件:
- /etc/passwd番外(2)①用户信息文件
- /etc/shadow番外(2)②密码文件
- /etc/group
- 宿主目录
4、其他管理命令:
- vipw:编辑 /etc/passwd 文件,会锁定文件,不能多个用户同时编辑
sudo vipw
//我们在这里将文件末尾的冒号删掉,为下面的演示做准备
- pwck:passwd check 检测 /etc/passwd 文件(锁定文件)的错误,比如不小心删了个分隔符
sudo pwck
- id:查看用户id和组信息,uid,gid,groups
- finger:查看用户详细信息(可以看到什么时间通过什么主机登录的)
passwd -S [用户名] 查看用户密码状态(是对/etc/shadow文件的提取),用户无法登陆时使用
passwd -l [用户名] 锁定用户的密码
- usermod -L [用户名] 锁定用户的密码
这俩锁定的命令都是通过在加密密码前面加一个“!”来实现的,对应解锁密码如下:
- passwd -u [用户名]
usermod -U [用户名]
chage:更改用户密码到期信息,其实就是更改/etc/shadow里的信息,unix里面没有
- -l:查看用户密码设置
- -m:密码修改最小天数
- -M:密码修改最大天数
- -d:密码修改最后的日期
- -I:密码过期后,锁定账户的天数
- -E:设置密码的过期日期,如果为0,代表密码立即过期,如果为-1,代表密码永不过期
- -W:设置密码过期前,开始警告的天数
启动或停用shadow功能:
- pwconv/pwunconv //用户
- grpconv/grpunconv //用户组
二、用户组管理:
1、添加组
groupadd -g gid [groupName]
sudo groupadd -g 1001 newgroup
sudo gpasswd newgroup
sudo grpconv
2、删除组
groupdel [groupName]
sudo vigr -g
sudo groupdel newgroup
sudo vigr -g
删之前:
删之后:
3、更名
groupmod -n [newName] [oldName]
sudo vigr -g
sudo groupmod -n groupnew newgroup
sudo vigr -g
改之前:
改之后:
4、其他用户组管理命令:
- groups:查看用户隶属于哪些用户组
- newgrp、gpasswd:切换用户组 - 当一个用户不属于这个组,但它还想用这个组的权限的时候,如果他知道这个组的密码,那他就可以切换到这个组,使用它的权限,
su - Mary
id
newgrp newgroup
id
只是临时将Mary添加到newgroup组中,退出切换后,Mary还是不属于newgroup组
- vigr:编辑/etc/group文件(锁定文件)只能用这个命令
sudo vigr -g
3 //选择编辑器
- grpck:用户组配置文件检测
sudo grpck
sudo grpconv
sudo grpck
三、把用户添加到组里:
有两种方法:
(1) usermod -G [组名] [用户名]
id Mary
sudo usermod -G newgroup Mary
id Mary
(2) gpasswd -a [用户名] [组名]
gpasswd 命令其他选项用法
-d:删除用户
-A:把用户设置为组的管理人,管理人可以增加删除用户
-r:删除用户组密码
-R:禁止用户切换为该组
- gpasswd -d [用户名] [组名]
id Mary
sudo gpasswd -d Mary newgroup
id Mary
- gpasswd -a [用户名] [组名]
id Mary
sudo gpasswd -a Mary newgroup
id Mary
- gpasswd -A [用户名] [组名]
id Mary
gpasswd -a Mary newgroup
sudo gpasswd -A cassie newgroup
gpasswd -a Mary newgroup
id Mary
- gpasswd -r [用户名] [组名]
sudo vigr -s //查看用户组密码
gpasswd -r newgroup
//上一步已经把当前用户设置成了newgroup的管理员,所以这一步不需要加 sudo
sudo vigr -s
删除前:
删除后:
- gpasswd -R [用户名] [组名]
gpasswd newgroup
su - Mary
id
newgrp newgroup
id
su - cassie
gpasswd -R newgroup
su - Mary
id
newgrp newgroup
四、用户组权限例题
如果想将同一个权限授权给多个用户,怎么办?将多个用户放到同一个组里,然后对这个组进行授权,那么,组里的每一个用户就都有那些权限了
sudo mkdir /software
sudo useradd jack
sudo useradd david
sudo passwd jack
sudo passwd david
su - jack
touch /software/aaa
sudo groupadd softadm
sudo usermod -G softadm jack
sudo gpasswd -a david softadm
sudo grep softadm /etc/group
sudo chgrp softadm /software //更改/software 文件所属组
sudo chmod g+w /software
//检验
su - jack
touch /software/aaa
su - david
touch /software/bbb 可以创建
ls /software/
ls -l /software/
总结:让一个普通用户可以编辑一个配置文件可以有以下方法
- 设置用户为配置问价所有者 chown
- 改变所属组,把用户加入组,授予 w 权限
- visudo 用户 地址=/bin/vi
番外
(1)Linux用户类型
- 超级用户:root,uid = 0
- 普通用户:uid=500~60000
- 伪用户:uid=1~500,缺省用户,Linux命令只能以用户的身份去调用、执行,伪用户就是这种调用服务、命令的身份,不能登陆系统
- 系统相关命令:如shutdown等
- 服务相关命令:如ssh等
(2)与用户信息有关的配置文件
① 用户信息文件:/etc/passwd
例子:root:x:0:0:root:/root:/bin/bash
解析 | root | x | 0 | 0 | root | /root | /bin/bash |
---|---|---|---|---|---|---|---|
用户名 | 密码位 | uid | gid | 描述性语言 | 宿主目录 | 命令解释器 | |
备注 | 只是一个密码的占位符,密码在/etc/shadow文件中 | 用户标识号 | 缺省组标志号 | 用户全名等信息,可有可无 | 用户使用的shell,默认为bash |
more /etc/passwd
② 密码文件:/etc/shadow
例如:root:$1/S$yBoIrn:17394:0:99999:7:::
解析 | root | $1/S$yBoIrn | 17394 | 0 | 99999 | 7 | |||
---|---|---|---|---|---|---|---|---|---|
用户名 | 加密密码 | 最后一次密码修改时间 | 最小时间间隔 | 最大时间间隔 | 警告时间 | 账号闲置时间 | 失效时间 | 标志 | |
备注 | 距离1970年1月1日的天数 | 两次修改密码之间的最小时间间隔 | 达到这个天数还没更改的话会被强制更改,否则账号失效,无法登陆 | 距离强迫更改还剩7天时向用户发出警告 | 一般不使用 |
su - root //需要root权限才能打开这个文件
more /etc/shadow
我们登陆Linux系统时输入账号密码后,系统就会查询 /etc/passwd 和 /etc/shadow 两个文件来核查我们的身份
③ 新用户配置文件:/etc/skel
每个用户的宿主目录下都要有这个文件夹下的文件(都是隐藏文件),手工创建新用户时要拷贝过去
ls -a /etc/skel/
ls -a /home/cassie/
④ 用户配置文件:设置用户信息的默认值文件
1)/etc/login.defs
more /etc/login.defs
2)/etc/default/useradd
more /etc/default/useradd
(3)su
su jack 切换用户为jack,不切换环境变量,用的不是jack的环境变量,还是切换之前的环境变量
su - jack 切换用户为jack,切换环境变量,用的是jack的环境变量
(4)用sudo代替su:
概念:sudo可以让普通用户以root的身份执行某些命令
优点:
- 在执行sudo命令时,临时成为root
- 不会泄露root口令
- 仅向用户提供有限的命令使用权限
sudo命令授权:
在配置文件中加入以下信息:
配置文件格式:用户名(组名) 主机地址(主机名)=命令(必须是绝对路径)
例如:
- userName 192.168.195.130=/usr/sbin/useradd.usr/sbin/userdel
- userName 192.168.195.130=/sbin/shutdown -h now 命令精确化,只能用-h now这个选项
第一个例子中给userName这个用户添加useradd和userdel命令的权限,添加完使用的时候有两种方法:
- 将/usr/sbin/useradd添加userName的PATH路径下
- 使用绝对路径
使用的时候要在命令前面加上sudo
其他:
/etc/sudoers 是配置文件,编辑配置文件命令visudo
sudo -l 查看你可以以root身份进行什么操作