CentOS 6下配置NIS服务

介绍:
Linux下的NIS服务器类似于Windows下的域控制器,用于Linux下的用户信息集中管理。
软件安装:
服务器端:

[root@localhost ~]# yum install -y ypserv

客户端:

[root@localhost ~]# yum install -y ypbind

配置文件介绍:
服务器端:

/etc/ypserv.conf                  //服务器端主配置文件

客户端:

/etc/yp.conf                      //客户端主配置文

务器端配置:
NIS通过域名来分辨不同的账号密码数据,因此需先指定NIS域名。
方法很简单,如下。

[root@localhost ~]# vim /etc/sysconfig/network

添加一行

NISDOMAIN=nis.ibadboy.net

最终效果如下。

这里啰嗦一下:看到网上很多文章都说要设置主机名,还要给主机名添加到/etc/hosts文件中,做主机名和IP的对应。
不过,我使用CentOS 6.5版本亲测,不另外设置主机名,不编辑/etc/hosts文件,NIS服务器也一样能正常工作。但前提是,在/etc/ypserv.conf这个文件中是以IP地址来限制客户机而不是使用主机名,如果使用主机名则必须添加DNS解析或编辑/etc/hosts文件,关于ypserv.conf文件的配置下面马上会介绍到。
另外,为了方便配置防火墙规则,我们也可以指定让NIS服务器每次都启动在固定端口,否则NIS会动态使用端口。

[root@localhost ~]# vim /etc/sysconfig/network

添加一行。

YPSERV_ARGS="-p 1011"              //使NIS服务器每次启动都使用1011端口

添加后文件内容如下:

编辑NIS服务器端主配置文件。

[root@localhost ~]# vim /etc/ypserv.conf

先来简单看下配置文件的内容再来说通常情况下如何配置。
转到14行和17行可以看到如下两个被红框框起来的选项(因软件版本号差异,行号可能不一样,可在VIM中搜索关键字来查找),其中“dns”选项是定义是否使用DNS,一般情况下保持默认即可(我搞不懂为啥会有这个选项,感觉很白痴)。“files”选项是定义载入到内存中的数据库个数(我不清楚这里的数据库是指的什么,这一段摘录自《鸟哥的Linux私房菜》),如果账号多,可以调大。

转到第25行左右,这里定义是否将Master/Slave的同步更新的数据库对比放置于小于1024的端口中,通常情况下保持默认即可。

接下来到重点了:配置允许访问NIS服务器的主机及主机的权限,这也是通常情况下服务器端主配置文件中唯一需要修改的部分。
参照如下格式配置:

[主机名/IP]:[NIS域名]:[可用数据库名称]:[安全策略]          //可使用通配符
[主机名/IP] :直接填入允许访问的主机名或使用网络地址/掩码的形式,如 192.168.1.0/255.255.255.0。 
[NIS域名] :例如本案例中的“nis.ibadboy.net”。
[可用数据库名称]:就是由 NIS 制作出来的数据库名称。
[安全限制] :有三种,没有限制(none)、仅能使用小于1024的端口(port)及拒绝(deny)。

例如:

192.168.1.0/255.255.255.0     :     nis.ibadboy.net      :     *      :       none

通常情况下,NIS服务器都是应用在局域网,限制可以不用这么严格,使用如下格式也可以。当然,你也可以按照自己的需求来设置。

*      :     *     :     *     :    none

转到第38行左右,可以看到默认已经配置好了两条规则,我们可以在这个基础上稍作修改。

本例改成如下形式:

保存退出后,在保证防火墙和selinux均关闭的情况下启动ypserv(NIS主服务)及yppasswdd(用于支持客户端修改NIS服务器上的用户密码)服务。

[root@localhost ~]# service ypserv start
[root@localhost ~]# service yppasswddd start

再在服务器端添加几个用户信息,一会好在客户端测试。

[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2

最后,编译生成各种数据库文件来供客户机查询。

[root@localhost ~]# /usr/lib64/yp/ypinit -m

到这一步,按下“Ctrl + D”


这一步输入y或者直接回车。

看到打印出如下字样即是成功。

客户端配置:
设置NIS域名,这里注意,一定要和服务器端是同样的NIS域名,否则客户端将无法绑定服务器端。

[root@localhost ~]# vim /etc/sysconfig/network

本例中,添加“NISDOMAIN=nis.ibadboy.net”

编辑客户端主配置文件。

[root@localhost ~]# vim /etc/yp.conf

在其中添加服务器端信息,格式如下。
domain [NIS域名] server [NIS服务器IP地址]
例如,本例中为:

domain nis.ibadboy.net server 192.168.1.20

添加后,效果如下。

保存并重启NIS客户端。

[root@localhost ~]# service ypbind restart

如下,是成功了。

如果是这种呢,一眼就能看出是失败了,那就要仔细检查下是不是哪一步做错了。

通常情况下,错误一般都是NIS域名不一致导致的,虽然客户端和服务器端的/etc/sysconfig/network中设置的NIS域名是一致的,但要注意的是,这里的NIS域名并非实时生效,因此还需要使用“nisdomainname”命令来分别检查服务器端和客户端当前的NIS域名,若发现有不符合的则使用“nisdomainname 接新NIS域名”来实时修改。
例如:

到这里,虽然客户端绑定服务器端成功了,但我们依然不能在客户端使用NIS服务器中的用户信息,原因是还没修改系统查询用户信息服务的方式。
编辑/etc/nsswitch.conf(服务搜索顺序配置文件)
在几个主要的配置文件的搜索顺序中都加入“nis”。注意,这里把“nis”加到“files”后,是先搜索本地配置文件而后才搜索nis服务器。这就导致,如果本地和nis服务器上存在相同的用户,客户端并不会使用nis服务器上的用户数据。可以通过将“nis”写在“files”前来解决这个问题。
注意最后一行,hosts文件的搜索顺序中加入了nis,这就是为什么我们不写hosts文件,不做dns一样可以正常使用nis服务器的原因。

这样,NIS客户端就算配置完了。
执行yptest命令看是否能列出NIS服务器端的账号信息。
在“Test 9: yp_all”这个测试结果中能看到NIS服务器端的用户信息即算成功。
例如:

客户端的配置,看似貌似很完美,但其实还是有点问题的,那就是需要PAM等认证的服务依然不会查询NIS服务器上的信息,这些配置文件我们手动修改实在是太麻烦了,可以使用“setup”工具来快速设置。
当然,如果没有特殊需求,仅仅需要系统用户身份认证信息使用NIS服务器上的数据那么按照之前那样简单配置以下就可以满足需求了。
若需要vsftpd虚拟用户这种使用PAM做身份认证的服务也使用NIS服务器,则就要使用“setup”工具来设置了,系统中没有安装“setup”工具可以参考此篇文章安装。

CentOS 6安装setup工具包


按照如下步骤走一遍即可,十分简单。之后setup会帮你把所有需要修改的配置文件全部修改一遍,换而言之,如果你使用setup工具来设置客户端,那除了安装ypbind软件包之外,不需再手工编辑任何文件。
注意,这里特殊说明一下,我的setup工具是中文语言的,其中图一的“验证配置”对应的英文版是“authentication configuration”,不要选错了哦。

Linux下使用quota工具为用户配置磁盘配额

介绍:

Linux是多用户多任务的操作系统,这就难免出现多个用户共享磁盘的情况,如何使多个用户公平的使用磁盘,就是磁盘配置要解决的问题。当然也可以在每创建一个用户的时候,将它的主目录建在一个单独的逻辑分区上,但是这样太麻烦了,也不灵活。
本文以针对用户的磁盘配额配置为例,演示磁盘配额的配置流程。

操作步骤:

1、安装quota软件包

[root@localhost ~]# yum install -y quota

2、给指定分区开启磁盘配额功能

编辑/etc/fstab(此文件负责记录文件系统信息)

[root@localhost ~]# vim /etc/fstab

如下图(看第一个分区),给想要开启磁盘配额的分区的挂载方式后面加上,usrquota,grpquota,其中usrquota是开启用户磁盘限额,grpquota是开启组磁盘限额。

保存并退出此文件后配置并未生效,还需要重新挂载磁盘。

[root@localhost ~]# mount -o remount /

3、扫描所有支持磁盘配额的分区并在其根目录生成相应的配置文件

[root@localhost ~]# quotacheck -avugm

上面的命令中,参数a 扫描/etc/fstab中所有支持磁盘配额的分区,v 显示指令执行过程,u 生成用户磁盘配额配置文件,g 生成组用户配置文件,m 强制扫描(有的时候不加m会报错,最好加上)。

记得把selinux关上再执行此命令。

执行完可以查看下分区挂载的目录中出没出现aquota.group(组磁盘配额配置文件)、aquota.user(用户磁盘配额配置文件)这两个配置文件,有就代表成功了。

当然这两个文件不一定都有,因为你有可能在执行命令的时候指定只生成用户磁盘配额配置文件,那就看不到组磁盘配额配置文件了。

4、为用户/组设置磁盘配额大小

[root@localhost ~]# edquota -u 接用户名                       //为用户配置磁盘配额
[root@localhost ~]# edquota -g 接组名                        //为组配置磁盘配额

命令执行后会自动使用vi/vim文本编辑器打开对应配置文件,下面是对此配置文件中各个区域的解释(顺序,从左到右)。

Filesystem 文件系统
blocks 已经使用的块数(块的单位为1K)
soft 块数软限制,0表示禁用
hard 块数硬限制,0表示禁用
inodes 已经创建的文件个数,如果后面有*表示已经超出软限制
soft 创建的文件个数的软限制,0表示禁用
hard 创建的文件个数的硬限制,0表示禁用

其中软限制的额度在达到后会弹出警告,如果用户在宽限期(默认7天)内还未删除超出部分的文件,软限制就会转为硬限制,阻止用户继续写入数据。

可以通过如下命令修改宽限期。

[root@localhost ~]# edquota -t

如上图可以看到,Block grace period(块的宽限期)对应值是7days(七天),Inode grace period(文件数量的宽限期)对应值也是7days(7天),这里直接修改对应值即可。上图中因为我的设备名称比较长,所以文字排版乱了,导致值和选项没有对应起来,但不影响其生效。

修改后保存并退出。

此外,所涉及到容量的配置部分的计算单位都是KB,比如上图中容量的hard值我设置成了20480,这个数值的单位就是KB,可以换算成20MB。

修改后,保存并退出。

如果有多个账户需要设定相同的磁盘配额则可以使用edquota搭配-p参数实现,例如:

[root@localhost ~]# edquota -p user1 user2                    将user1的磁盘配额配置复制给user2。

5、开启磁盘配额功能

quotaon 接需要开启磁盘配额功能的分区所挂载的目录,例如本实验中分区挂载到了根目录,则执行如下命令开启该分区的磁盘配额。

[root@localhost ~]# quotaon /

关闭磁盘配额:

[root@localhost ~]# quotaoff /

6、测试

切换为被设置了磁盘配额的用户身份,本实验中是user1。

[root@localhost ~]# su - user1

进入用户邮箱目录(本实验中/var/mail目录存在于根目录所挂载的磁盘上,所以根目录的磁盘限额对其有效)。

[root@localhost ~]# cd /var/mail

写1G的数据到user1的邮箱中。

[root@localhost mail]# dd if=/dev/zero of=user1 bs=1M count=1000

可以看到,弹出提示说超出磁盘限额了。

查看下user1用户的邮箱现在的大小,正好是20MB。

[root@localhost mail]# ll -h user1

最后记得清空邮箱中的数据哦。

[root@localhost mail]# echo '' > user1

CentOS 6下使用postfix搭建简单邮件服务器

介绍:
postfix是linux/unix下比较常用的开源免费邮件传输代理程序(MTA)。
下图是postfix的logo,略显猥琐。。。

服务安装:
通常情况下,CentOS默认都会安装postfix。
如果你不确定你的系统中有没有postfix可以使用如下命令查看。

yum -qa | grep postfix

若没有安装则使用如下命令安装。

yum install -y postfix

DNS配置:
邮件发送是需要DNS解析支持的,DNS服务器的配置方法参考此篇文章:

CentOS 6下使用BIND配置简单DNS服务器


最后要求DNS正向解析配置成类似如下形式,反向解析区域可不配置。“192.168.1.20”是我的邮件服务器的IP地址,请按照实际情况来做更改。

主要配置文件介绍:
postfix的配置文件存放路径为/etc/postfix,其中的主要的配置文件有两个,一个是main.cf另一个是master.cf。关于两个配置文件的说明,如下。

main.cf              //此配置文件为postfix主配置文件,决定了postfix的工作方式。
master.cf            //此配置文件用以配置postfix中各个程序的工作参数,一般在做邮件系统优化时才会用到。

postfix配置:
在配置前,我们需要先关掉系统中sendmail(sendmail也是linux/unix下常用的邮件传输代理程序)的所有服务,避免二者产生冲突。
查看是否安装了sendmail。
rpm -qa | grep sendmail
如安装了sendmail,则关闭sendmail服务,否则跳过这一步。

service sendmail stop
chkconfig sendmail off

编辑主配置文件。

vim /etc/postfix/main.cf

查找“myhostname”关键字,一般在第75行左右的位置,因软件版本差异行号可能不同。

去掉其中一个前面的注释,这里是配置postfix服务器的主机名,这个主机名必须是FQDN(完全合格域名,例如:mail.ibadboy.net)。

在第83行左右找到“mydomain”关键字。

去掉其前面的注释,并将参数修改为邮件域。
什么是邮件域?举例说明:admin@ibadboy.net这个邮箱地址中@后面的ibadboy.net就是邮件域。

在第98行左右找到“myorigin”关键字,去掉第二个“myorigin”前方注释。
这里是用于定义由本台邮件服务器寄出的每封邮件的邮件头中mail from(发信源主机)的地址。如果不设置,默认会以$myhostname也就是本地主机名这个选项的参数为值,最后是这种形式:“from  ‘user1’ <user1@mail.ibadboy.net>”,看起来是不是怪怪的?为了方便阅读,一般以$mydomain作为其参数,这样就变成了“:“from  ‘user1’ <user1@ibadboy.net>”。
需要特殊说明的是:main.cf配置文件中所有以$开头的字符串都是一个变量,变量的值就是变量名对应的选项的参数,例如$mydomin这个变量对应的值就是83行mydomin这个选项的参数。

修改后:

转到第113行,找“inet_interfaces”这个关键字,这里是定义postfix监听的接口,默认只监听本地回环接口(127.0.0.1),通常的做法是让其监听所有的接口(值为all),或者也可以使用主机名为值,要求其只监听主机名对应IP的接口。

修改后:

转到164行,找“mydestination”关键字,这里定义postfix可收信的主机名或域名。这里其实很好理解,一封邮件的目的地址是我这台服务器我就收下,否则我当然不收了。

默认的选项是不包括域名的,通常情况下需要接收主机名或域名为本机的邮件,也就是修改为选项二,如下图。

至此,一个简单的postfix邮件服务器就配置好了,我们一共对配置文件做了如下几个更改:1、指定了主机名,2、指定了邮件域,3、指定了发信源主机,4、使postfix监听所有网卡,5、设置了允许收信的主机名及域名。
保存配置后,在保证selinux和防火墙均关闭的情况下启动postfix服务。

service postfix start

服务测试:
推荐搭建完postfix后配合dovecot(MRA,邮件接收代理)一起在邮件客户端进行测试。
dovecot配置教程参考此篇文章:

CentOS 6下邮件接收代理程序——dovecot配置教程


 

CentOS 6下使用BIND配置简单DNS服务器

介绍:
BIND是linux/unix下的开源免费DNS服务器,也是全世界应用最广泛的DNS服务器软件。
软件安装:

yum install -y bind

主要配置文件介绍:

/etc/named.conf                 //BIND主配置文件
/etc/named.rfc1912.zones        //DNS解析区域配置文件
/etc/named.localhost            //正向解析模板文件
/etc/named.loopback             //反向解析模板文件

BIND配置:
编辑主配置文件

vim /etc/named.conf

将如下如红色箭头所指的两处的值均改为“any”,第一处定义bind服务监听的本地网卡地址,默认仅监听回环地址,改为any后监听所有网卡。第二处定义的是允许查询DNS的主机,默认只有本地可以查询,改为any后允许所有主机进行DNS查询。

修改后如下图。

主配置文件的配置至此结束,接下来编辑DNS解析区域配置文件。

vim /etc/named.rfc1912.zones

此部分为正向解析区域配置模板,这里稍微啰嗦一下什么是正向解析什么是反向解析:正向解析就是通过域名解析出IP地址,反向解析就是通过IP地址来解析出域名。

此部分为IPv6反向解析区域配置模板。

此部分为反向解析区域配置模板

这里,我们添加一个正向解析区域和一个反向解析区域。
直接在模板基础上修改即可,如下图,第一个“it7e.com”是要解析的域名,第二个“it7e.com”是正向解析配置文件的文件名。
默认情况下,所有的解析配置文件都存放在/var/named/目录下。

再添加一个反向解析区域,其中”1.168.192″是要进行反向解析的网段”192.168.1″的倒写,而图中的“192.168.1”则是反向解析配置文件的文件名。

最后,分别编辑两个解析区域的解析配置文件向其中添加解析即可。
先根据正向解析配置文件模板”named.localhost”创建正向解析配置文件”it7e.com”。

cp -p /var/named/named.localhost /var/named/it7e.com

再根据反向解析配置文件模板“named.loopback”创建反向解析配置文件“192.168.1”。

cp -p /var/named/named.loopback /var/named/192.168.1

编辑正向解析配置文件“it7e.com”

vim /var/named/it7e.com

通常情况下,只需要编辑红框部分,向其中添加解析即可,其余地方不用更改。

例如:

上图中需要特殊说明的是MX记录后面的5是MX优先级。记录值中填的“@”代表本域,本实验中是“it7e.com”,注意如果这样写,那么就必须保证有“it7e.com”对应的解析记录,本实验中其对应的记录在第九行。在主机位上填的“@”代表“空”,也可以真的留空,什么都不写,就像第九行的那条解析记录一样。另外,记录值中的域名都以“.”结尾,IP则不用。
最后需要注意的是MX记录要写在其值的CNAME记录的前面,例如上图中,“@   MX 5 mail.it7e.com”记录写在了“mail CNAME it7e.com”记录的前面,否则会出现异常。
关于DNS解析记录类型的介绍参考此篇文章:

DNS解析记录类型详解

再来编辑反向解析文件。

vim /var/named/192.168.1

依然是没有特殊需求就只编辑红框内的内容即可。

例如:

上图中,“ A 127.0.0.1”这个记录不可删除,否则报错。因为NS记录值是“@”,也就是“it7e.com”,若删除了“ A 127.0.0.1”这条记录,则“it7e.com”没有对应的A记录,NS记录会抛出错误。
服务测试:
测试前需要将本机或客户机的DNS修改为DNS服务器的IP地址。
CentOS 6下DNS的修改方法参考此篇文章,Windows下不做介绍。

CentOS 6下正确配置DNS的方法

测试DNS解析使用nslookup命令,如果发现系统中没有nslookup这个命令是因为没有安装bind工具包,执行以下命令安装。

yum install -y bind-utils

启动nslookup。

nslookup

执行命令后在“>”符号后面输入要测试解析的域名即可。

例如下图,其中蓝色框内是DNS服务器信息,红框内是域名解析信息。

可以通过“set type=”来设置解析类型。
例如,测试MX解析记录: 
或者,测试TXT记录。

再来测试下反向解析。

最后,退出nslookup工具,只需要在“>”符号后面输入“exit”即可。

CentOS 6下正确配置DNS的方法

本来配置DNS是比较简单的东西,没想专门写一篇文章的。但后来我发现这里还是有一个大坑的,很有必要单独拿出来对其进行说明。
我看到网上很多教程都推荐大家通过编辑/etc/resolv.conf这个文件来修改系统的DNS。
但经过实测,用此方法修改DNS,在某些情况下会发生明明编辑了/etc/resolv.conf文件,但重启网络后文件又恢复到之前的状态的情况。
经过一翻搜索之后,发现。原来是因为CentOS 6使用NetworkManager来管理网络,当在/etc/resolv.conf中配置了DNS时,/etc/sysconfig/network-scripts/ifcfg-eth*文件中并没有DNS信息或还是之前的DNS信息,而NetworkManager会用/etc/sysconfig/network-scripts/ifcfg-eth*中的DNS信息来覆盖/etc/resolv.conf中的信息。
正确配置DNS的方法:

vim /etc/sysconfig/network-scripts/ifcfg-eth*(*是什么依据实际情况来定)

按照如下格式添加DNS。

DNS1=
DNS2=
DNS3=
……

例如下图,其中“114.114.114.114”是国内著名的DNS服务,“8.8.8.8”是谷歌的DNS服务,也可以根据自身需求更改为其他DNS地址。

最后重启网络即可。

service network restart

CentOS 6配置IPv6地址

编辑网络配置信息文件。

vim /etc/sysconfig/network

启用IPv6支持。

编辑网卡配置文件。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

这里需要注意的是,IPv4与IPv6可以同时绑定同一块网卡,因而在添加IPv6地址信息时可以不删除IPv4的地址信息。
以下是IPv6地址配置选项。

IPV6INIT                        //网卡初始化IPv6协议栈
IPV6ADDR                        //配置IPv6地址
IPV6_DEFAULTGW                  //配置IPv6网关

下图是一个IPv6地址配置的例子。

如果是在虚拟机下配置的IPv6需要测试配置是否成功,可以为两台计算机同时配置IPv6地址,互相ping。
下面提供4个同网段的IPv6地址来供大家测试用。

2400:A480:000F:0080:00C3:0000:0000:0074
2400:A480:000F:0080:00C3:0000:0000:0174
2400:A480:000F:0080:00C3:0000:0000:0274
2400:A480:000F:0080:00C3:0000:0000:0374
网关:
2400:A480:000F:0080:0000:0000:0000:0001
子网掩码长度:
64

配置完后,使用ping6命令进行测试,例如:

ping6 2400:A480:000F:0080:00C3:0000:0000:0074

CentOS 6破解grub引导菜单的密码

破解grub引导密码需要用到linux live cd,随便什么发行版都可以。当然,如果你没有专门的linux live
cd,用CentOS的安装光盘来破解也是可以的。
此篇文章我来介绍下如何使用CentOS 6的安装光盘来破解grub密码。
先修改系统BIOS引导来启动光盘/U盘上的系统,这里因为各个品牌的电脑修改BIOS引导顺序的方法不同,所以不做介绍,请自行百度适合自己的方法。
成功引导安装光盘后选择如下图红色箭头指向的“Rescue installed system(救援安装系统)”。

这里依次要求你选择系统语言、键盘布局,以及是否配置网络等等,下面我附上截图并一一进行说明。
下图,选择系统语言,保持默认(英语)。

下图,选择键盘布局,保持默认(美式键盘)。

弹出如下图这个提示是告诉你,系统与当前硬件不兼容,可以不予理会。直接“OK”,即可。

下图,询问是否配置网络,无特殊需求都选“No”。

下图,系统在尝试查找当前硬盘上的linux分区,并尝试将其挂载到/mnt/sysimage目录下。选择“continue”。

下图,告诉我们即将要把找到的linux分区挂载到/mnt/sysimage目录下,并进入到shell中,选“OK”。

下图,提示我们,已经将找到的linux分区挂载到了/mnt/sysimage目录下,选“OK”。我觉得有点磨叽了。。。

下图,选第一个“shell      Start shell(启动shell)”。

下图,久违的shell出来了。

切换到硬盘中的linux分区的挂载目录

cd /mnt/sysimage

使用VI文本编辑器编辑grub引导配置文件

vi etc/grub.conf

删除密码一行,即完成破解工作。

最后,重启即可。

reboot

CentOS 6安装setup工具包

CentOS 6最小化安装的情况下是没有setup工具的。
安装setup:

[root@localhost /]# yum install -y setuptool

启动setup:

[root@localhost /]# setup


发现只有一个“验证配置”,而我们熟悉的“网络配置”、“系统工具”等等的选项全都没了,这是怎么回事?其实这里是需要分别安装这几个工具组件的:

[root@localhost /]# yum install -y ntsysv                              //安装“系统服务”工具组件
[root@localhost /]# yum install -y system-config-network-tui           //安装“网络服务”工具组件
[root@localhost /]# yum install -y system-config-securitylevel-tui     //安装“防火墙配置”工具组件

当然,如果只是需要某一个工具组件也可以只安装那一个。上方列出的只是常用的工具组件,如果还需要其他的可以自行百度。
安装后再执行setup命令,会发现常用的工具都显示出来了。

[root@localhost /]# setup

CentOS 6给grub引导设置密码

默认情况下,在grub引导界面按任意键即可进入引导编辑界面,任何人都可以轻易地进入到单用户模式下,并破解掉root的密码。
root密码破解参考此篇文章:

文章归档


显然,这样十分不安全。那如何防止呢?给引导菜单加个密码呗,不输对密码就休想进到引导编辑模式。
grub引导菜单加密码的方法:
先生成密码字符串

grub-md5-crypt >> /etc/grub.conf

执行命令后,因为输出被重定向到了/etc/grub.conf文件(grub引导配置文件)中,所以屏幕上不会产生任何输出。但没关系,我们只要像配置linux系统用户密码一样,输入一次密码,回车,再重复输入一次密码再回车即可。
此时使用vim打开/etc/grub.conf文件,即可看到如下图红色箭头所指的加密字符串,我们在vim下剪切这个字符串,并删除蓝框框住的内容。

vim /etc/grub.conf

 

之后将加密字符串粘贴在hiddenmenu和title这两行之间,如下图。

最后再在加密字符串前,加上password –md5关键字并保存退出即可。

重启系统,尝试进入grub引导编辑界面就会发现,grub要求输入密码啦(必须先按p键键入密码,才可以按e键编辑引导)。

CentOS 6下邮件接收代理程序——dovecot配置教程

介绍:
dovecot是开源的pop3和imap邮件服务器(MRA,邮件接收代理),用于支持客户端从服务器读取邮件。
软件安装:

[root@localhost ~]# yum install -y dovecot

dovecot配置部分
使用vim文本编辑器编辑dovecot主配置文件

[root@localhost ~]# vim /etc/dovecot/dovecot.conf

找到# protocols = imap pop3 lmtp这条配置语句,去掉前面的注释(#)。这里是开启dovecot的pop3和imap服务。

修改后如图:

保存并退出。
编辑/etc/dovecot/conf.d/10-auth.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.conf

找到# disable_plaintext_auth = yes,去掉前面的注释(#)并将= yes改为= no。这里是定义允许使用明文密码登陆imap/pop3。

修改后如图:

保存并退出
编辑/etc/dovecot/conf.d/10-mail.conf

[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf

找到# mail_location = mbox:~/mail:INBOX=/var/mail/%u,去掉前面的注释(#)。这里是定义邮件存储路径。

修改后如图:

保存并退出,至此dovevot部分配置完成。
现在在保证selinux及防火墙已关闭的情况下启动dovecot服务。

[root@localhost ~]# service dovecot start

添加两个邮件账户测试用:

[root@localhost ~]# useradd -s /sbin/nologin user1
[root@localhost ~]# useradd -s /sbin/nologin user2
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2

创建完账户后要赋予账号对应的邮箱777的权限,否则接收不到邮件。

[root@localhost ~]# chmod 777 /var/mail/*

测试服务可以使用outlook、fixmail等邮件客户端。
推荐配置完MTA(邮件传输代理)和MRA(邮件接收代理)后一起测试,会方便很多。
关于MTA(邮件传输代理)的配置教程可以参考以下文章:

CentOS 6下使用sendmail搭建简单邮件传输服务器

CentOS 6下的NFS文件共享服务搭建教程

介绍:
nfs是网络文件系统。类似于samba,但不支持身份认证,只能通过ip地址来鉴别客户端。
起初只可用于linux/unix系统,后来windows也可以使用nfs了。
安装软件:

[root@localhost ~]# yum install nfs-utils

配置服务:
nfs默认的配置文件为/etc/exports,若不存在此文件请手动创建。
编辑配置文件

[root@localhost ~]# vim /etc/exports

向其中添加文件共享,一条一行,格式:
要共享的文件夹 允许访问的主机(访问权限) 允许访问的主机2(访问权限)……….允许访问的主机N(访问权限)…..
允许访问的主机可以用IP来指定也可以用网段、主机名(NetBIOS需正常解析),支持通配符,需要注意的是——通配符只能用在主机名上,不可用于ip。
例如:

关于访问权限的详细解释如下(此处摘录自《鸟哥的Linux私房菜——服务器架设篇(第三版)》):

编辑完配置文件后启动服务即可,在正式启动nfs服务前还需要把rpcbind这个服务给启动了(已启动则略过),否则nfs无法启动。rpcbind服务主要是负责在nfs共享时候告诉客户端服务器的nfs端口号的。

[root@localhost ~]# service rpcbind start
[root@localhost ~]# service nfs start

修改共享配置文件后既可以通过重启服务使配置生效也可以通过如下命令使配置立即生效:

[root@localhost ~]# exportfs -arv

查看当前NFS共享的目录。

[root@localhost ~]# showmount -e     //若仅查看已被客户端挂载的目录则使用-d参数替换-e参数。

目录及文件的权限管理:
nfs服务器设置目录及文件的用户权限在实际生产环境中没有多大意义,因为客户机和服务器上的用户虽然用户名是相同的,但UID可能不同,而NFS是通过UID来区别用户的,那就会产生问题啦!而且,就算在服务器上对NFS共享中的某一个目录设置了所有者,那客户端上其实只要把随便一个用户的UID改成和目录所有者的UID相同,就可以具有所有者的权限啦,所以说,为NFS共享中的目录及文件设置权限是完全没有意义的事情。
客户端挂载及卸载nfs:
参考此篇文章。

CentOS 6下挂载NFS共享的方法

CentOS 6下超实用的samba配置教程

介绍:
samba是在linux/unix上实现SMB协议的免费软件,通俗来说就是让linux/unix支持与windows间互相共享文件。
安装软件包:

yum install -y samba

samba配置文件介绍
samba配置文件的存放路径为

/etc/samba/

该目录下有以下三个文件:

lmhosts文件中记录着局域网中NetBIOS与IP地址的对应关系
smb.conf是samba的主配置文件,其内容由全局配置部分和共享配置部分组成。
smbusers文件记录着windowns中用户与linux中用户的对应关系,例如windows中的administrator管理员账户对应linux下的root用户。
samba的配置:
在开始配置前,首先明确下需求:
1、user11和user12用户可以通过samba共享来访问自己的家目录,且此共享仅本人可见。
2、创建三个共享,分别为share1、share2、share3,其共享的本地文件夹分别为/tmp/a1、/tmp/a2、/tmp/a3。
3、group1组的用户user1对share1共享有全部权限,group2组的用户user2对share2有全部权限,group3组的用户user3对share1和share2共享都有全部权限;对于share1和share2共享其他人有只读权限;share3为公共存储,所有人都有存取权。
4、所用用户新建的文件都是本人拥有全部权限,其他人只有只读权限。
知道了需求,那么现在就来根据需求来做具体配置吧:

vim /etc/samba/smb.conf                //使用vim文本编辑器打开配置文件

转到第248行,可以看到如下内容,看开头一行,[homes],home是家的意思,加s呢,变成复数了,可以理解成所有用户的家,哈哈,感觉我像是在讲英语。总之,通过配置此部分就可以满足需求1了。

comment选项是用来添加一个文本描述的。
browseable选项定义他人是否可以看到此共享,yes为可以,no为不可以(仅自己可见)。
writable选项用来定义共享是否可写。
valid users选项定义该共享规则对哪些用户启用。

看显而易见,我们只要设置valid users选项,让此共享配置仅对user11和user12用户生效即可满足需求1。

再来看需求2,新建三个共享,这个怎么破?其实很简单啦,配置文件里已经写好了现成的,我们只需要复制成三份就好。
转到配置文件的末尾,可以看到以[public]关键字开头的配置部分,这就是配置共享的模板。

复制前需要注意,这部分配置文件默认被注释掉了,如果你不想在复制完去一点点的删除三份注释符号的话那最好在复制之前把这一份注释符号删掉,如下图:

三个共享有了,但他们的配置文件是一摸一样的,那共享名和共享的文件夹一定也是一样的,要如何为每一个共享做定制呢?
先看这部分配置文件的简单介绍:

开头的[public]是共享名,可任意起,与实际的共享文件夹可以不同名。
comment是没用的文本介绍。
path是指定要共享的本地文件夹的路径。
public是用来指定是否共享的,有yes和no两个选项,至于这两个选项分别是啥意思我就不啰嗦了。
writable用于配置此共享是否支持写入。
printable指定是否支持打印,没有特殊需求的话这里都保持注释状态。
write list此选项用于决定哪些用户或组对此共享拥有写入权限,此处一般保持注释就好,因为linux的权限管理可比samba的好用多了。

以下是按照需求2修改过的配置文件,修改部分已经用红笔标出来了,对照上方配置选项的解释就可以轻松理解下图的配置内容了。

权限配置部分:
下面来看需求3,很明显这里是需要做权限控制了。但我不得不唠叨一下,samba自带的权限管理配置起来那是相当的蛋疼,而且功能弱爆了。所以这里我们使用linux系统权限管理加ACL来做权限控制。
关于ACL的介绍可以参考:

linux下acl权限详解


在配置权限前,我们先把所需要的用户与组都创建完,并把他们加入到samba用户数据库中,再把要共享的文件夹都创建出来。
新建用户:

useradd user11
useradd user12
useradd user1
useradd user2
useradd user3

新建组:

groupadd group1
groupadd group2
groupadd group3

将用户加入组:

usermod -G group1 user1
usermod -G group2 user2
usermod -G group3 user3

将系统用户加入到samba用户数据库中。

pdbedit -a user11
pdbedit -a user11
pdbedit -a user1
pdbedit -a user2
pdbedit -a user3

使用pebedit命令将系统用户加入samba用户数据库中时会提示输入两次密码,此密码可以与linux系统用户密码不相同,加入成功后会出现类似如下提示:

创建共享的文件夹:

mkdir /tmp/a1
mkdir /tmp/a2
mkdir /tmp/a3

接下来就进入到了最重要的文件夹权限配置阶段了。
先来看/tmp/a1目录的权限配置。
将目录所属组改为group1

chown :group1 /tmp/a1

此时目录/tmp/a1的权限为:

此时group1组的成员对目录是没有写权限的,下面就赋予其读写执行的权限:

chmod 775 /tmp/a1


此时group1组已经拥有了应有的权限,但需求3里面要求grou3组对该共享目录也拥有全部权限,这个就需要ACL来完成了。
执行如下命令:

setfacl -m g:group3:rwx /tmp/a1       //配置ACL权限使group3组的成员对/tmp/a1目录拥有全部权限

此时查看权限:

注意权限的最后多了一个+号,这证明ACL权限已经生效了,再执行。

getfacl /tmp/a1         //查看目录的ACL权限


只要有如上图画红线的部分即是配置成功。
至此/tmp/a1这个目录的全部权限已经配置完成,而/tmp/a2目录的权限与/tmp/a1的权限的配置方法雷同,这里不再赘述。
再来看下/tmp/a3目录的权限,很简单,给他777的权限即可。

chmod 777 /tmp/a3

最后的最后,来看看需求4吧,就差这一个了。
这里依然使用ACL权限来完成需求,而不通过修改samba的配置文件。
那要如何配置ACL呢?没错,只需要配置两条默认ACL权限即可。

setfacl -m d:u::rwx /tmp/a?    //这里使用通配符为所有以a开头而第二个字符为任意字符的文件夹配置权限
setfacl -m d:g::rx /tmp/a?

以/tmp/a1文件夹的acl权限为例:

getfacl /tmp/a1


可以看到如上图中红色标注的部分即为配置成功。
 
好啦,4个需求已经全部满足了,尽情测试吧。

linux终端常用快捷键

Tab 自动补全 
Ctrl+a 光标移动到开始位置 
Ctrl+e 光标移动到最末尾 
Ctrl+k 删除此处至末尾的所有内容 
Ctrl+u 删除此处至开始的所有内容 
Ctrl+d 删除当前字符 
Ctrl+h 删除当前字符前一个字符 
Ctrl+w 删除此处到左边的单词 
Ctrl+y 粘贴由 Ctrl+u , Ctrl+d , Ctrl+w 删除的单词 
Ctrl+l 相当于clear,即清屏 
Ctrl+r 查找历史命令 
Ctrl+b 向回移动光标 
Ctrl+f 向前移动光标 
Ctrl+t 将光标位置的字符和前一个字符进行位置交换 
Ctrl+& 恢复 ctrl+h 或者 ctrl+d 或者 ctrl+w 删除的内容 
Ctrl+S 暂停屏幕输出 
Ctrl+Q 继续屏幕输出 
Ctrl+Left-Arrow 光标移动到上一个单词的词首 
Ctrl+Right-Arrow 光标移动到下一个单词的词尾 
Ctrl+p 向上显示缓存命令 
Ctrl+n 向下显示缓存命令 
Ctrl+d 关闭终端 
Ctrl+xx 在EOL和当前光标位置移动 
Ctrl+x@ 显示可能hostname补全 
Ctrl+c 终止进程/命令 
Shift +上或下 终端上下滚动 
Shift+PgUp/PgDn 终端上下翻页滚动 
Ctrl+Shift+n 新终端 
alt+F2 输入gnome-terminal打开终端 
Shift+Ctrl+T 打开新的标签页 
Shift+Ctrl+W 关闭标签页 
Shift+Ctrl+C 复制 
Shift+Ctrl+V 粘贴 
Alt+数字 切换至对应的标签页 
Shift+Ctrl+N 打开新的终端窗口 
Shift+Ctrl+Q 管壁终端窗口 
Shift+Ctrl+PgUp/PgDn 左移右移标签页 
Ctrl+PgUp/PgDn 切换标签页 
F1 打开帮助指南 
F10 激活菜单栏 
F11 全屏切换 
Alt+F 打开 “文件” 菜单(file) 
Alt+E 打开 “编辑” 菜单(edit) 
Alt+V 打开 “查看” 菜单(view) 
Alt+S 打开 “搜索” 菜单(search) 
Alt+T 打开 “终端” 菜单(terminal) 
Alt+H 打开 “帮助” 菜单(help) 

linux设置笔记本合盖或按电源键后执行的操作

编辑配置文件/etc/systemd/logind.conf

vim /etc/systemd/logind.conf

找到以下四项配置:

HandlePowerKey:按下电源键后的动作
HandleSleepKey:按下挂起键后的动作
HandleHibernateKey: 按下休眠键后的动作
HandleLidSwitch:合上笔记本盖后待机

系统默认设置为:

HandlePowerKey=poweroff
HandleSuspendKey=suspend
HandleHibernateKey=hibernate
HandleLidSwitch=suspend

可选的动作为:ignore(忽视)、poweroff(关机)、reboot(重启)、halt(停止系统)、suspend(挂起)、hibernate(休眠)、hybrid-sleep(混合休眠)、lock 或 kexec(锁定)。
 

linux下acl权限详解

安装软件包

yum install -y acl

配置acl权限
用于acl权限管理的命令主要有两个:

setfacl          //设置acl权限
getfacl          //查看acl权

首先来看setfacl
常用参数:

-b:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
-d:设定默认的acl规则
-R:递归的对所有文件及目录进行操作。
-m:修改文件或目录的acl规则。
-x:删除指定acl规则。

以上只列出常用参数,详细命令帮助可参考:http://man.linuxde.net/setfacl
举个例子:想让user1这个用户对~/test目录拥有全部权限,除了修改所有者或所属组之外还能怎样呢?
且往下看。

setfacl -Rm u:user1:rwx ~/test             //使user1用户对test目录拥有全部权限。

执行以上命令后user1用户即可任意操作~/test目录。
来看一下这条命令,setfacl,设置acl权限、参数R代表递归应用,m修改权限、u代表用户,如果想赋予某个组acl权限就用g,:后边接的要赋予acl权限的用户名或组名(不填则修改所有者或所属组的acl权限),紧接着下一个冒号后面跟的就是要赋予这个用户的权限了、最后接要操作的目录或文件名,就这么简单。
再来看一个例子:

setfacl -m d:u::rwx ~/test                //为test目录下新建的文件或目录设置默认acl权限,对所有用户生效

如果写成这样:

setfacl -m d:u:user1:rwx ~/test

这条命令执行后可以达到什么目的呢?我猜,聪明的读者一定猜到了:是给user1创建的文件或目录设置默认acl权限。
如果你是这样想的,那么恭喜你,猜错了。
这条命令实际的意义其实是给所有用户创建的文件或目录都加上user1这个用户的rwx的acl权限~
最后再来看下如何删除acl权限

setfacl -x d:u:user1 ~/test              //删除~/test目录中关于user1的默认acl权限
setfacl -b ~/test                        //删除~/test目录上所有的acl权限

查看acl权限
查看acl权限使用getfacl命令

getfacl ~/test                           //查看~/test目录的acl权限

会输入类似如下内容

另外,当我们执行ls -l时会发现,拥有acl权限的文件或文件夹其linux默认权限后面多一个“+”号。

最后需要注意的是:linux默认权限是优于acl权限的,就是说当liux默认权限和acl权限同时存在时,系统会优先考虑linux默认权限。