zoukankan      html  css  js  c++  java
  • Linux基础介绍【第三篇】

    更改SSH服务端远程登录的配置

    windows服务端的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest。Linux的管理用户是root,普通用户默认有很多个,远程连接默认端口是22。

    修改配置文件/etc/ssh/sshd_config,13行Port 22(默认端口22),改为Port 52113(范围0——65535);15行ListenAddress 0.0.0.0 (监听ip地址),改为ListenAddress 192.168.131.1;43行PermitRootLogion yes(root用户远程连接),改为PermitRootLogion no;122行UseDNS yes(DNS解析),改为UseDNS no;GSSAPIAuthentication yes(SSH连接慢),改为GSSAPIAuthentication no;

    cat –n:查看行号

    vim :set nu 显示行号

    diff比较2个文件的不同之处。

    [root@oldboy66 ssh]# diff sshd_config sshd_config.oldboy.20161204

    vimdiff以高亮方式比较2个文件的不同之处。

    [root@oldboy66 ssh]# vimdiff sshd_config sshd_config.oldboy.20161204

    sed替换:

    1. [root@oldboy66 ssh]# sed -ir '13 iPort 52113 PermitRootLogin no PermitEmptyPasswords no UseDNS no GSSAPIAuthenication no' sshd_config

    重启生效:/etc/init.d/sshd restart(可能影响用户)或/etc/init.d/sshd reload(平滑重启)。

    查看端口:

    netstat -lntup|grep sshd

    利用sudo控制用户对系统命令的使用权限

    管理sudo命令:

    visudo或vi /etc/sudoers,visudo更好。vi命令模式直接输入行数+gg到固定的行数,显示行号:set nu,yy(复制)+p(粘贴)复制当前行到下一行,shift+a到结尾处于编辑状态。

    98+gg: 98 root ALL=(ALL) ALL

    给oldboy授予root权限:

    oldboy ALL=(ALL) ALL

    oldboy ALL=(ALL) NOPASSWD:ALL(不提示输入密码)

    用oldboy添加一个用户oldgirl:

    1. [oldboy@oldboy66 ~]$ sudo useradd oldgirl
    2. #输入oldboy密码
    3. [sudo] password for oldboy:
    4. #添加成功
    5. [oldboy@oldboy66 ~]$ tail -1 /etc/passwd
    6. oldgirl:x:501:501::/home/oldgirl:/bin/bash

    给oldboy授予固定权限:

    oldboy ALL=(ALL) /bin/touch,/usr/sbin/useradd

    注意:需要命令的全路径,查看命令全路径which 命令,例如:

    1. [root@oldboy66 ~]# which useradd
    2. /usr/sbin/useradd
    3. [root@oldboy66 ~]# which touch
    4. /bin/touch

    find查找:find / -type f -name "useradd"

    whereis查找:whereis -b useradd

    locate查找:locate useradd

    环境变量:

    PATH系统路径变量,执行ls、cp等非内置命令时,系统会查找PATH里对应的路径是否存在,如果没有就报告找不到该命令。当执行which cp来查看命令所在路径的时候,也就是从PATH变量去搜索。

    PATH变量的临时修改 export PATH="/tmp:$PATH",永久生效将命令放到/etc/profile下,使用source /etc/profile 使得立刻生效。

    Linux中文显示设置

    查看当前字符编码:

    1. [root@oldboy66 tmp]# cat /etc/sysconfig/i18n
    2. LANG="en_US.UTF-8"
    3. SYSFONT="latarcyrheb-sun16"

    操作前先进行备份:cp /etc/sysconfig/i18n /etc/sysconfig/i18n.oldboy.20161205

    1. [root@oldboy66 sysconfig]# sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g' /etc/sysconfig/i18n
    2. [root@oldboy66 sysconfig]# cat /etc/sysconfig/i18n
    3. LANG="zh_CN.UTF-8"
    4. SYSFONT="latarcyrheb-sun16"
    5. #立刻生效
    6. [root@oldboy66 sysconfig]# source /etc/sysconfig/i18n
    7. [root@oldboy66 sysconfig]# echo $LANG
    8. zh_CN.UTF-8

    注意:客户端字符集需改为UTF-8。

    设置Linux服务器时间同步

    显示时间:date

    修改时间:date –s "时间" hwclock

    显示日历:cal

    同步互联网时间:

    1. [root@oldboy66 tmp]# /usr/sbin/ntpdate time.nist.gov

    定时任务执行同步:

    1. #每5分钟执行一次同步
    2. [root@oldboy66 tmp]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >>/var/spool/cron/root
    3. [root@oldboy66 tmp]# crontab -l
    4. */5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

    下面三种方法是等价的:

    /dev/null 空设备(黑洞)

    错误和正确都输出到/dev/null:

    1、1>/dev/null 2>/dev/null

    2、1>/dev/null 2&1

    3、&>/dev/null

    时间同步架构

    小规模时间同步架构:

    大规模时间同步架构:

    设置Linux默认历史记录数

    命令如下,注意此时的配置仅临时生效。

    1. #设置历史记录数5
    2. [root@oldboy66 ~]# HISTSIZE=5

    把配置参数放入配置文件,使得永久生效。

    1. #设置终端超时时间
    2. [root@oldboy66 ~]# echo 'TMOUT=300' >>/etc/profile
    3. #设置历史记录数
    4. [root@oldboy66 ~]# echo 'HISTSIZE=5' >>/etc/profile
    5. #设置文件记录数cat ~/.bash_history
    6. [root@oldboy66 ~]# echo 'HISTFILESIZE=5' >>/etc/profile

    TMOUT=10:连接的超时时间控制变量。

    HISTSIZE=5:命令行的历史记录数量变量。

    HISTFILESIZE=10:历史记录文件的命令行数量变量(~/.bash_history)。

    历史记录清空:history -c。

    删除指定历史记录:history -d 10(删除10号历史记录)。

    加大服务器文件描述符

    文件描述符的概念

    1、表示形式为整数数字(0——65535)。

    2、进程使用的时候会占用文件描述符(标识打开的文件)。

    查看默认文件描述符

    1. [root@oldboy66 ~]# ulimit -n
    2. 1024

    3、调整文件描述符

    方法一:

    直接把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次开机启动的时候生效。

    1. #临时生效
    2. [root@oldboy66 ~]# ulimit -SHn 65535
    3. [root@oldboy66 ~]# ulimit -n
    4. 65535

    写入rc.local:

    1. cat >>/etc/rc.local<<EOF
    2. ulimit -HSn 65535
    3. ulimit -s 65535
    4. EOF

    方法二:

    在/etc/sercurity/limits.conf里面配置。

    1. [root@oldboy66 ~]# echo '* - nofile 65535' >>/etc/security/limits.conf
    2. [root@oldboy66 ~]# tail -1 /etc/security/limits.conf
    3. * - nofile 65536

    调整内核参数文件/etc/sysctl.conf

    vim编辑:shift+g切换到文件结尾

    优化参数:

    1. net.ipv4.tcp_fin_timeout = 2
    2. net.ipv4.tcp_tw_reuce = 1
    3. net.ipv4.tcp_tw_recycle = 1
    4. net.ipv4.tcp_syncookies = 1
    5. net.ipv4.tcp_keepalive_time = 600
    6. net.ipv4.ip_local_port_range = 4000 65000
    7. net.ipv4.tcp_max_syn_backlog = 16384
    8. net.ipv4.tcp_max_tw_buckets = 36000
    9. net.ipv4.route.gc_timeout = 100
    10. net.ipv4.tcp_syn_retries = 1
    11. net.ipv4.tcp_synack_retries = 1
    12. net.core.somaxconn = 16384
    13. net.core.netdev_max_backlog = 16384
    14. net.ipv4.tcp_max_orphans = 16384
    15. #以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理
    16. #net.nf_conntrack_max = 25000000
    17. #net.netfilter.nf_conntrack_tcp_timeout_established = 180
    18. #net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
    19. #net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
    20. #net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

    执行生效:sysctl -p

    查看网络状态:netstat -an

    隐藏Linux版本信息

    控制Linux显示版本信息的文件

    1. [root@oldboy66 ~]# cat /etc/issue
    2. CentOS release 6.6 (Final)
    3. Kernel on an m
    4.    
    5. [root@oldboy66 ~]# cat /etc/issue.net
    6. CentOS release 6.6 (Final)
    7. Kernel on an m

    清空这个两个文件就可以了。

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

    命令:

    1. [root@oldboy66 ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

    解除锁定:chattr -i

    为grub菜单加密码

    为grub菜单加密码的目的是防止他人修改grub做内核等启动设置。

    1、先用/sbin/grub-md5-crypt产生一个MD5密码串。

    1. [root@oldboy66 ~]# /sbin/grub-md5-crypt
    2. Password:
    3. Retype password:
    4. $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.

    2、修改grub.conf文件添加

    password --md5 $1$T2zU4/$KmlABHIkQGczWjh1DdwWU.。

    1. [root@oldboy66 ~]# vim /etc/grub.conf
    2.   1 # grub.conf generated by anaconda
    3.   2 #
    4.   3 # Note that you do not have to rerun grub after making changes
    5.      to this file
    6.   4 # NOTICE: You have a /boot partition. This means that
    7.   5 # all kernel and initrd paths are relative to /boot/,
    8.      eg.
    9.   6 # root (hd0,0)
    10.   7 # kernel /vmlinuz-version ro root=/dev/sda3
    11.   8 # initrd /initrd-[generic-]version.img
    12.   9 #boot=/dev/sda
    13.  10 default=0
    14.  11 timeout=5
    15.  12 splashimage=(hd0,0)/grub/splash.xpm.gz
    16.  13 hiddenmenu
    17.  14 title CentOS 6 (2.6.32-504.el6.x86_64)
    18.  15 root (hd0,0)
    19.  16 kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=e89
    20.     62baa-4051-4832-b0ee-e27aa74f6374 rd_NO_LUKS rd_NO_LVM LANG=en
    21.     _US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto
    22.      KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    23.  17 initrd /initramfs-2.6.32-504.el6.x86_64.img

    注意:password要加在splashimage和title之间,否则可能不生效。

    禁止Linux系统被ping

    命令:

    1. [root@oldboy66 ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
    2. #立刻生效
    3. [root@oldboy66 ~]# sysctl -p

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

    首先查看相关软件的版本号

    1. [root@oldboy66 ~]# rpm -qa openssl openssh bash
    2. openssl-1.0.1e-30.el6.x86_64
    3. bash-4.1.2-29.el6.x86_64
    4. openssh-5.3p1-104.el6.x86_64

    执行升级已知漏洞的软件版本到最新。

    1. [root@oldboy66 ~]# yum install openssl openssh bash

    配置yum源

    查看当前yum源

    1. [root@oldboy66 ~]# cat /etc/yum.repos.d/CentOS-Base.repo

    配置阿里云的yum源

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

    wget:下载,wget http://url;-O:下载到指定路径并改名;--spider:爬虫,检查网站是不是好的,不会下载只是检查;-T(--timeout):指定超时时间(--timeout=seconds);--tries:指定重试的次数(--tries=2);-q(--quiet):后台下载,关闭输出;

    总结:

    1、不用root管理,以普通用户的名义通过sudo授权管理。

    2、更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改为只监听内网IP。

    3、定时自动更新服务器时间,使其和互联网时间同步。

    4、配置yum更新域,从国内更新源下载安装软件包。

    5、关闭SELinux及iptables(在生产场景中,如果有外部IP一般要打开)

    6、调整文件描述符的数量,进程及文件的打开都会消耗文件描述符。

    7、定时自动清理邮件目录垃圾文件,防止inodes节点被占满。

    8、精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、stsstat)。

    9、Linux内核参数优化/etc/sysctl.conf,执行sysctl -p 生效。

    10、更改字符集,使其支持中文。

    11、锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,处理后把chattr、lasttr改名。

    12、清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。

    13、清楚多余的系统虚拟账号。

    14、为grub菜单加密码。

    15、禁止被ping。

    16、升级漏洞软件。

       

    less:按屏(空格、page up/page down)或按行(回车)查看文件。

    more:按屏(空格)或按行(回车)查看文件,不能向上翻。

    Linux目录结构

    linux只有一个顶点/(根),其他所有目录都在根下。根下面的所有目录是一个有层次的树状结构,像一颗倒挂着的大树。

    1. [root@oldboy66 ~]# tree -L 1 /
    2. /
    3. ├── bin
    4. ├── boot
    5. ├── dev
    6. ├── etc
    7. ├── home
    8. ├── lib
    9. ├── lib64
    10. ├── lost+found
    11. ├── media
    12. ├── mnt
    13. ├── oldboy
    14. ├── opt
    15. ├── proc
    16. ├── root
    17. ├── sbin
    18. ├── selinux
    19. ├── srv
    20. ├── sys
    21. ├── tmp
    22. ├── usr
    23. └── var

    tree:显示目录结构,-L:指定显示多少层;-d:只显示目录。

    linux的目录结构和磁盘分区是分离的,可以自由组合。

    /

    ├── bin    Essential command binaries

    ├── boot    Static files of the boot loader

    ├── dev    Device files

    ├── etc    Host-specific system configuration

    ├── home    User home directories(optional)

    ├── lib    Essential shared libraries and kernel modules

    ├── lib64

    ├── lost+found

    ├── media

    ├── mnt    Mount point for mounting a filesystem temporarily

    ├── oldboy

    ├── opt    Add-on application software packages

    ├── proc    进程信息及内核信息(cpu、硬盘分区、内存信息等)

    ├── root    Home directory for the root user(optional)

    ├── sbin    Essential system binaries

    ├── selinux

    ├── srv

    ├── sys

    ├── tmp    Temporary files

    ├── usr    Secondary hierarchy

    └── var    Variable data

    cat /proc/meminfo    内存信息

    cat /proc/cpuinfo cpu信息

    cat /proc/mounts     挂载信息

    cat /proc/loadavg 负载(系统繁忙程度)

    小结:

    1、linux系统的所有目录时一个有层次的倒着的树状目录结构,/根是所有目录的起点。

    2、不同的目录数据可以跨越不同的磁盘分区或不同的磁盘设备。

    /dev/ 设备目录

    /etc/ 系统配置即服务配置文件、启动命令的目录

    /proc 显示内核及进程信息的虚拟文件系统

    /tmp 临时文件目录

    /home 普通用户家目录

    /root 超级管理员的家目录

    /var 变化的目录,一般是日志文件,cache的目录

    /usr 用户程序及数据、帮助文件、二进制命令等的目录

    /bin、/sbin、/usr/sbin 用户命令的目录

    Linux重要目录路径

    /etc/sysconfig/network-scripts/ifcfg-eth0:配置网络地址及GW等。

    1. [root@oldboy66 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    2. DEVICE=eth0 #物理设备名,eth1表示第二块网卡
    3. HWADDR=00:0c:29:a6:d7:cb #网卡的MAC地址,48位(克隆后要删除)
    4. TYPE=Ethernet #以太网
    5. UUID=cd11ee91-579f-43be-9074-a14cabe2e0c6 #uuid唯一用户标识(克隆后要删除)
    6. ONBOOT=yes #控制网卡是不是开机启动
    7. NM_CONTROLLED=yes
    8. BOOTPROTO=dhcp #proto值:none,引导时不使用协议;static,静态分配地址;bootp,使用BOOTP协议;dhcp,使用DHCP协议
    9. DNS2=202.106.0.20 #DNS把baidu.com变成baidu服务器IP。DNS域名和IP的解析工具
    10. DNS1=8.8.8.8
    11. USERCTL=no
    12. PEERDNS=yes
    13. IPV6INIT=no

    IPADDR=10.0.0.7 #addr是IP地址

    NETMASK=255.255.255.0 #子网掩码,划分网络位和主机位10.0.0.0/24

    GATEWAY=10.0.0.254 #网关地址,路由器的地址

    修改配置生效命令:

    1. [root@oldboy66 ~]# /etc/init.d/network restart #ONBOOT=yes
    2. [root@oldboy66 ~]# ifdown eth0 && ifup eth0 #关闭和启动

    ifup:启动

    ifdown:关闭

    /etc/resolv.conf:DNS管理

    1. [root@oldboy66 ~]# cat /etc/resolv.conf
    2. ; generated by /sbin/dhclient-script
    3. search localdomain
    4. nameserver 8.8.8.8
    5. nameserver 202.106.0.20

    小结:

    1、客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)。

    2、客户端DNS也可以在/etc/resolv.conf里设置。

    3、网卡里的设置DNS优先于/etc/resolv.conf。

    /etc/hosts:设定用户IP与域名的对应解析表

    对应windows的文件C:WindowsSystem32driversetchosts。

    1. [root@oldboy66 ~]# cat /etc/hosts
    2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    4. 192.168.131.128 oldboy66

    hosts在企业里的作用:

    1、开发、产品、测试等人员,用于通过正式的域名测试产品。

    2、服务器之间的调用可以用域名(内部的DNS),方便迁移。

    /etc/sysconfig/network:修改机器名及网卡启动,网关等配置。

    1. [root@oldboy66 ~]# cat /etc/sysconfig/network
    2. NETWORKING=yes
    3. HOSTNAME=oldboy66

    更改主机名:

    1、vi /etc/sysconfig/network

    2、hostname 主机名

    同时修改。

    /etc/fstab:设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区

    1. [root@oldboy66 ~]# df –h #查看磁盘挂载信息
    2. Filesystem Size Used Avail Use% Mounted on
    3. /dev/sda3 7.1G 1.4G 5.4G 21% /
    4. tmpfs 497M 0 497M 0% /dev/shm
    5. /dev/sda1 190M 27M 153M 15% /boot

       

    1. [root@oldboy66 ~]# cat /etc/fstab
    2. UUID=e8962baa-4051-4832-b0ee-e27aa74f6374 / ext4 defaults 1 1
    3. UUID=9782b8eb-4b2d-4919-b3b7-14ee46d04ae8 /boot ext4 defaults 1 2
    4. UUID=60b51f07-216b-4e38-9eee-d3de8d897e01 swap swap defaults 0 0
    5. tmpfs /dev/shm tmpfs defaults 0 0 #挂载的设备 挂载点    挂载文件系统类型    挂载选项(读、写)是否系统备份 是否开机自检查
    6. devpts /dev/pts devpts gid=5,mode=620 0 0
    7. sysfs /sys sysfs defaults 0 0
    8. proc /proc proc defaults 0 0
    9. [root@oldboy66 ~]#

    fsck:磁盘检查(不要检查好磁盘),卸载的状态

    挂载方式:

    1、命令挂载

    mount -t ext4 -o noexec /dev/sda1 /mnt

    2、/etc/fstab

       

    测试手动挂载:

    1、创建一个虚拟的块设备。

    dd if=/dev/zero of=/dev/sdb1 bs=4906 count=100

    2、格式化

    mkfs.ext4 /dev/sdb1

    3、挂载

    mount -t ext4 -o loop,noatime,noexec /dev/sda1 /mnt

    4、查看

    df -h

    第一列挂载的设备可以是设备名或UUID、磁盘标签。

    fstab出问题,修复方式:

    1、开机提示输入密码修复。

    2、救援模式rescue修改/etc/fatab只读状态,mount -o rw,remount /。

    /etc/rc.local:用于存放开机自启动程序命令的文件

    让一个程序开机启动:

    1、chkconfig(/etc/init.d/sshd)。

    2、放入/etc/rc.local。

    选择建议:/etc/rc.local,工作中把/etc/rc.local作为服务器档案文件,所有程序开机启动放入/etc/rc.local并加注释。

    rc.local与fstab区别:rc.local在系统启动完成最后加载。

    NFS网络文件系统挂载是,网卡还没启动,就已经加载fstab。(mount -t nfs 10.0.0.7:/data /mnt)

    /etc/inittab:设定系统启动时init进程将把系统设置成什么样的runlevel运行级别及加载相关的级别对应启动文件设置

    Linux启动过程:

    1、开机BIOS自检

    2、MBR引导

    硬盘0柱面0磁盘1扇区的前446byte。

    3、grub引导菜单

    cat /etc/grub.conf

    4、加载内核kernel

    5、启动init进程

    ps -ef|grep init

    /etc/init.d

    /etc/profile:系统全局环境变量永久生效的配置文件

    /etc/profile.d:登录后执行的脚本所在地

    /etc/motd:登录后显示的字符串

    /etc/issue:记录用户登录前显示的系统版本等信息

    1. [root@oldboy66 ~]# cat -n /etc/issue
    2.      1 CentOS release 6.6 (Final)
    3.      2 Kernel on an m

    /etc/group:设定用户的组名与相关信息

    /etc/passwd:账号信息文件

    /etc/shadow:密码信息文件

    /etc/gshadow:组密码信息文件

    /etc/sudoers:可以执行使用sudo命令的配置文件

    visudo -c:检查语法

    yum remove tree -y:yum删除(会删除依赖,慎用)

    /var/log/messages:系统日志,自动轮询按周(rsyslog)

    /var/log/secure:安全日志,SSH连接日志

    dmesg:内核打印的错误信息,例如硬件故障

    /var/spool/cron/root:定时任务crond配置文件

    /proc/mounts:设备挂载信息与df -h类似

  • 相关阅读:
    使用STM32驱动双通道12位DAC(TLV5618)
    CentOS 7挂载离线yum源
    有关于Git的使用的一点心得和说明
    STM32单片机学习心得——MDK使用技巧
    小米手机连接ADB
    我看操作系统的发展
    centos7下cups + samba共打印服务
    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤
    centos7 更新yum源
    CentOS7 安装Odoo9.0
  • 原文地址:https://www.cnblogs.com/yinshoucheng-golden/p/6149556.html
Copyright © 2011-2022 走看看