1 Linux用户分三种:
超级用户(root UID=0)
普通用户(UID 500-60000) 注意只要修改了UID=0,此普通用户可以变为超级用户
伪用户( UID 1-499 ),一般与linux系统和服务相关,无法登陆和没有宿主目录
2 用户组
1 每个用户至少属于一个组
2 每个用户组可以包括多个用户
3 同一用户组的用户共享有该组共有的权限
3 配置文件
(1) 用户信息文件:/etc/passwd
查看passwd文件会发现有以下内容
root :x :0 :0 :root :/root :/bin/bash
用户名:密码位(并不存放密码):UID(用户标示符号):GID(缺省组标识号) :描述信息:宿主目录:命令解释器(默认为bash)
(2) 密码文件:/etc/shadow
查看shadow文件会发现有以下内容:
root :$1$.4oUiqmJ$5/KdcH8wSp4yVq7DyEzM/. :16281 : 0 :99999 : 7 :::
用户名:加密后的密码 :最后一次修改密码的时间:两次修改密码之间的最小天数:密码保持有效的最大天数:警告时间:
注意密码一般是先写到passwd中,然后再转到shadow中
(3) 新用户信息文件:/etc/skel
每次创建一个用户,会把/etc/skel目录下面的所有文件拷贝到自己的宿主目录下
(4)用户配置文件:/etc/login.defs,/etc/defaule/useradd(定义了一些添加用户的缺省的设置信息),/
(5)登陆信息:/etc/motd
普通用户为什么能修改密码?
如下图可以看出普通用户是没有更改自己密码的权限的:
看到普通用户对于passwd文件只有读的权限,对于shadow文件没有任何权限,普通用户应该是修改不了密码的,可是为啥普通用户还可以修改密码了?
密码不在于更改文件的权限上面,而在passwd命令的权限上面,看到passwd命令第三个位置是s而不是常用的x。这个就是普通用户可以更改密码的根本原因,这个从而引出了SetUID。
SetUID定义:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。
设置一个命令为SetUID:
chmod u+s
chomd 4755
取消:
chmod u-s
chomd 755
例子 将touch命令授予SetUID权限
看到原始的touch命令是谁使用,所有者就是谁,修改touch命令的所有者权限,令其权限为s
再次用touch命令创建文件,会发现所有者变为root了,如下图。
SetGID定义:当一个可执行程序具有SetGID权限,用户执行这个程序时,将以这个程序所有组的身份执行。
设置一个命令为SetGD:
chmod g+s
chomd 2755
取消:
chmod g-s
chomd 755
粘着位:如果一个权限为777的目录,被设置了粘着位,每个用户都可以在目录下面创建文件,但是只可以删除自己是所有者的文件。
设置
chmod o+t
chomd 17777
添加用户
命令名称:useradd
选项含义:
用户组命令
1 添加组
命令名称:groupadd
用法:group -g 999 admin
创建用户组 admin GID是999
2 删除组:
命令名称:groupdel 组名
用法 groupdel admin
3 修改用户组信息:
命令名称:groupmod
用法:groupmod -n apache admin
修改admin 组名apache
4 把用户加入到组
1 命令名称:usermod
usermod -G 组名 用户名
2 命令名称:gpasswd
gpasswd -a 用户名 组名
5 切换到缺省的组
命令名称:newgrp
用法: newgrp webadmin
6 禁止用户切换到该组
用法:gpasswd -R webadmin
7 查看用户属于哪个组
命令名称:groups
用法:groups