Linux FAQ 与学习笔记

来源:互联网 发布:扫描文字的软件 编辑:程序博客网 时间:2024/06/04 18:31

说明:该笔记为本人在CentOS发行版的学习过程中记录一些知识点和操作经验使用,不保证适用于其他linux发行版,以下所有的操作记录和知识点均来源于网络和个人的经验积累,与大家共享。


【shell命令运行符号‘&’ ‘;’ ‘&&’的区别】

[root@localhost ~]# command1&command2&command3#三个命令同时执行 [root@localhost ~]# command1;command2;command3#不管前面命令执行成功没有,后面的命令继续执行 [root@localhost ~]# command1&&command2&&command3#只有前面命令执行成功,后面命令才继续执行

【记录ssh日志】

[root@localhost ~]# vim /etc/ssh/sshd_config#修改LogLevel选项值为INFOLogLevel  INFO

【ssh禁用空密码】

[root@localhost ~]# vim /etc/ssh/sshd_config#修改PermitEmptyPasswords选项值为noPermitEmptyPasswords no

【修改登录banner】

改变登录banner可以隐藏操作系统类型和版本号和其它系统信息,这些信息可以会对攻击者有用。

[root@localhost ~]# true > /etc/motd[root@localhost ~]# echo "Authorized uses only. All activity may be monitored and reported." >>/etc/motd[root@localhost ~]# chown root:root /etc/motd[root@localhost ~]# chmod 644 /etc/motd[root@localhost ~]# true > /etc/issue[root@localhost ~]# echo "Authorized uses only. All activity may be monitored and reported." >> /etc/issue[root@localhost ~]# true > /etc/issue.net[root@localhost ~]# echo "Authorized uses only. All activity may be monitored and reported." >> /etc/issue.net

【设置Bash保留历史命令的条数】

[root@localhost ~]# vim /etc/profile#只保留最新执行的5条命令HISTSIZE=5

【设置ssh自动注销时间】

[root@localhost ~]# vim /etc/profile#600秒无操作自动退出TMOUT=600 [root@localhost ~]# vim /etc/ssh/sshd_config#300秒ssh无操作自动退出ClientAliveInterval 300 ClientAliveCountMax 0

【限制能够su到root的用户】

[root@localhost ~]# vim /etc/pam.d/su#在其中添加以下内容auth           required        pam_wheel.so use_uid#随后执行以下命令:[root@localhost ~]# usermod -G10 sam #将sam用户添加到wheel组

【配置syn-send检查】

当客户端发出的syn包带有时间戳的情况下,经过NAT转换后,如果使用的端口被之前使用过,而且时间戳大于本次syn包中的时间戳。系统将会直接丢弃。造成本次链接无法正常完成TCP/IP的3次握手。
net.ipv4.tcp_timestamps这个参数默认是开启的,它会复用链接,并去检查这个IP包里面的时间是不是比当前的时间大,如果大,那么就丢弃该包(见rfc1323,TCP相关的,网上查到的),从而造成SYN-SENT发送后,没有回应。

解决方法如下:

[root@localhost ~]# vim /etc/sysctl.conf# 修改/etc/sysctl.conf文件,在最后增加如下内容# Add by sam# Controls the timestamps check in syn-send# 0 --> do not check# 1 --> checknet.ipv4.tcp_timestamps = 0[root@localhost ~]# sysctl -p#设置完成后,执行sysctl -p,重载sysctl规则#随后执行sysctl -a |grep timestamps,查看生效情况[root@localhost ~]# sysctl -a |grep timestampnet.ipv4.tcp_timestamps = 0

【迁移linux服务器用户名密码和家目录】

将原系统中的/etc/passwd , /etc/group , /etc/shadow备份出来,在新系统中将上述3个文件替换此处的同名文件
将原系统中的/home目录压缩备份,在新系统中替换/home/下的所有内容

【修改环境变量在命令行显示指定名称】

[root@localhost ~]# vim /etc/profilePS1="[\u@Sam_Linux_CentOS6.5 \\W]# "显示效果:[sam@Sam_Linux_CentOS6.5~]# [root@Sam_Linux_CentOS6.5~]# 

【允许监听IPv6端口】

[root@localhost ~]# vim /etc/modprobe.conf alias net-pf-10 offoff修改为onalias ipv6 offoff修改为on)options ipv6 disable=11修改为0#修改后效果如下alias net-pf-10 onalias ipv6 onoptions ipv6 disable=0

【配置hitstory加上时间戳和用户名】

[root@localhost ~]# vim /etc/profileexport HISTTIMEFORMAT = "%F %T `whoami`"

【新建用户并修改密码】

[root@localhost ~]# useradd [用户名][root@localhost ~]# echo "[密码]" | passwd --stdin [用户名]

【查看某个命令属于哪个包】

[root@localhost ~]# yum provides semanager

【修改目录和文件的上下文属性】

[root@localhost ~]# chcon -R -t samba_share_t /smb1  # 给/smb1目录增加samba_share_t的上下文属性# 但是容易被重置删除属性,一般情况下不建议使用此方法。

【修改shell脚本从doc属性修改为unix属性】

vim打开一个shell脚本
:set ff 可看到dos或unix的字样,如果的确是dos格式的
那么用 :set ff=unix 把它强制为unix格式的
然后存盘退出后就可运行。

【查看进程优先级】

[root@localhost ~]# ps -e -o class,rtprio,pri,nice,cmd

class:调度类别
rtprio:实时优先级
pri:静态优先级
nice:手动调整静态优先级
nice和pri的对应关系,一一对应 [-20,19] <-> [100,139]
cmd中加了中括号的,属于内核线程

【手动调整进程优先级】

[root@localhost ~]# nice N COMMAND      #以优先级N运行[root@localhost ~]# renice -N #PID      #对于已经运行的进程,需要用renice,指定pid[root@localhost ~]# chrt N COMMAND      #以优先级N运行[root@localhost ~]# chrt -r -p N #PID   #调整RR类别的实时优先级,以优先级N运行[root@localhost ~]# chrt -f -p N #PID   #调整FIFO类别的实时优先级,以优先级N运行

【绑定进程至某CPU上】

使用mask的方式绑定
0x0000 0001(16进制) —— 0000 0001(2进制) —— CPU0
0x0000 0002(16进制) —— 0000 0010(2进制) —— CPU1
0x0000 0003(16进制) —— 0000 0011(2进制) —— CPU0和CPU1
使用方法:

[root@localhost ~]# taskset -p #MASK #PID [root@localhost ~]# taskset -p 0x00000004 31987  #将31987号进程绑定在CPU2上[root@localhost ~]# taskset -p -c 0-2,7 31987  ##将31987号进程绑定在CPU0, CPU1, CPU2, CPU7上

或者使用numa也可以绑定

【查看进程的系统调用】

[root@localhost ~]# strace -o /tmp/strace.out -p #PID  #查看已启动进程的系统调用,不加-o 也行,-o是输出成文件供后续分析使用[root@localhost ~]# strace -c -p #PID[root@localhost ~]# strace -c #COMMAND  #追踪总体结果,形成统计信息[root@localhost ~]# strace #COMMAND   #查看命令的系统调用

【对文件系统进行压力测试】

dd, iozone, io-stress, fio(专业工具,较难)

【查看配置文件,不显示注释和空行】

[root@localhost ~]# more xxx |grep -v ^$|grep -v ^#

【各种监控系统状态的命令】

sar, dstat, vmstat, mpstat, iostat, top, free, iotop, uptime, cat /proc/meminfo, ss, netstat, lsof, perf, strace

【生成自签名的CA证书,可用于SSL劫持】

[root@localhost ~]# (umask 077; openssl genrsa -out private/cakey-2.key 2048)[root@localhost ~]# openssl req -new -x509 -key private/cakey-2.key -out cacert-2.crt -days 3650[root@localhost ~]# cat private/cakey-2.key cacert-2.crt > ca-2.pem[root@localhost ~]# openssl pkcs12 -export -out ca-2.pfx -inkey /etc/pki/CA/private/cakey-2.key -in /etc/pki/CA/cacert-2.crt Enter Export Password:Verifying - Enter Export Password:

其中cacert-2.crt可以用于导入PC
ca-2.pem和ca-2.pfx可以用于导入服务器进行ssl劫持

#打印出证书的内容:[root@localhost ~]# openssl x509 -in cert.pem -noout -text#打印出证书的系列号[root@localhost ~]# openssl x509 -in cert.pem -noout -serial#打印出证书的拥有者名字[root@localhost ~]# openssl x509 -in cert.pem -noout -subject#以RFC2253规定的格式打印出证书的拥有者名字[root@localhost ~]# openssl x509 -in cert.pem -noout -subject -nameopt RFC2253#在支持UTF8的终端一行过打印出证书的拥有者名字[root@localhost ~]# openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb#打印出证书的MD5特征参数[root@localhost ~]# openssl x509 -in cert.pem -noout -fingerprint#打印出证书的SHA特征参数[root@localhost ~]# openssl x509 -sha1 -in cert.pem -noout -fingerprint#把PEM格式的证书转化成DER格式[root@localhost ~]# openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER#把一个证书转化成CSR[root@localhost ~]# openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem

【linux查看物理CPU数量,逻辑CPU数量,每个CPU的核心数】

#查看物理CPU的个数[root@localhost ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l  #查看逻辑CPU的个数[root@localhost ~]# cat /proc/cpuinfo |grep "processor"|wc -l  #查看CPU是几核[root@localhost ~]# cat /proc/cpuinfo |grep "cores"|uniq  

【修改hostname】

CentOS6.5及以下版本

第1步:修改network文件,修改HOSTNAME字段

[root@localhost ~]# vim /etc/sysconfig/network#修改前HOSTNAME=localhost.localdomail#修改后HOSTNAME=admin.example.local

第2步:修改hosts文件,在127.0.0.1和::1对应的域名处加上刚刚修改后的hostname

[root@localhost ~]# vim /etc/hosts#修改前127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6#修改后127.0.0.1   admin admin.example.local localhost localhost.localdomain localhost4 localhost4.localdomain4::1         admin admin.example.local localhost localhost.localdomain localhost6 localhost6.localdomain6

第3步:手动重启服务器或使用hostname命令修改当前主机名,如果条件允许尽量手动重启服务器

[root@localhost ~]# hostname admin.example.local
原创粉丝点击