Linux 系统管理
一、用户修改密码
问题现象
用户登录后,修改自己的密码,出现 passwd:Authentication token manipulation error(身份验证令牌操作错误),一般是密码文件的权限的问题,不过也有可能是根目录空间满。
问题定位
lsattr 命令查看存放用户和密码的文件属性,发现有i选项(不得任意更动文件或目录)。所以所有的用户都不能修改密码,因为没有权限允许。
[root@client ~]# lsattr /etc/passwd && lsattr /etc/shadow ----i----------- /etc/passwd ----i----------- /etc/shadow
问题解决
chattr 命令将i权限撤销,然后再执行 passwd 改密操作。为了安全起见,改密后把存放用户和密码的文件保护起来
[root@client ~]# chattr -i /etc/passwd && chattr -i /etc/shadow /* 进行改密操作 */ [root@client ~]# chattr +i /etc/passwd && chattr +i /etc/shadow
Linux命令参考
在Linux中用chattr和lsattr命令管理文件和目录属性
二、用GDB调试segmentation fault
当运行程序发生段错误时,使用GDB调试能快速定位错误位置
Linux提供的core dump机制:当程序中出现内存操作错误时,会发生崩溃并产生核心文件(core文件)。
(1)无论你是用Makefile来编译,还是直接在命令行手工输入命令来编译,都应该加上 -g 选项。
(2)一般来说,在默认情况下,在程序崩溃时,core文件是不生成的(很多Linux发行版在默认时禁止生成核心文件)。所以,你必须修改这个默认选项,在命令行执行:
ulimit -c unlimited // 不限制生成的core文件的大小
注,ulimit 的其他用法
ulimit -c 0 // 禁止产生core文件 ulimit -a // 将显示所有的用户定制
(3)运行你的程序,使之重现Segmentation Fault错误。
(4)这时,你会发现在你程序同一目录下,生成了一个文件名为 core.*** 的文件,即核心文件。例如,“core.1523”这样的文件。
(5)用GDB调试它。假设你的可执行程序名为test,则在命令行执行:
gdb test core.1523
三、网络分析工具
ping
(1)使用ipconfig/all观察本地网络设置是否正确。(Linux下使用ifconfig)
(2)ping 127.0.0.1,来检查本地的TCP/IP协议有没有设置好。
(3)ping本机IP地址,这样是为了检查本机的IP地址是否设置有误。
(4)ping本网网关或本网IP地址,这样是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常。(在非局域网中这一步骤可以忽略)
(5)ping本地DNS地址,这样做是为了检查本地DNS服务器是否工作正常
(6)ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常。ping远程IP地址可以用来测试网络延时。
tcpdump
截取某主机相关的包
想要截获所有210.27.48.1的主机收到的和发出的所有的数据包,使用如下命令
tcpdump host 210.27.48.1
想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,使用如下命令(在命令行中使用括号时,一定要添加“\”)
tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3 \)
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用如下命令
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截取某端口相关的包
获取在端口6666上通过的包,使用如下命令
tcpdump port 6666
截取某网卡的包
获取在网卡eth1上通过的包,使用如下命令
tcpdump -i eth1
netstat
(1)IP和TCP的分析,如查看链接某服务端口最多的IP地址命令是
netstat -nat | grep “192.168.1.15:22” | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | head -20
(2)TCP各自状态列表
netstat -nat | awk ‘{print $6}’
(3)先把各种TCP状态全部取出来,然后使用uniq -c统计,之后再进行排序
netstat -nat | awk ‘{print $6}’ | sort | uniq -c
lsof
(1)查看6666端口现在运行情况,命令:lsof -i:6666
(2)查看所属root用户进程所打开的文件,文件类型为txt,命令:lsof -a -u root -d txt
(3)监控打开的文件和设备。查看设备 /dev/tty1被哪些进程占用的命令是:lsof /dev/tty1
(4)监控程序,查看指定程序server打开的文件:lsof -c server
(5)监控用户,查看指定用户sharexu打开的文件:lsof -u sharexu
四、修改网卡名
cd /etc/sysconfig/network-scripts/ //进入网卡文件夹 vi ifcfg-ens33 //将ifcfg-eno16777736(系统默认)里面的NAME DEVICE项修改为eth0 mv ifcfg-ens33 ifcfg-eth0 // 修改网卡名 vi etc/default/grub //加入“net.ifnames=0 biosdevname=0 ”到GRUB_CMDLINE_LINUX变量,禁用该可预测命名规则 grub2-mkconfig -o /boot/grub2/grub.cfg //新生成GRUB配置并更新内核参数 reboot //重启
四、man命令后面的作用
可通过man man 进行查看:
-------------------------------------------
Wish you all the best and good health in 2021.