目录
- 概述
- lscpu-显示有关CPU架构的信息
- uname-查看系统信息
- lsmod-输出加载的所有模块
- lastb-输出最后登录失败的用户
- last-展示用户最近登录信息
- lastlog-展示所有用户最后的登录时间
- systemctl-系统服务,开机自启排查
- crontab-计划任务
- 选项
- history-查看历史命令
- 选项
- 常用选项
- ps-查看进程
- 标题行解释
- 选项
- 常用选项组合
- 显示所有用户的所有进程信息(-aux)
- 以全格式显示进程信息(-ef)
- 显示详细的线程信息(-eLf)
- 自定义输出格式(-eo)
- 显示指定进程ID的详细信息
- 显示指定用户的所有进程信息
- 按CPU使用率降序排列进程信息(--sort)
- lsof-显示Linux系统当前已打开的所有文件列表
- 标题行解释
- 选项
- 常用选项
- top-查看部分进程并排序
- 标题行解释
- 选项
- 常用选项
- kill-杀死进程
- strace-监控进程
- 选项
- 常用选项
- fuser-使用文件或文件结构识别进程
- su
- 选项
- 常用选项
- sudo
- 选项
- 常用选项
- 参考
概述
本文介绍下在应急响应过程中,linux系统下排查系统、进程、服务可能用到的命令,有些命令选项很多,读者可以仅看常用选项。不涉及内存、进程注入、rootkit等高级攻击的排查。
lscpu-显示有关CPU架构的信息
uname-查看系统信息
-a, --all 按顺序打印全部信息,如果 -p 和 -i 的信息是未知,那么省略。
-s, --kernel-name 打印内核名称。
-n, --nodename 打印网络节点主机名称。
-r, --kernel-release 打印内核release。
-v, --kernel-version 打印内核版本。
-m, --machine 打印机器名称。
-p, --processor 打印处理器名称。
-i, --hardware-platform 打印硬件平台名称。
-o, --operating-system 打印操作系统名称。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
lsmod-输出加载的所有模块
- Module:模块的名称。
- Size:模块的大小。
- Used:依赖模块的个数。
- by:依赖模块的内容。
lastb-输出最后登录失败的用户
last-展示用户最近登录信息
常用-n参数,n为展示的数量
lastlog-展示所有用户最后的登录时间
systemctl-系统服务,开机自启排查
systemctl命令 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
任务 | 旧指令 | 新指令 |
---|---|---|
使某服务自动启动 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服务不自动启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active) |
显示所有已启动的服务 | chkconfig --list | systemctl list-units --type=service |
启动服务 | service httpd start | systemctl start httpd.service |
停止服务 | service httpd stop | systemctl stop httpd.service |
重启服务 | service httpd restart | systemctl restart httpd.service |
重载服务 | service httpd reload | systemctl reload httpd.service |
举例
systemctl list-units --type=service
查看自启服务
systemctl list-units --type=service | grep enabled
crontab-计划任务
linux自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
选项
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。
Linux下的任务调度分为两类: 系统任务调度 和 用户任务调度 。
系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
/etc/crontab文件包括下面几行:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
前四行是用来配置crond任务运行的环境变量
第一行SHELL变量指定了系统要使用哪个shell,这里是bash
第二行PATH变量指定了系统执行命令的路径
第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
用户任务调度: 用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
- minute: 表示分钟,可以是从0到59之间的任何整数。
- hour:表示小时,可以是从0到23之间的任何整数。
- day:表示日期,可以是从1到31之间的任何整数。
- month:表示月份,可以是从1到12之间的任何整数。
- week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
- command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
- 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
- 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
- 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
- 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
举例
每月2号和每周五,每两分钟以lady_killer用户身份执行一次touch /tmp/lady_killer_test.txt
可以看到已经创建成功
history-查看历史命令
默认读取~/.bash_history中的历史命令
选项
-c 清空历史列表。
-d offset 根据offset删除记录。如果是正数则表示offset位置的记录,如果为负数则表示从结尾向前offset位置的记录。
-a 将当前终端的历史记录行添加到历史记录文件。
-n 将尚未从历史文件中读取的历史行追加到当前历史列表中。
-r 读取历史文件,并将其内容附加到历史列表中。
-w 将当前历史记录列表附加到历史记录文件中并且附加它们到历史列表中。
-p 在每个arg上执行历史记录扩展并在标准输出上显示结果,而不将结果存储在历史记录列表中。
-s 将每个arg作为单个条目附加到历史记录列表。
常用选项
查看最近5条
在命令行中,可以使用符号!执行指定序号的历史命令
接下来看看攻击者删除历史命令的方法
方法1:
echo '' > ~/.bash_history
可以看到留下了清理痕迹
方法2:
vim ~/.bash_history
依然留下了清理痕迹
方法3:
history -c
命令行terminal无法查看,但文件中还存在
方法4:
rm ~/.bash_history && touch ~/.bash_history
依然留下了清理痕迹
总之,通过清理痕迹的方式能够让应急同学看不到执行了什么命令,但最后的清理动作会保留。
应急同学可以学习一下history加固相关知识,增加条数、IP、执行用户,以及使用chattr防止篡改。
ps-查看进程
ps实用程序显示标题行,然后显示包含有关所有具有控制终端的进程的信息的行。
通过使用-a、-G、-g、-p、-T、-t、-U和-u选项的任意组合,可以选择显示不同的进程集。如果给出了多个这些选项中的一个以上,则ps将选择满足至少一个给定选项的所有进程。
对于已选择显示的进程,ps通常会每个进程显示一行。对于某些进程,-M选项可能会导致多个输出行(每个线程一行)。默认情况下,所有这些输出行首先按控制终端排序,然后按进程ID排序。-m、-r和-v选项将更改排序顺序。如果给出了多个排序选项,则所选进程将按最后指定的排序选项进行排序。
对于已选择显示的进程,所选择要显示的信息是基于一组关键字来选择的。默认输出格式包括每个进程的进程ID、控制终端、CPU时间(包括用户和系统时间)、状态和关联命令。
标题行解释
- %cpu:进程的CPU利用率;时间基准因计算方式不同而异,因此所有%cpu字段的总和可能超过100%。
- %mem:该进程使用的实际内存的百分比。
- flags:与进程关联的标志,如包含文件<sys/proc.h>中所示:
- P_ADVLOCK 0x00001 进程可能持有 POSIX 推荐锁
P_CONTROLT 0x00002 拥有控制终端
P_LP64 0x00004 进程是 LP64 的
P_NOCLDSTOP 0x00008 子进程停止时没有 SIGCHLD
P_PPWAIT 0x00010 父进程正在等待子进程 exec/exit
P_PROFIL 0x00020 已开始分析
P_SELECT 0x00040 正在选择;唤醒/等待危险
P_CONTINUED 0x00080 进程被停止并继续执行
P_SUGID 0x00100 上次执行以来设置过 ID 特权
P_SYSTEM 0x00200 系统进程:没有信号、统计信息或交换
P_TIMEOUT 0x00400 在休眠期间计时超时
P_TRACED 0x00800 被调试的进程正在被跟踪
P_WAITED 0x01000 调试进程一直在等待子进程
P_WEXIT 0x02000 正在退出
P_EXEC 0x04000 进程调用了 exec
P_OWEUPC 0x08000 在下一个 ast 调用时,进程欠一个 addupc() 调用
P_WAITING 0x40000 进程正在进行 wait()
P_KDEBUG 0x80000 此进程开启了 Kdebug 跟踪
- P_ADVLOCK 0x00001 进程可能持有 POSIX 推荐锁
- lim:通过调用 setrlimit(2) 指定的内存使用软限制。
- lstart:显示命令开始的确切时间。
- nice:进程调度增量(参见 setpriority(2))。
- rss:进程的实际内存(驻留集)大小,以1024字节单位表示。
- start:命令开始的时间。如果命令开始不到24小时,会使用“%l:ps.1p”格式来显示开始时间。如果命令开始不到7天,会使用“%a6.15p”格式来显示开始时间。否则,会使用“%e%b%y”格式来显示开始时间。
- state字段给出了进程的状态信息。第一个字符表示进程的运行状态:
- I:表示处于空闲状态(休眠时间超过约20秒)。
R:表示可运行的进程。
S:表示休眠状态,休眠时间不超过约20秒。
T:表示停止的进程。
U:表示进程正在进行不可中断的等待。
Z:表示死亡进程(“僵尸”进程)。
+:进程位于控制终端的前台进程组中。
<:进程已提高CPU调度优先级。
>:进程已指定内存需求的软限制,并且当前超过该限制;这样的进程不会被交换出去。
A:进程请求随机页面替换(例如,来自vadvise(2)的VA_ANOM,比如lisp(1)在进行垃圾回收时)。
E:进程正在尝试退出。
L:进程在核心中锁定了页面(例如,用于原始I/O)。
N:进程降低了CPU调度优先级(参见setpriority(2))。
S:进程要求FIFO页面替换(例如,来自vadvise(2)的VA_SEQL,比如使用虚拟存储器按顺序访问大量数据的大型图像处理程序)。
s:进程是会话领导者。
V:进程在vfork(2)期间被挂起。
W:进程已被交换出去。
X:进程正在被跟踪或调试。
- I:表示处于空闲状态(休眠时间超过约20秒)。
- tt字段是控制终端的路径名的缩写,如果有的话。缩写由/dev/tty后面的三个字母组成,对于控制台来说是“con”。如果该进程无法访问该控制终端(即已被撤销),则后面会加上“-”。
- wchan字段指示进程等待的事件(系统中的地址)。当以数字形式打印时,地址的前部分会被修剪掉,并以十六进制打印,例如,0x80324000会打印为324000。
- acflag:记账标志(别名 acflg)
args:命令及其参数
comm:命令
command:命令及其参数
cpu:短期 CPU 使用因子(用于调度)
etime:已运行的时间
flags:进程的标志,用十六进制表示(别名 f)
gid:进程的组 ID(别名 group)
inblk:总读取的块数(别名 inblock)
jobc:作业控制计数
ktrace:跟踪标志
ktracep:跟踪的 vnode
lim:内存使用限制
logname:启动会话的用户登录名
lstart:启动时间
majflt:总页面错误
minflt:总页面回收
msgrcv:接收的消息总数(从管道/套接字读取)
msgsnd:发送的消息总数(写入管道/套接字)
nice:nice 值(别名 ni)
nivcsw:总的非自愿上下文切换
nsigs:接收的信号总数(别名 nsignals)
nswap:总的换入/换出次数
nvcsw:总的自愿上下文切换
nwchan:等待通道(作为地址)
oublk:总写入的块数(别名 oublock)
p_ru:资源使用情况(仅对僵尸进程有效)
paddr:交换地址
pagein:页面输入(与 majflt 相同)
pgid:进程组号
pid:进程 ID
ppid:父进程 ID
pri:调度优先级
prsna:persona
re:核心驻留时间(以秒为单位;127 = 无限)
rgid:真实组 ID
rss:常驻内存集大小
ruid:真实用户 ID
ruser:用户名称(来自 ruid)
sess:会话 ID
sig:挂起的信号(别名 pending)
sigmask:阻塞的信号(别名 blocked)
sl:睡眠时间(以秒为单位;127 = 无限)
start:启动时间
state:符号化的进程状态(别名 stat)
svgid:从 setgid 可执行文件中保存的 gid
svuid:从 setuid 可执行文件中保存的 UID
tdev:控制终端设备号
time:累计 CPU 时间,用户 + 系统(别名 cputime)
tpgid:控制终端进程组 ID
tsess:控制终端会话 ID
tsiz:文本大小(以 K 字节为单位)
tt:控制终端名称(两个字母缩写)
tty:控制终端的完整名称
ucomm:用于记账的名称
uid:有效用户 ID
upr:从系统调用返回时的调度优先级(别名 usrpri)
user:用户名称(根据用户 ID)
utime:用户 CPU 时间(别名 putime)
vsz:虚拟大小(以 K 字节为单位)(别名 vsize)
wchan:等待通道(作为符号名称)
wq:工作队列线程的总数
wqb:被阻塞的工作队列线程数
wqr:正在运行的工作队列线程数
wql:工作队列限制状态(C = 受限制的线程限制,T = 总线程限制)
xstat:退出或停止状态(仅对停止或僵尸进程有效)
选项
-A:显示其他用户进程的信息,包括那些没有控制终端的进程。
-a:显示其他用户进程以及您自己的进程信息。这将跳过没有控制终端的进程,除非同时指定了-x选项。
-C:通过使用“原始”CPU计算来改变CPU百分比的计算方式,该计算方式忽略“常驻”时间(通常没有影响)。
-c:将“command”列的输出更改为仅包含可执行文件名,而不是完整的命令行。
-d:类似于-A,但排除会话领导者。
-E:同时显示环境变量。这不会反映进程启动后的环境变化。
-e:与-A相同。
-f:显示uid、pid、父进程pid、最近的CPU使用率、进程启动时间、控制终端、已用CPU时间以及关联的命令。如果还使用了-u选项,则显示用户名而不是数字UID。当使用-o或-O在-f之后进行显示时,命令字段不像其他格式那样被严重截断。
-G:显示正在以指定真实组ID运行的进程的信息。
-g:显示具有指定进程组领导者的进程信息。
-h:根据需要重复打印信息标题,以保证每页信息有一个标题。
-j:打印与以下关键词相关联的信息:用户、pid、ppid、pgid、sess、jobc、state、tt、time和command。
-L:列出可用于-O和-o选项的关键词集。
-l:显示与以下关键词相关联的信息:uid、pid、ppid、flags、cpu、pri、nice、vsz=SZ、rss、wchan、state=S、paddr=ADDR、tty、time和command=CMD。
-M:打印与每个任务相对应的线程。
-m:按内存使用进行排序,而不是按控制终端和进程ID的组合排序。
-O:在默认信息显示中,在进程ID之后添加与空格或逗号分隔的关键词列表相关的信息。关键词可以用等号('=')和字符串附加。这将导致打印的标题使用指定的字符串而不是标准标题。
-o:显示与空格或逗号分隔的指定关键词列表相关联的信息。也可以以多个-o选项的形式给出多个关键词。关键词可以用等号('=')和字符串附加。这将导致打印的标题使用指定的字符串而不是标准标题。如果所有关键词的标题文本为空,将不会写入标题行。
-p:显示与指定进程ID匹配的进程信息。
-r:按当前CPU使用率进行排序,而不是按控制终端和进程ID的组合排序。
-S:通过将所有退出的子进程时间累加到其父进程中,改变进程时间的计算方式。
-x: ps命令会列出所有与当前用户相关的进程,无论是通过终端启动的还是通过其他方式启动的。
常用选项组合
显示所有用户的所有进程信息(-aux)
包括进程ID、CPU使用率、内存使用率等。
ps -aux
以全格式显示进程信息(-ef)
包括进程ID、父进程ID、用户、状态、运行时间、终端等。
ps -ef
显示详细的线程信息(-eLf)
ps -eLf:,包括线程ID、优先级、状态、CPU使用率等。
自定义输出格式(-eo)
只显示进程ID、父进程ID、命令、CPU使用率和内存使用率。
ps -eo pid,ppid,cmd,%cpu,%mem
显示指定进程ID的详细信息
ps -p <PID> -f
显示指定用户的所有进程信息
ps -u <USER>
按CPU使用率降序排列进程信息(–sort)
ps -aux --sort=-%cpu
lsof-显示Linux系统当前已打开的所有文件列表
标题行解释
- COMMAND: 这是打开文件的进程的名称。
- PID: 这是打开文件的进程的进程 ID。
- TID: 这是线程ID。这个字段只在 -K 选项(列出内核线程)被使用时才会显示。
- USER: 这是打开文件的进程的所有者的用户名。
- FD: 这是文件描述符,它是进程用来访问文件的句柄。常见的值包括 cwd(当前工作目录)、txt(程序文本(代码和数据))、err(标准错误)、等等。
- TYPE: 这是文件的类型。常见的类型包括 DIR(目录)、REG(常规文件)、CHR(字符设备)、BLK(块设备)、FIFO(先进先出队列)、SOCK(套接字)等。
- DEVICE: 这是设备号。对于磁盘文件,这通常是设备的主设备号和次设备号。
- SIZE/OFF: 对于常规文件,这是文件的大小。对于网络文件,这是本地和远程的网络地址。
- NODE: 对于网络文件,这是本地和远程的网络地址。对于UNIX域套接字,这是套接字的i-node号。
- NAME: 这是打开的文件的名称。对于网络文件,这是本地和远程的网络地址。
选项
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息
常用选项
列出指定进程号所打开的文件
lsof -p 636
获取端口对应的进程
lsof -i:8082
列出目录下被打开的文件和对应进程
lsof /elkeid/mongodb
top-查看部分进程并排序
动态实时显示进程信息
标题行解释
- PID (Process ID): 进程的唯一标识符,用于区分不同的进程。
- USER: 启动进程的用户。
- PR (Priority): 进程的调度优先级。
- NI (Nice value): 进程的优先级,负值表示更高的优先级,正值表示更低的优先级。
- VIRT (Virtual Image): 进程占用的虚拟内存大小,包括代码、数据和共享库等。
- RES (Resident Size): 进程实际使用的物理内存大小(非交换内存)。
- SHR (Shared Memory): 进程使用的共享内存大小。
- S (Status): 进程的状态,包括运行态 ®、睡眠态 (S)、僵死态 (Z) 等。
- %CPU: 进程的 CPU 使用率。
- %MEM: 进程的内存使用率。
- TIME+: 进程占用 CPU 时间的累计值。
- COMMAND: 启动进程的命令名称及参数。
选项
-d, --delay: 指定刷新时间间隔,单位为秒。
-n, --iterations: 指定刷新次数后退出 top。
-b, --batch: 使用批处理模式运行 top,适用于将输出传递给其他程序。
-c, --command: 显示完整的命令行。
-u, --user: 显示指定用户的进程信息。
-p, --pid: 显示指定进程 ID 的信息。
-H, --threads: 显示线程信息。
-i, --ignore-case: 在排序时忽略大小写。
-o, --old-style: 启用旧风格的输出格式。
-C, --no-command: 隐藏命令名称和参数。
-w, --width: 指定输出宽度。
-P, --sort-field: 按指定字段排序(如 %CPU、%MEM)。
常用选项
显示完整命令行
top -c
kill-杀死进程
-s sig 信号名称。
-n sig 信号名称对应的数字。
-l 列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
-L 等价于-l选项。
使用9)SIGKILL杀死进程
kill -9 30634
strace-监控进程
选项
-c 统计每一系统调用的所执行的时间,次数和出错的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-h 输出简要的帮助信息.
-i 输出系统调用的入口指针.
-q 禁止输出关于脱离的消息.
-r 打印出相对时间关于,每一个系统调用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级.
-ttt 微秒级输出,以秒了表示时间.
-T 显示每一调用所耗的时间.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制形式输出非标准字符串
-xx 所有字符串以十六进制形式输出.
-a column 设置返回值的输出位置.默认 为40.
-e expr 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]…
qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行历史记录里的命令,所以要使用\.
-e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
-e trace=file 只跟踪有关文件操作的系统调用.
-e trace=process 只跟踪有关进程控制的系统调用.
-e trace=network 跟踪与网络有关的所有系统调用.
-e strace=signal 跟踪所有与系统信号有关的 系统调用
-e trace=ipc 跟踪所有与进程通讯有关的系统调用
-e abbrev=set 设定strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all.
-e raw=set 将指定的系统调用的参数以十六进制显示.
-e signal=set 指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号.
-e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5
-e write=set 输出写入到指定文件中的数据.
-o filename 将strace的输出写入文件filename
-p pid 跟踪指定的进程pid.
-s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
-u username 以username的UID和GID执行被跟踪的命令
常用选项
统计系统调用
strace -c ./test
test.c
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("%09d\n", a);
return 0;
}
跟踪进程
strace -p 4776
fuser-使用文件或文件结构识别进程
-a:显示命令行中指定的所有文件;
-k:杀死访问指定文件的所有进程;
-i:杀死进程前需要用户进行确认;
-l:列出所有已知信号名;
-m:指定一个被加载的文件系统或一个被加载的块设备;
-n:选择不同的名称空间;
-u:在每个进程后显示所属的用户名。
查看文件进程
fuser /usr/bin/python
查看所属的用户
fuser -u /usr/bin/python
su
切换到指定用户,没有时默认为root
选项
-m, -p, --preserve-environment: 不重置环境变量
-g, --group : 指定主要组
-G, --supp-group : 指定附加组
-, -l, --login: 将 shell 设置为登录 shell
-c, --command : 使用 -c 将单个命令传递给 shell
–session-command : 使用 -c 将单个命令传递给 shell,并且不创建新会话
-f, --fast: 对于 csh 或 tcsh,传递 -f 给 shell
-s, --shell : 如果 /etc/shells 允许,使用指定的 shell 运行
-h, --help: 显示帮助信息并退出
-V, --version: 输出版本信息并退出
常用选项
su - 用户名,这样可以直接切换到该用户家目录
sudo
选项
-A, --askpass: 使用辅助程序提示输入密码
-b, --background: 在后台运行命令
-C, --close-from=num: 关闭所有文件描述符 >= num
-E, --preserve-env: 运行命令时保留用户环境
–preserve-env=list: 保留特定的环境变量
-e, --edit: 编辑文件而不是运行命令
-g, --group=group: 以指定的组名或组ID运行命令
-H, --set-home: 将 HOME 变量设置为目标用户的主目录
-h, --help: 显示帮助信息并退出
-h, --host=host: 在主机上运行命令(如果插件支持)
-i, --login: 以目标用户的登录 shell 运行;也可以指定一个命令
-K, --remove-timestamp: 完全移除时间戳文件
-k, --reset-timestamp: 使时间戳文件失效
-l, --list: 列出用户的权限或检查特定命令;使用两次以获取更长的格式
-n, --non-interactive: 非交互模式,不会提示输入
-P, --preserve-groups: 保持组向量而不是设置为目标用户的组
-p, --prompt=prompt: 使用指定的密码提示
-r, --role=role: 使用指定角色创建 SELinux 安全上下文
-S, --stdin: 从标准输入读取密码
-s, --shell: 以目标用户的 shell 运行;也可以指定一个命令
-t, --type=type: 使用指定类型创建 SELinux 安全上下文
-T, --command-timeout=timeout: 在指定的时间限制后终止命令
-U, --other-user=user: 在列表模式下,显示用户的权限
-u, --user=user: 以指定的用户名或用户ID运行命令(或编辑文件)
-V, --version: 显示版本信息并退出
-v, --validate: 更新用户的时间戳而不运行命令
–: 停止处理命令行参数
常用选项
后面接命令,以root权限运行
以root用户,交互式执行
sudo -i
更多命令学习:
应急响应-主机安全之文件相关命令(Linux操作系统)
参考
《网络安全应急响应技术实战指南》