用户管理系统
用户管理基础
who
查看系统中当前登录的所有用户who am i
查看当前登录用户终端:
:0 代表后台终端,与人没有交互的
pts/n n为任意正整数,虚拟终端(图形化界面中的命令行,远程登录使用的命令行均为虚拟终端),哪怕是编号相同的两个终端,只要不是连续使用的,中间曾经关闭过,就不是同一个终端了
tty1-63 物理终端,本地服务器操作使用物理终端
ttys0-3 物理终端,使用串行通信进行操作的终端用户信息的存放文件
/etc/passwd
/etc/shadow/etc/passwd 存放系统中所有的用户的信息,在该文件中,每一行代表一个用户,包含用户的一下信息
username:password-reserved:uid:gid:remarks:home-dir:shell
密码:这里是密码保留位,不保存密码,没有意义
uid:用户编号,系统识别用户的唯一根据。uid=0 则为超级管理员用户。uid小于1000的是系统用户,用来承担系统中的运行工作。uid>=1000的为普通用户
gid:用户组编号,系统唯一识别用户组的根据。 注释:系统管理员给用户留下的注释信息,方便后来的管理员理解用户的作用
用户家目录:用户的个人目录,保存用户的个人文件以及配置信息
shell:一种负责人机交互的软件。可以在系统中/etc/shells文件中查看当前系统所支持的shell种类。RHEL7支持的shell:
/bin/sh 最古老的shell
/bin/bash 目前应用最多的shell
/sbin/nologin 使用户无法登陆的shell
用户管理命令
useradd 选项 参数 用户名
创建对应的用户选项:
-u 创建用户时指定用户的uid,如果不指定,则默认为上一个用户的uid+1
-g 创建用户时将用户加入gid所指定的用户组(该用户组必须已经存在),如果不指定,则默认uid=gid,在创建用户时,会创建与用户同名的用户组。
-s 创建用户时指定用户使用的shell,若不指定,默认为/bin/bash
-d 创建用户时指定用户的家目录位置,若不指定,则自动在/home目录下创建于用户名相同目录名的目录作为家目录passwd
修改密码的命令root用户使用时:
passwd 用户名
修改指定用户的密码(root用户可以修改系统中任意一个用户的密码);普通用户使用时:passwd
修改自己的密码(普通用户只能修改自己的密码);对于可登录的用户来说,密码是必备的id 用户名
查看用户的信息usermod 选项 参数 用户名
-u 修改用户的uid(一般不使用)
-g 修改用户的gid
-s 修改用户使用的shell
-d 修改用户的家目录例子:
usermod -g 0 student 将student用户的用户组更改为root用户组(root用户组gid=0)userdel -r 用户名
删除用户的同时删除家目录 或者:
find / -user 用户名 -exec rm -rf {} \;
用户切换命令
su 临时切换用户的命令
su 用户名 临时切换用户
su - 用户名 临时切换用户,同时切换家目录
注意:
1、root用户使用su命令时,无需提供密码,其他用户均需提供要切换的用户的密码才能切换
2、切换用户时,如果没有输入密码的步骤,则用户的远程权限(远程文件共享等)不发生切换
3、临时切换使用完后,可以使用exit命令退出切换。如果不是需要,不要在su命令切换的用户内再次使用su命令
sudo 临时获取root用户身份执行命令
sudo 要执行的命令
例子:普通用户下
sudo passwd root
系统中哪些用户能够使用sudo命令,在/etc/sudoers文件中进行配置,正常情况下,系统默认设置wheel用户组的成员全部可以使用sudo命令
用户组管理命令
主组:用户拥有主组的权限,用户一般使用主组的身份进行操作,一个用户只能拥有一个主组
从属组(附属组,副组):也同时拥有从属组的所有权限,用户拥有的从属组没有上限
用户组的信息的存放位置: /etc/group
保存用户组信息;/etc/gshadow
保存用户组密码(从不使用)
/etc/group
文件内容:文件中每一行代表一个用户组的信息,格式为:用户组名:密码:gid:所属用户
。注意:所属用户位置保存的是将该用户组设置为附属组的所有用户的名字
groupadd group-name
创建用户组groupadd -g gid group-name
创建用户组时指定gidgroupmod -g gid group-name 修改用户组的gid
groupdel group-name 删除用户组
与从属组相关的命令: useradd -G 用户组名或gid 用户名 创建用户时指定从属组 usermod -G 用户组名或gid 用户名 重新设置从属组 usermod -aG 用户组名或gid 用户名 添加一个从属组
权限管理基础
ls -l path
查看文件详细信息(包含权限信息)dr-xr-xr-x.
即使用十一位二进制数字表示权限第一位:表示文件类型
- 普通文件
d 目录
l 链接文件
b 块设备文件
s 套接字文件
第二位到第四位:表示文件所属人对于文件的权限
依次为读(r)写(w)执行(x)
第五位到第七位:表示文件所属组对于文件的权限
第八位到第十位:表示系统中除文件所属人所属组之外的其他用户对于文件的权限
第十一位:代表是否具有访问控制列表(acl)如果没有,则为‘.’ 如果有,则为‘+’
- 普通文件
对于文件:
读(r)权限:代表是否能够查看文件内容
写(w)权限:代表是否能够对文件内容进行修改
执行(x)权限:代表是否为一个可执行文件(应用程序)
对于目录:
读(r)权限:代表是否能够查看到目录中有哪些内容
写(w)权限:代表是否能够对目录中内容进行修改(在目录中新建文件、修改目录中内容的信息、对目录中的文件或目录进行编辑)
执行(x)权限:代表是否能够进入目录
注意:对于目录来说,读权限和执行权限是缺一不可的,两者少一个,则没有任何意义;写权限也与执行权限相关。对于目录来说,执行权限是最基本权限,如果没有执行权限,其他权限没有意义
权限管理命令
chown
chown 用户名:用户组名 路径 同时修改所属人所属组
chown 用户名 路径 仅修改所属人
chown :用户组名 路径 仅修改所属组chgrp 用户组名 路径 修改所属组
chmod 权限表达式 路径 修改权限
字母法:
u:代表所属人
g:代表所属组
o:代表其他人
a:代表所有人
+:代表添加权限
-:代表移除权限
r:代表读权限
w:代表写权限
x:代表执行权限
例子:
u+r 所属人具有读权限
o-x 其他人不具备执行权限
a-r 所有人均不具备读权限
数字法:
r=4
w=2
x=1
每三位用一个数字表示,该数字大小为三位权限的代数和
例子:
rw-r–r– >> 644
354 >> -wxr-xr–
文件的最大权限为:666
目录的最大权限为:777
文件访问控制列表(facl)
作用:针对单个用户的权限进行限制
getfacl path
查看文件的访问控制列表setfacl -m user:username:permission-expr path
设置访问控制列表例子:
setfacl -m user:student:r– /bin/passwd注意:
1、facl对root用户及文件所属人无效
2、facl设置后,会对ls -l 命令查看到的内容产生影响,使显示不准确,所以说设置facl以后,详细的权限内容,以facl中显示的为准;隐藏权限attr 是唯一可以限制root用户的权限,不推荐使用。
特殊权限
suid
:仅对应用程序设置有效,设置后,无论系统中哪个用户执行该程序,都会以程序所属人的身份执行。该权限设置后,会占用所属人权限的执行权位,并显示为‘s’。如果所属人本身没有执行权,则显示为‘S’。注意:普通用户想要执行具有suid设置的程序,必须本身对该程序具有执行权,且程序所有人也对该程序具有执行权
sgid
: 仅对目录设置有效,对目录设置后,该目录中新建的所有内容所属组及组权限均与该目录相同
sbit
: 粘滞键,仅对目录设置有效,对目录设置后,目录中的子目录的内容,只有目录的所属人以及子目录的所属人有权限修改
设置特殊权限:
suid=4
sgid=2
sbit=1
三种特殊权限占用一位数字,写在普通权限的前面
例子:chmod 2770 path
对对应的目录设置sgid