Linux FAQ 與學習筆記

說明:該筆記爲本人在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選項值爲INFO
LogLevel  INFO

【ssh禁用空密碼】

[root@localhost ~]# vim /etc/ssh/sshd_config

#修改PermitEmptyPasswords選項值爲no
PermitEmptyPasswords 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 --> check
net.ipv4.tcp_timestamps = 0

[root@localhost ~]# sysctl -p
#設置完成後,執行sysctl -p,重載sysctl規則

#隨後執行sysctl -a |grep timestamps,查看生效情況
[root@localhost ~]# sysctl -a |grep timestamp
net.ipv4.tcp_timestamps = 0

【遷移linux服務器用戶名密碼和家目錄】

將原系統中的/etc/passwd , /etc/group , /etc/shadow備份出來,在新系統中將上述3個文件替換此處的同名文件
將原系統中的/home目錄壓縮備份,在新系統中替換/home/下的所有內容

【修改環境變量在命令行顯示指定名稱】

[root@localhost ~]# vim /etc/profile
PS1="[\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 on
alias ipv6 on
options ipv6 disable=0

【配置hitstory加上時間戳和用戶名】

[root@localhost ~]# vim /etc/profile
export 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章