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

DNS解析记录类型详解

A记录:将域名指向一个IPv4地址(例如:10.10.10.10)。
CNAME记录:如果将域名指向一个域名,实现与被指向域名相同的访问效果。
MX记录:建立电子邮箱服务,将指向邮件服务器地址。
NS记录:域名解析服务器记录,如果要将子域名指定某个域名服务器来解析。
TXT记录:可任意填写(可为空),通常用做SPF记录(反垃圾邮件)使用。
AAAA记录:将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1)。
SRV记录:记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)。
显性URL:将域名指向一个http(s)协议地址,访问域名时,自动跳转至目标地址(例如:将www.tianidc.cn显性转发到www.ibadboy.net后,访问www.tianidc.cn时,地址栏显示的地址为:www.ibadboy.net)。
隐性URL:与显性URL类似,但隐性转发会隐藏真实的目标地址(例如:将www.tianidc.cn隐性转发到www.ibadboy.net后,访问www.tianidc.cn时,地址栏显示的地址仍然为:www.tianidc.cn)。

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默认权限。