8 Linux用户管理
概念
是指登录系统,运用系统的使用者
为什么需要用户
系统上每一个运行的程序都需要用户,在生产中Linux系统通常使用普通用户来管理服务器,因为root用户权限过大,容易造成重大故障
用户分类
Linux用户只有两个等级:root及非root。 一个用户至少要属于一个用户组,一个用户可以属于多个用户组
配置文件
passwd 文件(用户信息存放文件)
shadow 文件(用户密码存放文件)
修改密码过期时间
修改密码过期时间-参考博客
用户的添加\修改
通用选项:
选项
功能介绍【添加(useradd)\修改(usermod)】
-u
指定要(useradd\usermod)用户的UID
-g
指定(useradd\usermod)基本组
-G
指定(useradd\usermod)附加组,用逗号隔开可添加多个附加组
-d
指定(useradd\usermod)用户家目录
-s
指定(useradd\usermod)Bash Shell
-c
指定(useradd\usermod)用户的注释信息
用户创建(useradd)
功能介绍
-M
指定创建的用户不添加家目录
-r
创建系统账户,默认无家目录
用户的修改(usermod)
-l
指定要修改的用户的登录名
-L
指定要锁定用户
指定要解锁的用户
用户的删除(userdel)
用户的密码设定
逻辑上将多个用户归为一个组,当我们对组操作,相当于对组中的用户操作
用户组分类
默认组:创建用户时不指定组,默认创建组的名字与用户同名
基本组:用户有且只能有一个基本组(亲爹)
附加组:用户可以有多个附加组(干爹)
group 文件(用户组信息存放文件:/etc/group)
gshadow 文件(用户组密码信息:/etc/gshadow)
用户组的添加(groupadd)
-f
如果组已存在,强制创建组
创建组GID
创建一个系统组
用户组的修改(groupmod)
修改组GID,GID已存在提示GID已存在
-n
修改为新组
用户组的删除(groupdel)
示例
用户与用户组应用场景
因为公司服务器对外禁止root用户登录,我们使用的一般都是普通用户,但是有时需要对服务器进行管理又需要root权限。所以为方便普通用户完成日常工作,需要以下两种方式来对普通用户进行提权。
两种写法:
su - username
su username
区别:
加“-”:登录式Shell(需要输入用户名和密码);
不加“-”:非登录式Shell(不需要输入用户名和密码);
最大的区别就是加载的环境变量不一样,使用su的优点是简单,缺点是需要知道root密码,一旦泄露会造成无法预料的损失
配置文件加载顺序:
登录式Shell:/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登录式Shell:~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
1.先使用root用户对该账户进行授权 2.才能使用该账户进行提权,然后完成普通用户无法做到的事情,sudo权限太高,几乎可以执行所有的命令;
sudo提权步骤:
1、定义命令集合
2、添加用户 \组
3、将命令集合捆绑至某一特定的组
4、将用户加入到组中
9 Linux权限管理
什么是权限
权限是用来约束用户能对系统所做的操作,约束某个特定的用户具有特定的系统资源使用权利
为什么需要权限
系统维护的用户较多,因为不同的用户有自己的隐私,所以需要进行权限划分。比如说不同的人查阅相同的文件,但能操作的指令是不一样的,这样可以保证数据的安全,避免人为原因造成故障导致数据泄露等风险。
操作系统为访问文件的用户定义了三种身份,同时为这三种身份又分别定义了三种权限
访问一个文件的流程
判断是否为文件所属主—>>判断是否为文件所属组—>>按照其他用户权限执行
Linux中的权限含义
字母
含义
二进制
八进制权限表示法
r--
读权限
100
4
-w-
写权限
010
2
--x
执行权限
001
---
无权限
000
root用户能修改任何用户的权限;普通用户只能修改属于自己的文件权限
UGO方式
NUM方式(必须掌握)
一般情况下,系统会默认设置的安全权限:
文件权限:644
目录权限:755
一、权限对文件的影响:
1、读取权限r :具有读取、阅读文件内容权限,只能使用查看类命令 cat、head、tail、less、more
2、写入权限w :具有新增、修改文件内容的权限
(2.1)使用 vim 会提示权限拒绝,但可强制保存,会覆盖文件的所有内容;
(2.2)使用 echo 命令重定向的方式可以往文件内写入数据,>> 可以追加内容
(2.3)使用 rm 无法删除文件,因为删除文件需要看上级目录是否有 w 的权限
3、执行权限 x:执行文件的权限没什么用,一般搭配r权限,普通用户才能执行文件
【总结】
文件 r 权限,只给用户查看,无其他操作;
文件 rw 权限,可以查看和编辑文件内容【代码文件】;
文件 rx 权限,允许查看和执行文件、但不能修改文件【脚本|命令】;
文件 rwx 权限,能读、能写、能执行、【不能删除】;
二、权限对目录的影响
1、读取权限r :具有浏览目录及子目录权限
(1.1)使用 ls 命令浏览目录及子目录, 但同时也会提示权限拒绝
(1.2)使用 ls -l 命令浏览目录及子目录,文件属性会带问号,并且只能看到文件名
2、写入权限w :具有增加、删除或修改目录内文件名权限,需要 x权限配合
(2.1)可以在目录内创建文件, 删除文件(跟文件本身权限无关)
(2.2)不能进入目录、不能复制目录、不能删除目录、不能移动目录
3、执行权限 x:具有执行文件的权限
(3.1)只能进入目录
(3.2)不能浏览、复制、移动、删除
目录 rx 权限,允许浏览目录内文件以及子目录,不允许在该目录下创建文件、删除文件
目录 rw 权限,能查看目录,能往目录写入文件,但无法进入目录-->(使用的情况太少)
变更权限在进程中的执行步骤:
进程能够以什么样的方式去访问一个文件或目录,取决于进程所运行的用户对该文件有什么样的权限
第一步:检查进程运行的用户是谁
第二步:检查进程访问的文件属主和属组是谁,以及权限为多少
第三步:变更属主和属组,修改对应的权限,确保符合进程所需要的权限预期
如何修改文件所属关系
chown 能变更文件的属主和属组(经常使用)
chgrp 仅能变更文件的属组;
示例:基于Httpd场景说明
SUID
1、背景:
每个普通用户在更改自己的密码时,同时更新 /etc/shadow 文件里的内容,但 /etc/shadow 文件不允许任何人修改,普通用户可以修改自己的密码在于 passwd 命令本身,因为该命令拥有特殊权限 SetUID ,所以 passwd 命令在执行的过程中,会以命令的属主身份运行该命令,就是以root权限执行。
简单总结就是: 普通用户-->passwd -->转换命令的属主:以root执行 --> /etc/shadow信息变更
2、用法:
添加权限:chmod u+s directory
chmod 4755 directory
删除权限: chmod u-s directory
chmod 0755 directory
3、总结:suid仅对二进制可执行程序有效,其他文件或目录则无效;不建议对 vim 或 rm 进行suid 设定操作;
SGID
1、设置二进制可执行文件:命令在执行的过程中,会以命令的属组身份运行该命令
2、设置在目录上:这时候在该目录下新建的文件/目录自动继承父目录的属组
3、用法:
添加权限:chmod g+s directory
chmod 2755 directory
删除权限: chmod g-s directory
sgid场景描述
SBIT
1、一旦目录被赋予了粘滞位 Sticky,任何人即便拥有w权限,可以往目录中添加文件,也只能删除自己创建的文件(root除外)
2、 用法:
添加权限:chmod 1755 directory
chmod o+t directory
删除权限:chmod 0755 directory
chmod o-t directory
sbit场景描述
1、概念:这类文件属性凌驾于 rwx 基础权限之上,是一种高级属性。
2、作用:
创建一个文件,不允许被修改、移动、删除,包括 root 也不行(适合 /etc/passwd); 仅允许往文件里面追加数据,不允许修改、移动、删除。(适合 sudo 审计日志);
3、用法
a:可对文件进行追加内容;
i:锁定文件,不允许其他操作;
添加权限:chattr +[i|a] 文件或目录
删除权限:chattr -[i|a] 文件或目录
示例:病毒攻击场景
1、概念:指用户在创建文件或目录时,默认分配给文件或目录的访问权限;
2、背景:
用户创建一个文件:默认访问权限:rw-rw-rw-(666)—最终文件权限:644
用户创建一个目录:默认访问权限:rwxrwxrwx(777)—最终目录权限:755
3、原因:UMASK减权
系统默认 root 用户的 UMASK 为 022,当用户登录系统,加载环境变量文件:/etc/profile,系统默认权限最终两种情况:
用户UID<199,UMASK初始化为022:
文件:666 - 022 = 644
目录:777 - 022 = 755
用户UID>199,UMASK初始化为002
文件:666 - 002 = 664
目录:777 - 002 = 775
默认权限计算公式(针对文件权限):
UMASK三个位数中只要其中一个位有奇数,文件权限要在对应位数加1
UMASK初始值:
(1) UMASK=032 文件权限为666 - 032 = 634 + 010 = 644
(2)UMASK=035 文件权限为666 - 035 = 631 + 011 = 642
10 Linux IO重定向
重定向就是将原本要输出到屏幕中的信息,重新定向到某个指定的文件中,或者定向到黑洞(/dev/null)
标准输入 (STDIN) 文件描述符:0,默认:键盘输入
标准输出( STDOUT) 文件描述符:1,默认:屏幕输出
错误输出 (STDERR) 文件描述符:2,默认:屏幕输出
正确输出
(1)覆盖输出(先清空,后写入):>(标准格式:1>)
(2)追加输出(直接写入文件末尾):>>(标准格式:2>>)
错误输出:
(1)覆盖输出(先清空,后写入):2>
(2)追加输出(直接写入文件末尾):2>>
混合输出:&>/dev/null
&>>/dev/null
1>file >2>&1
管道操作符号:“|”,简单说就是将左右两个命令连接起来,将左侧的【标准输出】—>>右侧的【标准输入】
注意:错误输出无法通过管道传递至右边的【标准输入】
xargs:让不支持管道技术的命令可以使用管道技术,作用是将左侧命令的输出作为参数传递给右侧命令输入
tee:管道中使用tee,可以将左侧输出的结果存储至文件或显示器,但不影响右侧命令的处理和输出结果,
11 Linux 压缩打包
Linux使用最多的格式是zip和tar.gz,Windows和Linux系统共同使用的是zip格式的压缩包,tar.gz在Windows中依然可以识别
该命令仅能对文件进行压缩,且压缩后会删除源文件
应用场景:需要让某个配置文件不生效,但是又不想删除时可以给它打包,需要时再解压出来(此处示例省略)
gzip用法
压缩:gzip file
解压:gzip -d file.gz
查看:zcat file.gz
bizp2(用法同gzip)
该命令主要针对文件或目录压缩
zip用法
压缩:
压缩文件:zip filename.zip filename
压缩目录:zip -r filename.zip /directory (递归打包与压缩)
解压:
默认解压到当前目录:uzip filename.zip
解药目录到指定路径:uzip filename.zip -d /路径
查看:unzip -l filename.zip
tar命令是Linux系统中最常用的压缩与解压缩命令,支持文件和目录的压缩归档,而且能针对目录递归进行压缩归档
tar语法:tar [-zjxcvfpP] filename
c
创建新的归档文件
z
使用gzip压缩归档后的文件(xxx.tar.gz)
x
对归档文件解包
j
使用bzip压缩归档后的文件(xxx.tar.bz2)
t
列出归档文件里的文件列表
J
使用xz压缩归档后的文件(tar.xz)
v
输出命令的归档或解包过程
C
指定解压目录位置
f
指定包文件名,参数f写在最后
X
排除多个文件
-- exclude
排除文件或目录
常用打包与压缩组合命令
组合命令
组合含义
zcf
打包文件为tar.gz格式
zxf
解压文件为tar.gz
xf
智能解压文件
tf
查看压缩包文件内容
扩展:排除文件并打包压缩(tar X tar.gz)
13 Linux文件查找
文件名称:
find [路径] [-name] “查找内容”
find [路径] [-iname] “查找内容”
文件大小:
find [路径] [-size] [+|-|=] (大于|小于|等于)
文件时间:
天: -mtime
find [路径] -name "关键字" -mtime [+7|-7|=7] (7天前|最近7天|第七天,等号可以忽略不写)
分钟:-mmin (查找最近一段时间内发生文件时间发生变化的文件)
find [路径] -type f -mtime [+180|-180|=180] (180分钟前|最近180分钟|第180分钟,等号可以忽略不写)
属主属组:
用户:
-user
-nouser
用户组:
-group
-nogroup
组合使用(逻辑语法的使用)
文件类型:
文件类
用法示例
f —文件
[root@node ~]# find /etc/ -type f
d—目录
[root@node ~]# find /etc/ -type d -name "ifcfg*"
l—链接
[root@node ~]# find /etc/ -type l |wc -l
b—块设备
[root@node ~]# find /dev/ -type b -name "sd*" #查看硬盘分区
c—字符设备
[root@node ~]# find /dev/ -type c
s—套接字
[root@node ~]# find /dev/ -type s
p—管道文件
[root@node ~]# find /dev/ -type p
权限
find 路径 -perm [-|/]MODE
逻辑运算
符号
-a
与(且)
-o
或
-not(!)
非(取反)
find结合以下三个命令使用:
-exec:
后面跟自定义shell,实现文件拷贝和文件删除,限制是只能一个文件一个文件的操作,处理性能极低(标准写法:-exec \;)
-xargs:
将前者命令查到的文件作为一个整体传递给后者命令的输入,使用频率较高
-grep:
当忘记重要配置文件的存储路径,可通过搜索关键字获取其文件路径: