Linux:systemd 与 sysVinit 彩版对照表

systemd 是一种新型init系统「译者注:每个操作系统都有一个启动程序,而Linux init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以init始终是第一个进程(其进程编号始终为1)」,最早在Fedora中使用「译者注:据维基百科资料:http://en.wikipedia.org/wiki/Systemd#Adoption,最早使用 systemd 的是gentoo,最早使用并成为默认 init system 的是openSUSE。」,经过调整适应了其它许多发行版,例如RedHat、Suse和CentOS。

历史上,我们大部分人用过传统的SysV init 初始化脚本,它通常情况下在/etc/rc.d/init.d/文件夹下。这些脚本调用守护进程二进制代码,在后台fork一个进程。

尽管shell脚本非常的灵活,但是很难实现像superviseing(监管)进程和并行执行命令这样的任务。

通过对systemd的新式守护进程的介绍,我们发现systemd可以在runtime(运行时)更加简单的监管和控制守护进程,并且简化了监控的实现方式(implementation)。

systemctl命令是systemd团队一个非常好的首创。

这个命令能够显示更多的详细错误信息和包括启动错误在内的服务运行时错误。systemd引入了一个新术语:cgroups(控制组),它基本上是可被分层次安排的进程任务组。「译者注:这里简单介绍一下cgroup(control group)称为Containers,Containers着眼于资源的分配,利用configfs作配置。它有两个重要概念:第一是subsystem,内核可以给进程提供的服务/资源;第二是container,一个进程组,成员共享同样的一个或多个子系统分配限制。Containers是分层次的,一个container可以hold多个container。它的可取之处是创建了一个资源分配的框架,其它开发者可以利用这个框架去开发自己的资源分配patch,比如磁盘设备。」

如果仅仅通过原来的初始化系统,决定哪个进程是做什么的、属于哪个用户的变得越来越困难。

但是通过systemd,当一个进程派生其它进程时,这些子进程会被自动变成父进程控制组的成员,这样一来就可以避免继承的混乱。

Linux:systemd 与 sysVinit 彩版对照表
Linux:systemd 与 sysVinit 彩版对照表

有许多新的运行在 rhel / centos 7.0 上的 systemd 命令可以替代 sysvinit 的对应命令。你也可以下载 本文的 PDF 版本


via: http://linoxide.com/linux-command/systemd-vs-sysvinit-cheatsheet/

作者:Bobbin Zachariah 译者:szrlee 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:http://linoxide.com/linux-command/systemd-vs-sysvinit-cheatsheet/

Linux:CentOS 7下搭建高可用集群

Linux:CentOS 7下搭建高可用集群
Linux:CentOS 7下搭建高可用集群

本文以两台机器实现双集热备高可用集群,主机名node1IP192.168.122.168 ,主机名node2IP192.168.122.169

一、安装集群软件

必须软件pcspacemakercorosyncfence-agents-all,如果需要配置相关服务,也要安装对应的软件

二、配置防火墙

1、禁止防火墙和selinux

# systemctl disable firewalld
# systemctl stop firewalld

修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

2、设置防火墙规则

# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --add-service=high-availability

 三、各节点之间主机名互相解析

分别修改2台主机名分别为node1node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。

#vi /etc/hostname
node1

#systemctl restart network.service
#hostname
node1

 配置2台主机的主机表,在/etc/hosts中加入

192.168.122.168 node1
192.168.122.169 node2

 四、各节点之间时间同步

node1node2分别进行时间同步,可以使用ntp实现。 

[root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器 

五、各节点之间配置ssh的无密码密钥访问。

下面的操作需要在各个节点上操作。

# ssh-keygen -t rsa -P ‘’   #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名

两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2 

# ssh node2 ‘date’;date #测试一下是否已经互信 

六、通过pacemaker来管理高可用集群

1、创建集群用户

为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。

# passwd hacluster

Changing password for user hacluster.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

2、设置pcsd开机自启动

# systemctl start pcsd.service
# systemctl enable pcsd.service

3、集群各节点之间进行认证

# pcs cluster auth node1 node2Username: hacluster Password: node1: Authorized node2: Authorized

4、创建并启动集群

[root@z1 ~]# pcs cluster setup --start --name my_cluster node1 node2

node1: Succeeded
node1: Starting Cluster...
node2: Succeeded
node2: Starting Cluster...

5、设置集群自启动

# pcs cluster enable –all

6、查看集群状态信息

[root@z1 ~]# pcs cluster status

7、设置fence设备

这个可以参考

corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默 认配置目前尚不可用,这可以通过如下命令验证:

#crm_verify -L -V

可以通过如下面命令禁用stonith

#pcs property set stonith-enabled=false(默认是true)

8、配置存储

高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。

共享磁盘主要有iscsiDBRD。本文并没有使用共享磁盘。

9、配置浮点IP

不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.122.101作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群 每30秒检查它一次。

# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.170 cidr_netmask=24 op monitor interval=30s
# pcs update VIP op monitor interval=15s

10、配置apache服务

node1node2上安httpd ,确认httpd开机被禁用

# systemctl status httpd.service;

配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1node2上执行

# cat > /etc/httpd/conf.d/status.conf << EOF
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
EOF

首先我们为Apache创建一个主页。在centos上面默认的Apache docroot/var/www/html,所以我们在这个目录下面建立一个主页。

node1节点修改如下:

[root@node1 ~]# cat <<-END >/var/www/html/index.html

Hello node1


END

node2节点修改如下:

[root@node2 ~]# cat <<-END >/var/www/html/index.html

Hello node2


END

下面语句是将httpd作为资源添加到集群中:

#pcs resource create WEB apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status"

11、创建group

VIPWEB resource捆绑到这个group中,使之作为一个整体在集群中切换。(此配置为可选)

# pcs resource group add MyGroup VIP
# pcs resource group add MyGroup WEB

12、配置服务启动顺序

以避免出现资源冲突,语法:(pcs resource group add的时候也可以根据加的顺序依次启动,此配置为可选)

# pcs constraint order [action] then [action]
# pcs constraint order start VIP then start WEB

13、指定优先的 Location (此配置为可选)

Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。同样的,我们给他取一个描述性的名字(prefer-node1),指明我们想在上面跑WEB 这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:

# pcs constraint location WEB prefers node1=50
# pcs constraint location WEB prefers node2=45

这里指定分值越大,代表越想在对应的节点上运行。

14、资源粘性(此配置为可选)

一些环境中会要求尽量避免资源在节点之间迁移。迁移资源通常意味着一段时间内无法提供服务,某些复杂的服务,比如Oracle数据库,这个时间可能会很长。

为了达到这个效果,Pacemaker 有一个叫做“资源粘性值”的概念,它能够控制一个服务(资源)有多想呆在它正在运行的节点上。

Pacemaker为了达到最优分布各个资源的目的,默认设置这个值为0。我们可以为每个资源定义不同的粘性值,但一般来说,更改默认粘性值就够了。资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示负无穷,inf表示正无穷。

# pcs resource defaults resource-stickiness=100

 

常用命令汇总:

查看集群状态#pcs status

查看集群当前配置:#pcs config

开机后集群自启动:#pcs cluster enable –all

启动集群:#pcs cluster start –all

查看集群资源状态:#pcs resource show

验证集群配置情况:#crm_verify -L -V

测试资源配置:#pcs resource debug-start resource

设置节点为备用状态:#pcs cluster standby node1

来源:https://linux.cn/article-3963-1.html

Linux:CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用。正如其名称所暗示的, LEMP 包是由 Linux、nginx、MariaDB/MySQL 和 PHP 组成的。在传统的 LAMP 包中使用的 Apache HTTP 协议服务器性能低下而且难于大规模集群,相比来说 nginx 的高性能及轻量级等特性,正是其的替代方案。 MariaDB 是一款社区支持驱动的 MySQL 数据库的分支,其功能更多性能更佳。PHP,服务端编程语言,具体是由 PHP FastCGI 的增强版 PHP-FPM 组件来处理,生成网页动态内容。

(LCTT 译注:为何采用 LEMP 而不是 LNMP 的缩写?据 https://lemp.io/ 的解释:Nginx 的发音是 Engine-X,重要的发音而不是首字母,而且 LEMP 实际上是可读的,而 LNMP 看起来只是字母表。)

这篇文章里,我们示范如何在 CentOS 操作平台上安装 LEMP 包。我们安装的目标是 CentOS 6 和 CentOS 7 两个操作平台,如有必要会指出它们的不同。

Linux:CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
Linux:CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

第一步: Nginx

让我们在 CentOS 上安装 nginx 作为第一步,然后对它作些基本的配置,比如使其能引导时启动和对防火墙做个性化设置

安装 Nginx

让我们从它的官方的 RPM 源来安装一个预构建的稳定版本的 nginx 包。

在 CentOS 7 系统上:

$ sudo rpm --import http://nginx.org/keys/nginx_signing.key
$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum install nginx

在 CentOS 6 系统上:

$ sudo rpm --import http://nginx.org/keys/nginx_signing.key
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ sudo yum install nginx

注意在安装 nginx RPM 包之前,如果您没有导入 nginx 的官方 GPG 密钥的话,会出一如下所示的警告:

warning: /var/tmp/rpm-tmp.KttVHD: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY

启动 Nginx

安装完成后,nginx 是不会自动启动的。现在让我们来启动它吧,还要做些配置让其可以随着操作系统启动而启动。我们也需要在防火墙里打开 TCP/80 端口,以使得可以远程访问 nginx 的 web 服务。所有这些操作、设置都只需要输入如下命令就可实现。

在 CentOS 7 系统上:

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
$ sudo firewall-cmd --reload

在 CentOS 6 系统上:

$ sudo service nginx start
$ sudo chkconfig nginx on
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo service iptables save

测试 Nginx

nginx 的默认文档要目录是 /usr/share/nginx/html。默认的 index.html 文件一定已经在这目录下了。让我们检测下是否可以访问到这个测试 web 页,输入 http://nginx的ip地址/ 访问。

Linux:CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
Linux:CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)

如果您看到的是如上所示的页面的话,说明 nginx 已经正常启动。继续往下。

来源:https://linux.cn/article-4314-1.html

CentOS/Linux:如何编译最新版的linux 内核

当linux内核社区有新的版本发布的时候,如果你也想升级你的centos或者centos系统的内核版本,那么如何通过源码升级linux的内核吗。本文将会讲述如何从linux 内核官方下载最新的内核版本,并升级安装。

1、查看系统内核版本

1
2
#uname -r
2.6.18-92.el5

2、下载最新版本linux内核
输入下面的命令:

1
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.tar.gz  .

3、清除环境变量,即清除配置文件

1
$ make mrproper

4、 在菜单模式下选择需要编译的内核模块

1
$make menuconfig

#需要 gcc 和 ncurses-devel 的支持,如果没有安装,yum 安装

5、编译内核

1
#make && make modules_install && make install

或者逐步执行:

#make clean确保所有东西均保持最新状态.

#make bzImage 生成内核文件

#make modules 编译模块

#make modules_install 安装模块

#make install 安装

#mkinitrd /boot/initrd_2.6.18.img 根据内核版本和指定参数生成映像文件

#cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.18
#cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18

6、重新配置grub引导程序

1
#vi /boot/grub/grub.conf  #以新内核启动系统,重启系统;

CentOS/linux:如何使用split命令分割文件

当面临将一个大文件进行切分时,linux的split命令是很好的选择。它包含多种参数,支持按行、大小进行切分。本文将会讲述如何使用linux split 命令来做文件的分割,尤其是大文件的分割成多个小文件。

split命令的语法如下:

split [–help][–version][-a ][-b][-C ][-l ][要切割的文件][输出文件名前缀]

对应的参数描述如下:
-a, –suffix-length=N
使用的后缀长度 (默认为 2)
-b, –bytes=SIZE
每个输出文件的字节大小
-C, –line-bytes=SIZE
每个输出文件每行的最大字节大小
-d, –numeric-suffixes
使用数字后缀代替字母后缀
-l, –lines=NUMBER
设定每个输出文件的行数
–help 显示帮助信息
–version
显示版本信息

下面举几个例子:
1)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。命令:

1
2
3
$ split -b 20m splitTest.txt
$ ls
splitTest.txt  xaa  xab  xac

2)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。指定分割后的文件前缀位split,命令:

1
2
3
$ split -b 20m splitTest.txt  split
$ ls
splitaa  splitab  splitac  splitTest.txt

3)将文件splitTest.txt分割成多个文件,每个文件50万行。命令:

1
2
3
4
5
$ wc -l splitTest.txt
1502216 splitTest.txt
$ split -l 500000 splitTest.txt  split
$ ls
splitaa  splitab  splitac  splitad  splitTest.txt

4)将文件splitTest.txt分割成多个文件,每个文件50万行。指定分割后的文件后缀为数字,数字位数为3位,命令:

1
2
3
4
5
$ wc -l splitTest.txt
1502216 splitTest.txt
$ split -l 500000 -d -a 3 splitTest.txt  split
$ ls
split000  split001  split002  split003  splitTest.txt

可以使用cat命令将切分后的文件合并成新的文件:

1
$ cat split0* > original.txt

CentOS7/RHEL7:如何创建并挂载SCSI 共享磁盘

在centos7 系统下我们如何来创建并挂载SCSI 共享磁盘呢?本文将会讲述通过两个虚拟机作为scsi的服务器端和客户端来配置创建并挂载scsi共享磁盘。

实验设备:

用虚拟机虚拟两个 centos6.3 -64bit 系统,并配置好yum

ip设置:
scsi服务端:10.1.1.222
scsi客户端(挂载端):10.1.1.1

1、在服务端安装软件并配置好共享的磁盘,首先在虚拟机中新加入一块硬盘,大小随意。(这里添加100G)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@localhost ~]# fdisk -l
 Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005bb6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         281     2048000   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             281        2611    18717696   83  Linux

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077087

   Device Boot      Start         End      Blocks   Id  System

2、安装scsi服务端软件

1
yum install scsi-target-utils -y

共享磁盘(在配置文件中加入以下代码即可)

1
2
3
4
vim /etc/tgt/targets.conf
    <target iqn.2008-09.com.example:server.target1>
        backing-store /dev/sdb
    </target>

启动服务

1
service tgtd restart

关闭防火墙和selinux

3、在客户端安装客户端软件,并设置挂载

安装客户端软件

1
yum install iscsi-initiator-utils -y

查看是否有共享磁盘

1
iscsiadm --mode discoverydb --type sendtargets --portal 10.1.1.222 --discover

出现以下则表示有共享磁盘 10.1.1.222:3260,1 iqn.2008-09.com.example:server.target1

挂载磁盘

1
iscsiadm --mode node --targetname iqn.2008-09.com.example:server.target1 --portal 10.1.1.222:3260 --login

注意:中间2008-09这段是填写上面查询出来的那个磁盘名

成功挂载后有以下提示

1
2
3
[root@localhost ~]#  iscsiadm --mode node --targetname iqn.2008-09.com.example:server.target1 --portal 10.1.1.222:3260 --login
Logging in to [iface: default, target: iqn.2008-09.com.example:server.target1, portal: 10.1.1.222,3260] (multiple)
Login to [iface: default, target: iqn.2008-09.com.example:server.target1, portal: 10.1.1.222,3260] successful.

查看是否挂载成功
[root@localhost ~]# fdisk -l

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00036380

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         281     2048000   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             281        2611    18717696   83  Linux

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077087

   Device Boot      Start         End      Blocks   Id  System

成功挂载100G硬盘。

CentOS 6.5:如何更换系统的默认yum软件源为163源

当CentOS6.5系统安装完成后,系统默认使用的是centos 官方的yum 软件仓库源,这些源站点都在国外,所以安装更新速度会很慢,那么我们可以更改yum更新源。原理很简单,就是把yum配置文件中的更新源改一下,这里直接用163的镜像站点中的配置文件。

更改方法如下:

1、进入yum配置文件目录

1
cd /etc/yum.repos.d/

2、备份配置文件

1
mv CentOS-Base.repo CentOS-Base.repo.bak

3、下载163的配置

1
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

4、改名

1
mv CentOS6-Base-163.repo CentOS-Base.repo

5、更新数据库

1
yum update

CentOS 6.3:如何配置并优化系统

当你当装完centos系统之后,需要做一些个性化的配置以及系统优化设置,本文将会讲述如何配置并优化刚装完的centos 6.3 操作系统。

全新以最小化包安装了的CentOS6.3系统,作为本地的Web服务器使用,现记录全过程配置网易163的yum源

1. 下载repo文件

1
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo .

2. 备份并替换系统的repo文件

1
2
3
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost ~]#mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost ~]#mv /root/CentOS6-Base-163.repo CentOS-Base.repo

注意:如果直接下载在/etc/yum.repos.d/目录下,不要让.repo文件多于1个,比如:CentOS6-Base-163.repo、CentOS-Base.repo会出错

3. 执行yum源更新

1
2
[root@localhost ~]#yum clean all
[root@localhost ~]#yum makecache


优化系统

一、更新系统到最新

1
[root@web01yum.repos.d]# yum update

二、安装必要的软件包

1
[root@web01~]#yuminstall lrzsz sysstat –y

另外,如果在安装时落下了安装需要的软件包组,可以在这里执行如下命令来安装。

1
2
[root@web01~]#yumgroupinstall “Development Tools”
[root@web01~]#yumgroupinstall “X software development”

三、清理开机自启动的服务
关闭所有开机自启动服务:

1
[root@web01~]# for test in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $testoff;done

打开crond、network、rsyslog、sshd开机自启动服务

1
[root@web01 ~]# for test in crond network rsyslog sshd;do chkconfig --level 3 $test on;done

查看处理结果:

1
2
3
4
5
[root@web01 ~]# chkconfig --list|grep 3:on
crond           0:off   1:off  2:on    3:on    4:on   5:on    6:off
network         0:off  1:off   2:on    3:on   4:on    5:on    6:off
rsyslog         0:off  1:off   2:on    3:on   4:on    5:on    6:off
sshd            0:off   1:off  2:on    3:on    4:on   5:on    6:off


四、更改ssh登陆配置

1
[root@web01 ~]# cp/etc/ssh/sshd_config /etc/ssh/sshd_config.back #备份配置文件
1
2
3
4
5
6
7
8
9
10
11
12
[root@web01 ~]# vim/etc/ssh/sshd_config
##########by test###########################

Port 11111

PermitRootLogin no                 #root用户禁止远程登陆

PermitEmptyPasswords no            #密码为空禁止登陆

UseDNS no                        #不使用DNS

##############################################
1
[root@web01 ~]# /etc/init.d/sshd restart     #重启后生效

五、将需要有root权限的用户名加入sudo挂了,这样用户通过自己的普通账户登陆,就可以以root的权限来管理整个系统。

1
[root@web01 ~]#visudo   #相当于直接编辑/etc/sudoer,使用命令方式更安全,推荐

在文件的中间如下内容的下面添加需要root权限的用户名,格式如下:

1
2
3
## Allow root to run any commands anywhere
root   ALL=(ALL)       ALL
test   ALL=(ALL)       ALL #表示test可拥有完全的系统管理员权限

普通用户环境变量问题和解决办法

对比root和test用户下默认的PATH环境变量

1
2
3
4
[root@web01 ~]# echo$PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[test@web01 ~]$ echo$PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin

经过对比我们发现普通用户上了几个关键环境变量/usr/local/sbin:/sbin:/usr/sbin:是导致执行命令找不到的原因(除非带全路径执行)

解决办法:

编辑~/.bash_profile环境变量文件,把:/usr/local/sbin:/sbin:/usr/sbin:添加到PATH环境变量里,注意:每个路径之间要用冒号分割

1
2
3
4
[test@web01 ~]$ vim./.bash_profile
[test@web01 ~]$source ./.bash_profile   #使添加的内容生效
[test@web01 ~]$ echo$PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/test/bin:/home/test/bin:/usr/local/sbin:/sbin:/usr/sbin

六、修改中文显示

通过快捷的命令方式在/etc/sysconfig/i18n中添加如下命令:

1
2
[root@web01 ~]# echo'LANG="zh_CN.GB18030"' >/etc/sysconfig/i18n
[root@web01 ~]#source /etc/sysconfig/i18n  #使修改生效

七、加大服务器文件描述符

1
2
[root@web01 ~]# vim/etc/security/limits.conf  (默认大小为1024)
*      -   nofile    65535

注意:配置完成后,重新登陆既可查看

1
2
[root@web01 ~]#ulimit -n
65535

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
net.ipv4.tcp_fin_timeout= 2
net.ipv4.tcp_tw_reuse= 1
net.ipv4.tcp_tw_recycle= 1
net.ipv4.tcp_syscookies= 1
net.ipv4.tcp_keepalive_time= 600
net.ipv4.ip_local_port_range= 4000
net.ipv4.tcp_max_syn_backlog= 16384
net,ipv4.tcp_max_tw_buckets= 360000
net.ipv4.route.gc_timeout= 100
net.ipv4.tcp_syn_retries= 1
net.ipv4.tcp_synack_retries=1
net.ipv4.ip_conntrack_max= 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

CentOS/Linux: 命令su、su-、sudo的不同之处


在linux系统中,由于root的权限过大,一般情况都不使用它。只有在一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令。
su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户wade登录的,但要添加用户任务,执行useradd ,wade用户没有这个权限,而这个权限恰恰由root所拥有。

解决办法无法有两个,一是退出wade用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出wade用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好的办法;通过su可以在用户之间切换,而超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证!

一、和su – 命令对比:
centos su sudo 命令
通过上图时间操作我们可以分析得出两个命令之间的区别:

1、参数 -, -l, –login
make the shell a login shell

su -,su -l或su –login 命令改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。用su -命令则默认转换成成root用户了。
而不带参数的“su命令”不会改变当前工作目录以及HOME,SHELL,USER,LOGNAME。只是拥有了root的权限而已。

2、su的优缺点:

su的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作;

但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协;

想想Windows吧,简直就是恶梦;“没有不安全的系统,只有不安全的人”,我们绝对不能保证这 10个用户都能按正常操作流程来管理系统,其中任何一人对系统操作的重大失误,都可能导致系统崩溃或数据损失;所以su 工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中,这绝对是真理!所以集权而治的存在还是有一定道理的。

二、su和sudo命令对比:

在普通用户下输入su命令后,会提示输入root账户的密码,然后就进入特权模式(跟用root登录系统完全一样),输入exit或者su – user 退出。
centos su sudo 命令

而采用sudo命令,只需输入当前用户的密码(也可以配置为不输入密码)即可执行需要root权限执行的命令:
centos su sudo 命令

通过上面的对比可以看出,sudo比su有很多优点:

1、普通用户不需要知道root的密码即可执行需要root权限的命令;

2、不会因忘记退出而采用root执行了会引起破坏性的命令(初学linux经常犯这个错);

3. 由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。
如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。

通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;

另外sudo 是需要授权许可的,所以也被称为授权许可的su;sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。

CentOS/RHEL:如何查看主板型号以及硬件信息


在centos系统下我们如何来查看主板的型号以及其它的硬件信息呢,比如硬盘,内存,网卡等
。本来将会讲述如何使用常用的一些linux工具来检测硬件的信息。

安装包命令查找:

1
yum whatprovides */lspci

查看主板型号:

1
dmidecode |grep -A16 "System Information$"

内存槽及内存条:

1
dmidecode |grep -A16 "Memory Device$"

硬盘:

1
fdisk -l
1
2
smartctl -a /dev/sda
HP SmartArray (cciss) hardware RAID controllers:
1
smartctl -d cciss,0 -a /dev/cciss/c0d0

网卡:

1
mii-tool

scsi/raid卡:

1
lspci

centos相关命令安装:

1
2
yum -y install smartmontools
yum install pciutils -y