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 off (off修改为on)alias ipv6 off (off修改为on)options ipv6 disable=1 (1修改为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
- Linux FAQ 与学习笔记
- Dom4j学习笔记---FAQ
- Linux学习之系统FAQ
- 【Linux读书笔记】Linux学习之系统FAQ
- Oarcle学习笔记之--- FAQ收集
- Oarcle学习笔记之--- FAQ收集
- Oarcle学习笔记之---FAQ收集
- MySQL学习笔记——FAQ
- C++ FAQ学习笔记 9,10章
- C++ FAQ学习笔记 18章 继承
- linux faq
- Linux FAQ
- Linux FAQ
- Linux FAQ
- linux FAQ
- linux FAQ
- [学习笔记]ajax 动态加载的FAQ (frequently asked question)
- C++ FAQ学习笔记 11 章 析构函数
- Redis数据类型
- Makefile经典教程(掌握这些足够)
- Java list 三级排序
- Java 阶段学习总结
- UItextView未按指定样式换行解决方案
- Linux FAQ 与学习笔记
- JVM原理和优化
- leetcode_longest substring without repeating characters
- 170705 逆向-RouterScan(1)
- 采用Bitmap的extractAlpha产生图片边缘光晕效果
- java、正则表达式、php校验“统一社会信用代码”
- 机器人技术(3)机器人操作系统ROS简单教程
- JSON和JSONP
- 关于安卓登录注册页面构建(包含用户名密码验证+记住密码+再按一次返回退出)