目录
一.用户账户
1.用户帐号类型
Linux中是通过UID号标识用户的类型,新建用户的UID号范围在1 ~ 60000之内,总共有65536个端口号即0 ~ 65535
超级用户:root用户 ,UID=0
root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高 无上的权限,类似于 Windows 操作系统中的 Administrator 用户。
程序用户:UID = 1 ~ 499(CentOS 6版本以前),1 ~ 999(CentOS 7版本以后)
CentOS 6与CentOS 7的区别:程序用户的UID号范围不同
在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运 行,如 bin、daemon、ftp、mail 等
普通用户:UID = 500+(CentOS 6版本以前) 1000+(CentOS 7版本之后),若不指定用户的UID号,按顺序排。
普通用户的账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。
超级管理员:最高权限拥有者,uid=0的用户,默认是root。
普通用户:有一定权限的用户,但是权限受限制。
系统(程序)用户:不是给人用的,是给程序用的,无法直接登录系统的用户。主要是出于安全性考虑,若是某个程序被攻破账户密码泄露,黑客只能攻击此程序,但是不能通过这个账户密码登录系统,保证了系统的安全性。
#1、查看当前登录用户信息
who命令:
[root@localhost ~]# whoami
root
[root@localhost ~]# who
root pts/0 2021-08-17 14:16 (192.168.91.1)
root pts/1 2021-08-17 14:30 (192.168.91.1)
[root@localhost ~]# who -b
系统引导 2021-08-17 14:15
补充:
#2、last命令
选项:
(1)-x:显示系统开关机以及执行等级信息
(2)-a:将登陆ip显示在最后一行
(3)-f :读取特定文件,可以选择 -f /var/log/btmp文件
(4)-d:将IP地址转换为主机名
(5)-n:设置列出名单的显示列数
(6)-t:查看指定时间的用户登录历史
3、lastlog 查看所有用户的最近一次登录
#-u 查看指定用户
[root@localhost ~]# lastlog -u root
用户名 端口 来自 最后登陆时间
root pts/1 192.168.91.1 二 8月 17 14:30:01 +0800 2021
#-t 表示几天之内的
[root@localhost ~]# lastlog -t 1
用户名 端口 来自 最后登陆时间
root pts/1 192.168.91.1 二 8月 17 14:30:01 +0800 2021
gdm :0 二 8月 17 14:15:56 +0800 2021
zhangsan :0 二 8月 17 16:25:37 +0800 2021
2.组帐号
如何理解组?组相当于 职位 运维工程师 都具有大概相同的权限
看到组最常见的组词是不是组织?组织:按照一定的宗旨和系统建立起来的集体。那linux和windows中的组就是将多个用户集合起来,统一分配某种相同的权限(开通或关闭)。
组账号是一类人拥有相同的权限
2.1基本组(私有组)
-
建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
-
在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定
基本组:有且唯一
附加组:可有可无,可以有多个
默认新建用户时自动添加同名的组
2.2附加组(公共组)
附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
3.uid及范围
UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。
centos7登录用户是从1000起到60000
centos6 500~60000
1-999 预留给系统,叫系统用户,某个程序比如数据库
给人使用的账户是从1000开始
[root@test1 ~]# id root
[root@test1 ~]# id zhangsan
uid=1000(zhangsan) gid=1000(zhangsan) 组=1000(zhangsan),10(wheel)
[root@localhost ~]#vim /etc/login.defs
#uid 的范围定义在此文件中
uid:linux系统用于区分用户的号码。
uid范围:
系统版本 | 超级管理员 | 系统(程序)用户 | 普通用户 |
Centos 6 | uid=0 | 1-499 | 500-60000 |
Centos 7 | uid=0 | 1-999 | 1000-60000 |
4.GID
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。
5.用户和组的关系
用户 是员工 组 是职位
员工 可以兼职多个岗位
总有一个最重要的身份 主要组合附加组
主要组 必须要一个组 有且唯一
附加组 可有可无 有可以有多个
默认行为当你创建一个新用户时会自动创建一个和之同名的主组
-
用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组
-
用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组
root zhangsan 用户 使用不同的工具 cat /etc/shadow vim /etc/shadow
①基本组:有且只有一个基本组,使用id命令查看,谁在最前面谁是基本组
②附加组:可以没有或者有多个,id命令查看,除最前面一个后面的都是附加组
6.添加账户
添加用户:查看是否在 passwd和shadow文件中生成信息
命令:useradd (新建用户)
基本格式: useradd [选项] 用户名
[选项] -u 创建时指定uid号 通过UID区分
-d 创建时直接家目录,指定文件可以不存在。默认是在/home下生成一个同名文件
-M 创建时不生成家目录
-s 创建时指定shell类型,例如指定/sbin/nologin则此用户不能登录系统
-e 创建时指定账户失效时间,格式为"yy-mm-dd"
-g 创建时指定基本组
-G 创建时指定附加组
-c 备注信息-u 创建时指定uid号
7.密码管理
passwd(这个文件现在不存密码)虽然叫密码,但是他是存用户信息
passwd命令
为用户账号设置密码
passwd [选项]... 用户名
基本用法 不加选项 可以添加密码
[root@test1 /]# passwd lisi 修改lisi 用户密码输入两次密码
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
选项
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
8.修改账户
命令:usermod
基本格式:usermod [选项] 用户名
[选项] -l 修改已有账户名称,格式,usermod 更改后名称 更改前名称
-L 锁定用户账户
-u 修改已有账户的uid号
-U 解锁锁用户账户
-d 为已有账户指定新的家目录
-m 将原家目录文件移动到新家目录,与-d配合使用
-s 修改已有用户的shell用户
-e 为已有账户设置失效时间,格式为"yy-mm-dd"
-g 为已有账户修改基本组
-G 为已有账户添加附加组
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
9.删除用户
命令:userdel
基本格式:userdel [选项] 用户名
[选项] -r 删除用户时将家目录一起删除
[root@test1 etc]# userdel -r zhou1 //连宿主目录一起删除
[root@test1 etc]# id zhou1 //验证
id: zhou1: no such user
[root@test1 etc]# cd /home/
[root@test1 home]# ls
lisi zhangsan
10.组的增删改查
10.1添加组
groupadd命令
groupadd [-g GID] 组账号名
[root@test1 /]# groupadd zhou //添加组账号
[root@test1 /]# tail -1 /etc/group
zhou:x:1002:
[root@test1 /]# groupadd -g 88 zhou //-g指定组id
[root@test1 /]# tail -1 /etc/group
zhou:x:88:
10.2组内管理
gpasswd 命令——添加、设置、删除组成员
-
-a:向组内添加一个用户
-
-d:从组内删除一个用户成员
-
-M:定义组成员列表,以逗号分隔
[root@test1 /]# useradd zhou1 //组内加入新成员
[root@test1 /]# gpasswd -a zhou1 zhou
正在将用户“zhou1”加入到“zhou”组中 用户在前,组在后
[root@test1 /]# gpasswd -d zhou1 zhou
正在将用户“zhou1”从“zhou”组中删除
[root@test1 /]# gpasswd -M zhou1,zhou zhou
[root@test1 /]# grep "^zhou" /etc/group
zhou:x:88:zhou1,zhou
10.3删除组账号
groupdel 组帐号名
[root@test1 /]# groupdel zhou
添加组:groupadd 组名
删除组:groupdel 组名
组内用户管理:
组内添加用户 gpasswd 组名 -a 用户名
组内删除用户 gpasswd 组名 -d 用户名
批量添加用户 gpasswd 组名 -M 用户名,用户名。用逗号隔开
11.用户登录信息查询
finger命令查询用户帐号的详细信息(finger [用户名])
[root@test1 Packages]# finger zhangsan
Login: zhangsan Name: zhangsan
Directory: /home/zhangsan Shell: /bin/bash
Last login 五 7月 2 09:17 (CST) on pts/0
No mail.
No Plan.
finger命令:查看登录信息,谁在登录,tty,时间,主机ip
w命令:查看登录信息,谁在登录,什么时候登录的,tty,主机ip,已经显示1、5、15分钟内cpu使用情况(查询已登录到主机的用户信息 )
标题 | 含义 |
---|---|
USER | 登录到系统的用户。 |
TTY | 登录终端。 |
FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。 |
LOGIN@ | 用户登陆的日期和时间。 |
IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间。 |
JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。 |
PCPU | 当前进程所占用的 CPU 运算时间。 |
WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。 |
-
who
[root@localhost ~]# w [选项] [用户名]
-h 不显示输出信息的标题
-l 用长格式输出
-s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
-V 显示版本信息
[root@test1 Packages]# w
11:20:58 up 2:05, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.100.99 09:16 2.00s 0.74s 0.02s w
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下:
[root@localhost ~]# who [选项] [file]
选项 | 含义 |
---|---|
-a | 列出所有信息,相当于所有选项。 |
-b | 列出系统最近启动的时间日期。 |
-l | 列出所有可登陆的终端信息。 |
-m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i 。 |
-q | 列出在本地系统上的用户和用户数的清单。 |
-r | 显示当前系统的运行级别。 |
-s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
-u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
-T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
who命令:查看登录信息,谁在登录,登录时间,登录ip
users命令:查看登录信息,只显示登录正此终端登录的账户
二.文件/目录的权限和归属
1.访问权限
访问人群分为了三类
-
所属主(u)
-
所属组(g)
-
其他人 (o)
权限分为三种
-
r读权限:允许查看文件内容,显示目录列表
-
w写权限:允许修改文件内容,允许在目录中新建和移动
-
x执行权限:允许运行程序、切换目录
第1段:文件所属主的权限
第2段:文件所属组的权限
第3段:其他用户的权限
二进制数字表示法
rwx rwx rwx
二进制111 111 111
十进制 7 7 7
由此算出r=100(二进制)=4(十进制)
w=010(二进制)=2(十进制)
x=001(二进制)=1(十进制)
对文件的权限
-
r 可使用文件查看类工具,比如:cat,可以获取其内容
-
w 可修改其内容
-
x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限
-
r 可以使用ls查看此目录中文件列表
-
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
-
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
2.修改文件权限
模式法:
chmod 对谁(所有者,所属组,其他)操作(+ - =)权限 文件
谁:u,g,o,a
操作:+,-,=
权限:r,w,x(普通权限对root无效)
数字法:
1 2 4
x w r
命令:chmod
基本格式:chmod [选项] 主权限 组权限 其他用户权限 文件名
[选项] -R 递归,将该文件夹下所有文件权限一起修改
实例:修改/date及所属文件为777 ,chmod -R 777 /data
3.umask
umask 的值可以用来保留在创建文件权限
实现方式:
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
4.特殊权限
访问控制列表 ACL
ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify-acl 更改文件的访问控制列表
-M, --modify-file=file 从文件读取访问控制列表条目更改
-x, --remove=acl 根据文件中访问控制列表移除条目
-X, --remove-file=file 从文件读取访问控制列表条目并删除
-b, --remove-all 删除所有扩展访问控制列表条目
-k, --remove-default 移除默认访问控制列表
--set=acl 设定替换当前的文件访问控制列表
--set-file=file 从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n, --no-mask 不重新计算有效权限掩码
-d, --default 应用到默认访问控制列表的操作
-R, --recursive 递归操作子目录
-L, --logical 依照系统逻辑,跟随符号链接
-P, --physical 依照自然逻辑,不跟随符号链接
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
--test 测试模式,并不真正修改访问控制列表属性
-v, --version 显示版本并退出
-h, --help 显示本帮助信息
5.修改文件所属主和所属组
命令:chown
基本格式:chown [选项] 要改的主 :要改的组 文件
[选项] -R 递归将该文件夹下所有文件所属主、组一起修改。
实例:若只修改该文件及所属文件的所属主 chown -R 主 文件
若只修改该文件及所属文件的所属组 chown -R :组 文件