Linux就该这么学-学习笔记(五)

0x01 用户身份与能力

管理员UID为0:系统的管理员用户。

系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。

普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

1.useradd命令

用于创建新的用户,格式为“useradd [选项] 用户名”。

该命令创建用户账户,默认的用户家目录会存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。

参数:

-d:指定用户的家目录(默认为/home/username)

-e:账户的到期时间,格式为YYYY-MM-DD

-u:指定该用户的默认UID

-g:指定一个初始的用户基本组(必须已存在)

-G:指定一个或多个扩展用户组

-N:不创建与用户同名的基本用户组

-s:指定该用户的默认Shell解释器

注:如果使用-s参数指定解释器为/sbin/nologin,那么该用户无法登录到系统中。

2.groupadd命令

用于创建用户组,格式为“groupadd [选项] 群组名”

3.usermod命令

用于修改用户的属性,格式为“usermod [选项] 用户名”

参数:

-c:填写用户账户的备注信息

-d -m:参数-d与参数-m连用,可重新指定用户的家目录并自动把旧的数据转移过去

-e:账户的到期时间,格式为YYYY-MM-DD

-g:变更所属用户组

-G:变更扩展用户组

-L:锁定用户禁止其登录系统

-U:解锁用户,允许其登录系统

-s:变更默认终端

-u:修改用户的UID

4.passwd命令

用于修改用户密码、过期时间、认证信息等,格式为“passwd [选项] [用户名]"。

普通用户只能修改自己的命令,而root管理员能够修改自己或他人的密码。

参数:

-l:锁定用户,禁止其登录。

-u:解除锁定,允许用户登录

--stdin:允许通过标准输入修改用户密码,如echo “NewPassWord” | passwd --stdin Username

-d:使该用户可用空密码登录系统

-e:强制用户在下次登录时修改密码

-S:显示用户的密码是否被锁定,以及密码所采用的加密算法名称

5.userdel命令

用于删除用户,格式为“userdel [选项] 用户名”。

参数:

-f:强制删除用户

-r:同时删除用户及用户家目录

0x02 文件权限与归属

常见的字符如下:

-:普通文件

d:目录文件

l:链接文件

b:块设备文件

c:字符设备文件

p:管道文件

0x03 文件的特殊权限

1.SUID

执行之后会让文件的所有者的权限从rwx变为rws,或者从rw-变成rwS。

2.SGID

两种功能:

a.让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)

b.在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)

设置命令(注意加粗部分):

chmod -Rf g+s 目录名/

执行之后,该目录的所属组的权限从rwx变为rws,或者从rw-变为rwS。

3.SBIT

这个可以理解为保护位,也就是在多人共享目录中,自己创建的文件除了该目录的所有者以外,只有自己才能够删除。

设置命令(注意加粗部分):

chmod -R o+t 目录名/

执行之后,该目录的其他人权限从rwx变为rwt,或者从rw-变为rwT。

 

chmod命令:

用来设置文件或目录的权限,格式为“chmod [参数] 权限 文件或目录名称”

chown命令:

用于设置文件或目录的所有者和所属组,格式为“chown [参数] 所有者:所属组 文件或目录名称“

注:大写参数-R是用来表示递归操作,即对目录内所有的文件进行整体操作。

0x04 文件的隐藏属性

1.chattr命令

用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。

如果需要将某个隐藏功能添加到文件中,则需要在命令后面添加“+参数”,反之则是“-参数”。

参数:

i:无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件。

a:仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)

S:文件内容在变更后立即同步到硬盘(sync)

s:彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)

A:不再修改这个文件或目录的最后访问时间(atime)

b:不再修改文件或目录的存取时间

D:检查压缩文件中的错误

d:使用dump命令备份时忽略本文件/目录

c:默认将文件或目录进行压缩

u:当删除该文件后依然保留其在硬盘中的数据,方便日后恢复

t:让文件系统支持尾部合并(tail-merging)

X:可以直接访问压缩文件中的内容

2.lsattr命令

用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”

0x05 文件访问控制列表

1.setfacl命令

用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”

针对目录文件需要使用-R递归参数,针对普通文件需要使用-m参数,如果想要删除某个文件的ACL,则可以使用-b参数。

注:文件权限最后的一个点(.)变为加号(+)的话,就代表该文件已经设置了ACL。

2.getfacl命令

用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”

0x06 su命令与sudo服务

su命令都懂。

sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为“sudo [参数] 命令名称”

参数:

-h:列出帮助信息

-l:列出当前用户可执行的命令

-u 用户名或UID值:以指定的用户身份执行命令

-k:清空密码的有效时间,下次执行sudo时需要再次进行密码验证

-b:在后台执行指定的命令

-p:更改询问密码的提示语

注:可以使用visudo命令来配置用户权限,另外注意一点,只有root管理员才可以使用visudo命令编辑sudo服务的配置文件。

 

需要了解的问题

1.在RHEL7系统中,root管理员是谁?

答:是UID为0的用户,默认为root管理员。

2.如何使用Linux系统的命令行来添加或删除用户?

答:useradd和userdel

3.若某个文件的所有者具有文件的读/写/执行权限,其余人仅有读权限,那么用数字法表示应该是什么?

答:所有者权限为rwx,所属组和其他人的权限为r--,数字法为744

4.某链接文件的权限用数字法表示为755,那么相应的字符法表示是什么呢?

答:lrwxr-xr-x。

5.如果希望用户执行某命令时临时拥有该命令所有者的权限,应该设置什么特殊权限?

答:特殊权限中的SUID。

6.若对文件设置了隐藏权限+i,则意味着什么?

答:无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件。

7.使用访问控制列表(ACL)来限制linuxprobe用户组,使得该组中的所有成员不得在/tmp目录中写入内容。

答:想要设置用户组的ACL,则需要把u改成g,即setfacl -Rm g:linuxprobe:r-x /tmp

8.当普通用户使用sudo命令时是否需要验证密码?

答:系统在默认情况下需要验证当前登录用户的密码,若不想验证,可添加NOPASSWD参数。

注:NOPASSWD参数的例子:

用户名 ALL=NOPASSWD: 某个命令的绝对路径
posted @ 2020-02-03 18:42  Paddling  阅读(357)  评论(0编辑  收藏  举报