Linux 杂项

Linux 杂项

Linux 杂项

0. 快捷键操作

ctrl +k 剪切光标以后的所有字符
ctrl +u 剪切光标以前的所有字符
ctri +y 粘贴剪切板上的内容

1. 网卡文件

1.1 网卡文件详解

[root@upload-server network-scripts]# cat ifcfg-eth0
DEVICE=eth0  网卡的逻辑设备号
HWADDR=00:1C:42:22:C6:80  网卡的mac地址
TYPE=Ethernet  上网类型属于以太网
UUID=0bbcaa1c-9288-4fd0-a45c-5d17549ede03 通用的唯一识别码
ONBOOT=yes 是否开机启动该网卡
NM_CONTROLLED=no   是否通过NetworkManager管理网卡设备
BOOTPROTO=dhcp      启动类型属于dhcp或者static
IPADDR=10.0.0.7      ip 地址
NETMASK=255.255.255.0  掩码地址
GATEWAY=10.0.0.254    网关
DNS=8.8.8.8         DNS地址

1.2 网卡重启

尽量不要使用/etc/init.d/network restart或者service network restart,因为这样的话所有网卡都会重启,应该使用ifdown eth0 && ifup eth0

1.3 DNS问题

DNS的配置文件为cat /etc/resolve.conf,但是因为系统可能有多块网卡,该项为全局的,仅当网卡配置文件中没有配置DNS时才生效,不然是以网卡配置文件的为准。

1.4 添加静态路由

route add -net 10.211.55.0/24 gw 10.211.55.1或者
ip route add 10.211.55.0/24 via 10.211.55.1
其中
-net设置到某个网段的路由,
gw 出口网关的ip地址
via 出口网关的ip地址
增加默认路由 
ip route add default via 192.168.0.1 dev eth0 
via 192.168.0.1 默认路由器

2.0 系统初始安装选择包

2.1 minimal最小安装

然后增加base system中的base,compatibilty libraies,debuggings tools和development中的development tools。

2.2 后续安装包组

如果之前忘记安装特定的包组的话,我们可以后期yum安装,如:

yum grouplist 列出所有的包组
补充安装包组
yum groupinstall "Compatibility libraries" "Base" "Development toolsDebugging Tools" "Dial-up Networking Support" -y
注意,包组安装,包组必须加引号。

2.3 初次安装系统时应该将系统升级到最新

[root@upload-server ~]# ll /etc/pki/rpm-gpg/                             
total 16
-rw-r--r--. 1 root root 1706 Jun 26 22:52 RPM-GPG-KEY-CentOS-6
-rw-r--r--. 1 root root 1730 Jun 26 22:52 RPM-GPG-KEY-CentOS-Debug-6
-rw-r--r--. 1 root root 1730 Jun 26 22:52 RPM-GPG-KEY-CentOS-Security-6
-rw-r--r--. 1 root root 1734 Jun 26 22:52 RPM-GPG-KEY-CentOS-Testing-6
[root@upload-server ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS*
[root@upload-server ~]# yum update -y
如果设备已经开始生产了就不要执行这个命令,以免影响业务,如果初使安装则必须升级,yum uptate和yum upgrade命令是一样的,两者的差别很小。

2.4 额外安装一些有用的软件包

yum install tree telnet dos2unix sysstat lrzsz ncc nmap -y

2.5 ssh配置文件优化

[root@upload-server ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
[root@upload-server ~]# egrep "Port|Permit*|UseDNS|GSSAPIA*" /etc/ssh/sshd_config
Port 52113    ssh 端口号
PermitRootLogin no   不允许root ssh登陆
PermitEmptyPasswords no 不允许空密码登陆
GSSAPIAuthentication no 解决Linux之间ssh慢的问题
ListenAddress 10.0.0.0  ssh监听本机的10.0.0.0网段
UseDNS no   指定sshd是否对远程主机名进行反向解析,建议设为no,不然ssh可能会很慢

命令替换更改

sed -i 's%#Port 22%Port 52113%' /etc/ssh/sshd_config
sed -i 's%#PermitRootLogin yes%PermitRootLogin no%' /etc/ssh/sshd_config
sed -i 's%#PermitEmptyPasswords no%PermitEmptyPasswords no%' /etc/ssh/sshd_config
sed -i 's%GSSAPIAuthentication yes%GSSAPIAuthentication no%' /etc/ssh/sshd_config
sed -i 's%#UseDNS yes%UseDNS no%' /etc/ssh/sshd_config
[root@upload-server ~]# egrep "Port|Permit*|UseDNS|GSSAPIA.*on" /etc/ssh/sshd_config |grep -v "#"
Port 52113
PermitRootLogin no
PermitEmptyPasswords no
GSSAPIAuthentication no
UseDNS no

命令在末尾添加方法如下

sed -ir '13 iPort 52113 \nPermitRootLogin no\nPermitEmptyPasswords no\nGSSAPIAuthentication no\nUseDNS no\n' /etc/ssh/sshd_config 
[root@upload-server ssh]# sed -n "13,17p" sshd_config
Port 52113 
PermitRootLogin no
PermitEmptyPasswords no
GSSAPIAuthentication no
UseDNS no
###############################################################
sed -i 's%GSSAPIAuthentication yes%#GSSAPIAuthentication yes%' /etc/ssh/sshd_config  
[root@upload-server ssh]# egrep "Port|Permit*|UseDNS|GSSAPIA.*on" /etc/ssh/sshd_config |grep -v "#"        
Port 52113 
PermitRootLogin no
PermitEmptyPasswords no
GSSAPIAuthentication no
UseDNS no

重启ssh服务,重新登陆ssh,配置文件生效

/etc/init.d/sshd restart
exit

2.6 sudosers

把服务器内部比喻成一个房子的话,安全问题则只能这样,前门只开放80端口和443端口作为web服务,只留一个窗(端口号52113),而且内部通道ssh隐蔽起来,必须拨号VPN才能ssh连接。root用户不能直接ssh登陆,只能普通用户登陆,普通用户用sudo来进行授权管理,让运维既能够干活,又不威胁系统安全,实现用户权限最小化原则。
例如:

[root@backup ~]# echo "test ALL=(ALL)       /usr/sbin/useradd, /user/sbin/userdel" >>/etc/sudoers 
%test 代表test组
[root@backup ~]# echo "%test ALL=(ALL)       /usr/sbin/useradd, /user/sbin/userdel" >>/etc/sudoers 
[zjwh@backup ~]$ echo "zjwh ALL=(ALL)       NOPASSWD: ALL" >>/etc/sudoers 
[zjwh@backup ~]$ sudo visudo -c
/etc/sudoers: parsed OK

2.7 字符集

[root@backup ~]# cat /etc/sysconfig/i18n   
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

其中中文字符集为:zh_CN.UTF-8

2.8 设置系统控制变量

设置连接超时时间
echo "export TMOUT=300" >>/etc/profile
历史记录文件的命令数量变量(~/.bash_history)
echo "export HISTFILESIZE=5" >>/etc/profile
命令行的历史记录数量变量
echo "export HISTSIZE=5" >>/etc/profile
source /etc/profile

2.9 设置文件描述符

文件描述符,进程需要使用它来标识打开的文件,与包括相关信息(文件打开模式,文件的位置类型,文件的初始类型等)的文件对象关联,即文件的上下文。对内核而言,所有打开的文件都是通过文件描述符引用的,当打开一个现有的文件或创建一个新的文件,内核向进程返回一个文件描述符,当读或写一个文件时,使用open或create返回的文件描述符标识别改文件,并将其作为参数传递给read或write。

更改配置文件
echo '*  -  nofile  65535  ' >>/etc/security/limits.conf 
[root@upload-server ~]# tail -1 /etc/security/limits.conf 
*  -  nofile  65535  
[root@upload-server ~]# ulimit -n
65535
命令行更改
[root@upload-server ~]# ulimit -SHn 65535
[root@upload-server ~]# ulimit -n
65535
[root@upload-server ~]# echo "ulimit -SHn 65535" >>/etc/rc.local

3.0 内核优化设置

vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000  65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是针对iptables的优化,防火墙没打开会有报错,请忽略
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

更改完成后执行,sysctl -p命令使上述设置生效。
其中解析如下

1. 套接字由本端要求关闭,该参数决定了它保持在FIN-WAIT-2状态时间,默认值为60秒
net.ipv4.tcp_fin_timeout = 2
2. 表示开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接,默认值为0
net.ipv4.tcp_tw_reuse = 1
3. 表示开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_recycle = 1
4. 表示开启SYN Cookies功能,当出现SYN队列溢出时,启用cookies来处理,可防止少量SYN攻击
net.ipv4.tcp_syncookies = 1
5. 表示当keepalive启用时,TCP发送keepalive消息的频度,默认2小时,改为10分钟
net.ipv4.tcp_keepalive_time = 600
6. 用于来设定允许系统打开的端口范围,即用于向外连接的端口范围
net.ipv4.ip_local_port_range = 4000  65000
7. 表示SYN队列的长度,默认为1024,建议加大队列长度为8192或更多,这样可以容纳更多的等待连接的网络连接数。该参数为服务器端用于记录那些尚未收到客户端确认信息的连接请求最大值
net.ipv4.tcp_max_syn_backlog = 16384
8. 表示同时保持TIME-WAIT套接字的最大数量,如果超过这个值TIME-WAIT套接字将立刻被清除并打印警告信息,默认为180000,apache和nginx建议调低一点,5000-30000,不同业务的服务器也可以给大一点,比如LVS,Squid,此参数可以控制TIME-WAIT套接字的最大数量,避免Squid服务被大量的TIME-WAIT套接字拖死
net.ipv4.tcp_max_tw_buckets = 36000
9. 表示在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_syn_retries = 1
10. 该参数决定了内核在放弃连接之前发送SYN-ACK包的数量
net.ipv4.tcp_synack_retries = 1
11. 该选项默认值为128,用于调节系统同时发起的TCP连接数,在高并发的请求中,默认值可能会导致链接超时或重传,因此需要结合并发请求数来调节此值
net.core.somaxconn = 16384
12. 表示当每个网络口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数,默认值为1000
net.core.netdev_max_backlog = 16384
用于设定系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上,如果超过这个数值,孤立连接将立即被复位并打印警告信息,这个限制只为了(减少这个值)防止简单的Dos攻击,不能过分依靠这个限制甚至认为减少这个值,更多的情况时增加这个值,
net.ipv4.tcp_max_orphans = 16384

3.1 定时清理邮件服务临时目录的垃圾文件

centos 5 系列系统默认安装了sendmail服务,临时存放目录为/var/spool/clientqueue/
centos 6 默认情况下时没有安装sendmail服务,而是改装了postfix服务,因此默认的临时存放目录为:

[root@upload-server ~]# ls -ld /var/spool/postfix/maildrop/
drwx-wx---. 2 postfix postdrop 4096 Mar 24  2017 /var/spool/postfix/maildrop/

手动清理方法如下:

find /var/spool/clientqueue/ -type f |xargs rm -f
find /var/spool/postfix/maildrop/ -type f |xargs  rm -f

可以将上述命令写为脚本,每天晚上凌晨执行一次,如:

[root@upload-server ~]# mkdir -p /server/scripts/
[root@upload-server ~]# echo "find /var/spool/postfix/maildrop/ -type f |xargs  rm -f" > /server/scripts/del_mail_file.sh
[root@upload-server maildrop]# sh  /server/scripts/del_mail_file.sh
[root@upload-server maildrop]# echo "00 00 * * * /bin/sh /server/scripts/del_mail_file.sh" >>/var/spool/cron/root
[root@upload-server maildrop]# crontab -l
00 00 * * * /bin/sh /server/scripts/del_mail_file.sh

3.2 隐藏linux的版本信息

清除登陆时显示在终端的信息
> /etc/issue
> /etc/issue.net
> /etc/motd

3.3 锁定关键系统文件,防止被提权更改

重要文件加锁,加锁后不能创建用户
[root@upload-server maildrop]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
防止黑客用chattr解锁,因此隐藏chattr命令,应该在文档中重要标注,防止忘记
[root@upload-server maildrop]# mv /usr/bin/chattr /usr/bin/chattr.bak
查看文件是否加锁
[root@upload-server maildrop]# lsattr /etc/passwd
----i--------e- /etc/passwd
解锁文件
[root@upload-server ~]# chattr.bak -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

3.4 清除多余的虚拟用户

操作前确认系统服务有哪些,哪些虚拟账号不需要使用,如不确定就不要操作,系统中一般绝大多数的虚拟账号都可以清除,如bin,adm,lp,halt,mail,uucp,operator,games,gopher,ftp,dbus,vcsa,abrt,ntp,saslauth,postfix,tcpdump等。

3.5 为grub菜单加密码

为grub菜单加密码是为了防止他人修改grub进行内核启动设置,以及用单用户启动修改root密码等操作

1. 先利用/sbin/grub-md5-crypt产生md5密码串,如
[root@upload-server ~]# /sbin/grub-md5-crypt 
Password: 
Retype password: 
$1$dOha30$2uxZjJHc/0cgA8D/T27oQ.
2. 修改grub.conf文件,在splashimage和title之间插入密码
password --md5 $1$dOha30$2uxZjJHc/0cgA8D/T27oQ.
如:
[root@upload-server ~]# sed -i '14 i password --md5 $1$dOha30$2uxZjJHc/0cgA8D/T27oQ.' /etc/grub.conf 

设置完成后,下次开机需要管理grub时就会提示需要输入密码

3.6 Linux 禁止ping

此操作用得比较少,因为ping命令可以排查网络故障,一般使用防火墙来设置,让内网用户可以ping,外网用户不能ping
如:

iptables -t filter -I INPUT -p icmp --icmp-type8 -i eth0 -s 10.0.0.0/24 -j ACCEPT
系统禁止ping,则使用
echo "net.ipv4.icmp_echo_ignore_all=1" >>/etc/sysctl.conf
sysctl -p
如果要恢复ping命令,则在/etc/sysctl中删除net.ipv4.icmp_echo_ignore_all=1
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

3.7 升级具有典型漏洞版本的软件

openssl,openssh,bash存在很多软件漏洞,一般会要求修复

[root@upload-server ~]# rpm -qa openssl openssh bash
openssl-1.0.1e-57.el6.x86_64
bash-4.1.2-48.el6.x86_64
openssh-5.3p1-123.el6_9.x86_64
[root@upload-server ~]# yum install openssl openssh bash -y

3.8 更新yum源

使用阿里源
备份
[root@upload-server ~]# ls -ld /etc/yum.repos.d/
drwxr-xr-x. 2 root root 4096 Oct 7 09:20 /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

下载完后执行,yum makecache

使用163源

1. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
3. yum clean all
4. yum makecache

3.9 清理自启动服务

yum install tree telnet dos2unix sysstat lrzsz vim man
以下5项服务建议开机启动:sysstat,rsyslog,sshd,crond,network,其余服务一并关闭,待需要的时候在打开,如:
[root@server tmp]# for n in `chkconfig --list |grep 3:on|awk -F " " '{print $1}'`; do chkconfig $n off;done && for n in sysstat rsyslog sshd crond network;do chkconfig $n on;done
或者
[root@server tmp]# for n in `chkconfig --list |grep 3:on|egrep -v "sysstat|rsyslog|sshd|crond|network"|awk -F " " '{print $1}'`;do chkconfig $n off;done 

4.0 VMware克隆后网络出现问题

  1. 编辑对应的网卡文件,清除HWADDR和UUID所在的行
  2. 清空/etc/udev//rules.d/70-persistent-net.rules文件
  3. 重启系统

转载于:https://www.cnblogs.com/chacha51/p/11228591.html

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值