天天看点

Linux基础

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:

当忘记重要配置文件的存储路径,可通过搜索关键字获取其文件路径:

继续阅读