LAMP实战教程

LAMP的环境原理

LAMP:是由Linux、Apache(httpd)、MySQL/MariaDB和PHP/Perl/Python这些开源软件所搭建起来的web应用平台。平台主机可以是独立的也可以在一台主机上。

image

客户端访问web服务,web服务器遵循二八法则直接将大部分静态访问资源反馈给客户,如果是动态资源则通过FastCGI协议调用php程序获取数据库的数据处理成为静态资源在返回给客户。

web服务器 脚本 数据库
Httpd/Nginx php-fpm Mysql
  jsp,tomcat  
  Python,Django  
  Ruby,ror  

使用一台主机搭建 wordpress博客

wordpress博客是一个动态资源站点,当客户端访问时需要通过脚本服务器的php-fpm脚本来进行数据处理实现用户与站点的交互。

服务器环境要求:
  • PHP 5.2.4或更新版本
  • MySQL 5.0或更新版本
  • Apache mod_rewrite模块(可选,用于支持“固定链接”和“站点网络”功能)
  • 关闭selinux,
  • 跳过域名解析,修改/etc/my.cnf.d/server.cnf添加 skip-name-resolve=ON
1、安装httpd启动web服务启用监听80端口,安装脚本php和msyql数据库
[root@ ~]# yum -y install httpd php php-mysql mariadb-server
[root@ ~]# vim /etc/httpd/conf/httpd.conf
 ServerName www.example.com:80 去掉注释
2、检查语法错误,并启用服务, ,172.16.1.% ;
[root@ ~]# httpd -t 检查语法错误
[root@ ~]# systemctl start httpd.service 启动服务
[root@ ~]# ss -tnl 查看端口
        State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
        LISTEN     0      128                      *:80                                   *:*                  
        LISTEN     0      128                      *:22
3、创建数据库并授权admin用户有权限访问数据库,创建格式:GRANT ALL ON wordpress.* ‘user’@’IP’ IDENTIFIED BY ‘password’ , IP域限制例如172.16.%.%
[root@ ~]# mysql
...
...
MariaDB [(none)] GRANT ALL ON wordpress.* TO `admin`@`%` IDENTIFIED BY `admin`;
MariaDB [(none)] exit
Bye
4、登录测试是否能够正常启动
[root@ ~]# mysql -uadmin -h192.168.1.2 -padmin
5、配置安装 wordpress
[root@ ~]# mkdir /wordpress            创建一个目录
[root@ ~]# cd /wordpress
[root@ ~]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.zip      下载wordpress-4.9.4 版本
[root@ ~]# unzip wordpress-4.9.4-zh_CN.zip                              解压文件
[root@ ~]# cp -a wordpress /var/www/html/blog                           拷贝将解压的文件wordpress 至httpd定义的web目录并改名blog

[root@ ~]# cd /var/www/html/blog                                        打开blog
[root@ ~]# cp wp-config-sample.php wp-config.php                        复制模板文件,创建wordpress配置文件
[root@ ~]# vim wp-config.php                                            编辑配置文件

        // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
        /** WordPress数据库的名称 */
        define(`DB_NAME`, `wordpress`);                                 填入数据库名

        /** MySQL数据库用户名 */
        define(`DB_USER`, `admin`);                                     填入数据库访问用户

        /** MySQL数据库密码 */
        define(`DB_PASSWORD`, `admin`);                                 填入数据库密码

        /** MySQL主机 */
        define(`DB_HOST`, `192.168.1.2`);                               指向数据库ip地址
6、浏览器打开进行安装配置即可
  • 登录主页地址:192.168.1.2/blog
  • 管理主页后台地址:192.168.1.2/blog/wp-login.php

MDL 数据操纵语言

Data Manipulation Language,数据库操作语言包括:INSERT、SELECT、UPDATE、DELETE分别是插入、查询、更新、删除。

语法结构:

WHERE指令用来过滤查询的结果数据范围,如果不加WHERE指令则表示访问全部的数据。

INSERT INTO:

INSERT是将数据插入到数据库对象中的指令,可以插入数据的数据库对象有数据表以及可更新查看表两种。

INSERT [INTO] tbl_name [(col1,...)] {VALUES | VALUE} ( val1,...),(...),...

注意:
字符型:要用引号括起来。
数值型:无需引号。
示例:插入
MariaDB [abc] INSERT INTO persons(Stuid,Name,gender,birthda,city) VALUES(3,`Wu Jun`,`M`,2002,`Hang Zhou`);

INSERT INTO 是命令;
persons 表名;
Stuid,Name,gender,...列名;
VALUNE值
括号内(对应的列内容);

结果:

MariaDB [abc] SELECT * FROM persons;  
+-------+-------------+--------+---------+-----------+
| Stuid | Name        | gender | birthda | City      |
+-------+-------------+--------+---------+-----------+
|     1 | Li Lei      | M      |    2000 | BeiJing   |
|     2 | Han Mei Mei | F      |    2001 | Shang Hai |
|     3 | Wu Jun      | M      |    2002 | Hang Zhou |
+-------+-------------+--------+---------+-----------+

SELECT

SELECT 是sql数据操纵语言DML中用于查询表格内字段数据的指令,可搭配条件限制的子句(例如:WHERE)或排序顺序的字句(如:ORDER)来获取查询结果。

    (1) SELECT * FROM tbl_name,tbl_name_2;       
  1.   返回指定表的所有数据:慎用;

    (2) SELECT col1,col2,…FROM tbl_name;

  1.   显示时,字段可以显示为别名;

    (3) SELECT col1,…FROM tbl_name WHERE clause;

 
  1.         WHERE clause:用于指明挑选条件;
  2.         col_name z操作符 value:
  3.          age > 30;
操作符(1): mysql operators
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
  • ==:等于
  • !=:不等于
组合条件:
  • and:与
  • or:  或
  • not:非
 操作符(2):

 

  •             BETWEEN … AND …
  •             LIKE ‘PATTERN’
通配符:
  •                     %:任意长度的任意字符:
  •                     _:任意单位字符;
  •             RLIKE ‘PATTENRN’
正则表达式对字符串做模式匹配;
  •             IS NULL
  •             IS NOT NULL
SELECT col1,… FROM tbl_name [WHERE clause] ORDER BY col_name,col_name2,… [ASC | DESC];
  •             ASC:升序;
  •             DESC:降序;
 分组:
  •         GROUP BY, 为了聚合:
  •             count(),sum(),avg(),max(),min()
  •         HAVING:对聚合的结做条件过滤;
示例:1、显示表中所有数据, 
MariaDB [abc] SELECT * FROM persons;
+-------+-------------+--------+---------+-----------+
| Stuid | Name        | gender | birthda | City      |
+-------+-------------+--------+---------+-----------+
|     1 | Li Lei      | M      |    2000 | BeiJing   |
|     2 | Han Mei Mei | F      |    2001 | Shang Hai |
|     3 | Wu Jun      | M      |    2002 | Hang Zhou |
+-------+-------------+--------+---------+-----------+
示例:2、以别名的形式显示
MariaDB [abc] SELECT Name AS user,birthda AS Age FROM persons;
+-------------+------+
| user        | Age  |
+-------------+------+
| Li Lei      | 2000 |
| Han Mei Mei | 2001 |
| Wu Jun      | 2002 |
+-------------+------+
示例:3、操作符 LIKE ‘PATTERN’ 数值条件。
MariaDB [abc] SELECT * FROM persons WHERE City LIKE 'B%'
    -> ;
+-------+--------+--------+---------+---------+
| Stuid | Name   | gender | birthda | City    |
+-------+--------+--------+---------+---------+
|     1 | Li Lei | M      |    2000 | BeiJing |
+-------+--------+--------+---------+---------+

MariaDB [abc] SELECT * FROM persons WHERE birthda = 2002;
+-------+--------+--------+---------+-----------+
| Stuid | Name   | gender | birthda | City      |
+-------+--------+--------+---------+-----------+
|     3 | Wu Jun | M      |    2002 | Hang Zhou |
+-------+--------+--------+---------+-----------+

UPDATE

UPDATE 根据指定的条件位置,将匹配到的数据表中的数据进行更新

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1=value1 [, col_name2=value2] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
示例: 更新第3条年龄数据
MariaDB [abc] UPDATE persons SET birthda = 1999 WHERE Stuid =3;

MariaDB [abc] SELECT * FROM persons;
+-------+-------------+--------+---------+-----------+
| Stuid | Name        | gender | birthda | City      |
+-------+-------------+--------+---------+-----------+
|     1 | Li Lei      | M      |    2000 | BeiJing   |
|     2 | Han Mei Mei | F      |    2001 | Shang Hai |
|     3 | Wu Jun      | M      |    1999 | Hang Zhou |
+-------+-------------+--------+---------+-----------+

DELETE

DELETE 删除数据库中指定数据对象的指令

    DELETE  FROM  tbl_name  [WHERE where_condition]  [ORDER BY ...]  [LIMIT row_count]
                        
    (1) DELETE  FROM  tbl_name  WHERE where_condition 
    (2) DELETE  FROM  tbl_name  [ORDER BY ...]  [LIMIT row_count]
示例:删除第三行数据
MariaDB [abc] DELETE FROM persons WHERE Stuid = 3;

MariaDB [abc]> SELECT * FROM persons;
+-------+-------------+--------+---------+-----------+
| Stuid | Name        | gender | birthda | City      |
+-------+-------------+--------+---------+-----------+
|     1 | Li Lei      | M      |    2000 | BeiJing   |
|     2 | Han Mei Mei | F      |    2001 | Shang Hai |
+-------+-------------+--------+---------+-----------+
示例:删除整张表
MariaDB [abc] DELETE FROM persons;

MariaDB [abc] SELECT * FROM persons;
Empty set (0.00 sec) 

ftp

ftp是一种文件传输协议,是基于C/S架构模型来实现服务器端与客户端文件共享访问,客户端与服务器双方确认连接后会建立一个开启一个临时端口专门用于传输命令的通道,用来发送上传、下载、删除等命令,被称为命令连接,数据连接则是用来传输数据的有时会有多个,连接有两种模式:

  1. 主动连接模式:客户端开启一个大于1024的端口【A】向服务器21号端口发出请求,然后临时开放一个端口【A+1】处于监听状态并向服务器发送通知服务器客户端处于监听的端口号【A+1】,服务器接收到后会通过20号端口(通常未被占用的情况)连接客户端端口【A+1】进行数据的传输,
  2. 被动连接模式:客户端开启一个大于1024的端口【A】向服务器21号端口发送请求,然后开放一个端口【A+1】并向服务器端发送PASV命令,通知服务器自己处于被动模式,服务器接收到后会开发一个大于1024的端口【B】处于临时监听状态,并将端口号【B】信息发送给客户端,客户端接受进行后会通过【A+1】连接服务器的端口【B】进行数据传输。

ftp的安全认证机制:PAM

插入式认证模块,通过给每个用户设定独立的访问权限,来达到vsftpd的安全访问。

vsftpd 的用户类型:

  • 匿名用户:anonymous –> ftp./var/fpt
  • 系统用户:至少禁止系统用户访问ftp服务,/etc/vsftpd/ftpusers, PAM(/etc/pam.d/vsftpd)
  • 虚拟用户:非系统用户账号为登录操作系统的用户账号。

注意:用户通过vsftpd服务访问到默认路径,是可以访问自己的home目录,禁止修改home目录的权限,禁锢用户在家目录

配置文件:

/etc/vsftpd/vsftpd.conf

格式:指令+数据,directive必须位于行首

用户的配置指令信息:

匿名用户:
  • anonymous_enable=YES 开启匿名用户
  • anon_upload_enable=YES 匿名用户是否具有上传权限
  • anon_mkdir_write_enable=YES 匿名用户是否可以新建
  • anon_other_write_enable=YES 匿名用户是否可具有删除权限
  • anon_umask=077 匿名用户是否具有上传下在权限
系统用户:
  • local_enable=YES 是否允许本地用户访问ftp
  • write_enable=YES 是否允许本地用户具有(读、写、删)权限。
  • local_umask=022  定义默认问价掩码或遮罩码
  • chroot_local_user=YES 禁锢用户在家目录
  • chroot_list_enable=YES 是否启用名单现限制
  • chroot_list_file=/etc/vsftpd/chroot_list 禁锢所有列表内本地用户位于家目录==(必须去掉对home目录的写权限)
传输日志:
  • xferlog_enable=YES 是否开启传输日志
  • xferlog_file=/var/log/xferlog
  • xferlog_std_format=YES
守护进程的类型:
  • standalona:独立守护进程,有服务进程自行监听套接字,并接收用户访问请求;
  • transient:瞬间守护进程,由受托管方代为监听套接字,服务进程没有访问请求时自动不启动,当托管方收到访问请求时,才启动服务进程。
  1. CentOS 6 :xinetd独立守护进程/etc/xinetd.d/;
  2. CentOS 7: 由systemd代为监听;

控制可登录vsftpd服务的用列表:

  • userlist_enable=YES 是否使用名单来控制用户。/etc/vsftpd/user_list文件来控制可登录用户
  • userlist_deny= YES,[黑名单,禁止访问用户列表],NO,[白名单,允许访问用户列表]
上传下载数率:
  • max_clients=2000
  • max_per_ip=50
虚拟用户:

可存储在MySQL。Redis等关系型数据库中…

vsftpd:认证功能托管给pam模块:

基于和中存储服务来储用户信息,以及存储服务的驱动要靠pam实现。

需要的组件:
  • mariadb-devel
  • pam-devel
示例:

1、过程中需要对pam-mysql进行编译安装所以要提前安装好编译环境。

[root@iZbp1gmwwabhfw7jomy3ddZ ~]# yum -y groupinstall `Development Tools` `Server Platform Development`
2、首先安装需要的协议组件
[root@iZbp1gmwwabhfw7jomy3ddZ ~]# yum -y install mariadb-devel pam-devel mariadb-server vsftpd

3、创建目录pam-mysql,

[root@iZbp1gmwwabhfw7jomy3ddZ ~]# mkdir /pam-mysql
[root@iZbp1gmwwabhfw7jomy3ddZ ~]# cd /pam-mysql/

4、下载pam-mysql的编译安装包,解压并且进行编译安装

[root@iZbp1gmwwabhfw7jomy3ddZ pam-mysql]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz      下载软件包
[root@iZbp1gmwwabhfw7jomy3ddZ pam-mysql]# tar -zxf pam_mysql-0.7RC1.tar.gz   解压软件包
[root@iZbp1gmwwabhfw7jomy3ddZ pam-mysql]# cd pam_mysql-0.7RC1                打开解压的目录
[root@iZbp1gmwwabhfw7jomy3ddZ pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/usr/lib64/security/                  然后进行编译
[root@iZbp1gmwwabhfw7jomy3ddZ pam_mysql-0.7RC1]# make && make install       进行编译安装
5、查看文件夹下是否有pam_mysql.so 存在这表示编译安装成功
[root@iZbp1gmwwabhfw7jomy3ddZ etc]# cd /usr/lib64/security/
6、编辑pam做mysql认证并启动服务
[root@iZbp1gmwwabhfw7jomy3ddZ security]# vim /etc/my.cnf.d/server.cnf

    [mysql]
    skip_name_resolve=ON       跳过域名解析
    innodb_file_per_table=ON   影响数据库创建或删除表所耗时
    log_bin=mysql-bin          日志相关文件

[root@iZbp1gmwwabhfw7jomy3ddZ security]# systemctl start mariadb.service
7、创建mysql数据库用户vsftpd并且允许通过所有网络访问数据库,并且新建一个名为vsftpd的数据库,建立表格用来存储vsftpd的管理登录管理账户。
[root@iZbp1gmwwabhfw7jomy3ddZ security]# mysql           打开mysql数据库
MariaDB [(none)]> GRANT ALL ON vsftpd.* TO vsftpd@`%.%.%.%` IDENTIFIED BY `vsftpd`;    创建MySQL的授权账户
[root@iZbp1gmwwabhfw7jomy3ddZ security]# mysql -uvsftpd -pvsftpd -h127.0.0.1           使用mysql账户vsftdp通过本机登录
MariaDB [(none)]> CREATE DATABASE vsftpd;                                              创建vsftpd的数据库
MariaDB [(none)]> use vsftpd;                                                          切换数据库只vsftpd
Database changed

MariaDB [vsftpd]> CREATE TABLE users(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100) NOT NULL,password CHAR(48) NOT NULL,UNIQUE KEY(name));  在vsftpd建立表格
Query OK, 0 rows affected (0.02 sec);

MariaDB [vsftpd]> DESC users;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | varchar(100)     | NO   | UNI | NULL    |                |
| password | char(48)         | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

MariaDB [vsftpd]> INSERT INTO users(name,password) VALUES (`tom`,PASSWORD(`mageedu`)),(`jerry`,PASSWORD(`mageedu`));  插入登录vsftpd的账户名和和登录密码
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
MariaDB [vsftpd]> SELECT * FROM users;
+----+-------+-------------------------------------------+
| id | name  | password                                  |
+----+-------+-------------------------------------------+
|  1 | tom   | *9A94EE7D14C10908118B62D2DA88E6932E11E438 |
|  2 | jerry | *09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0 |
+----+-------+-------------------------------------------+
2 rows in set (0.01 sec)
8、创建系统映射用户
[root@iZbp1gmwwabhfw7jomy3ddZ security]# mkdir /tmp/vuser        给vuser用户建立一个home目录
[root@iZbp1gmwwabhfw7jomy3ddZ security]# useradd -d /tmp/vuser vuser     创建vuser用户并指明home目录为创建的目录

[root@iZbp1gmwwabhfw7jomy3ddZ security]# vim /etc/pam.d/vsftpd.vuser     编辑vsfprd.vuser 认证配置文件 指定虚拟账户的的存储的mysql的登录名vsftpd、主机地址、数据库名称

        auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
        account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2


[root@iZbp1gmwwabhfw7jomy3ddZ security]# vim /etc/vsftpd/vsftpd.conf            修改vsftpd的配置文件
pam_service_name=vsftpd.vuser                                                   指定认证文             
guest_enable=YES                                                                开启访客模式
guest_username=vuser                                                            访客通过vuser账户登录
userlist_enable=YES                                                            
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_config/                                      指定用户配置目录

[root@iZbp1gmwwabhfw7jomy3ddZ]# mkdir /etc/vsftpd/vusers_config/                创建用户配置目录
[root@MiWiFi-R3-srv vusers_config]# vim /etc/vsftpd/vusers_config/tom           创建授权用户tom
anon_upload_enable=YES                                                          tom用户拥有匿名创建的的权限
[root@MiWiFi-R3-srv vusers_config]# vim /etc/vsftpd/vusers_config/jerry         jerry用户

[root@iZbp1gmwwabhfw7jomy3ddZ security]# systemctl restart vsftpd.service       重启服务生效配置
9、登录测试

tom 

[root@MiWiFi-R3-srv ~]# ftp 192.168.124.3
Connected to 192.168.124.3 (192.168.124.3).
220 (vsFTPd 3.0.2)
Name (192.168.124.3:root): tom
331 Please specify the password.
Password:

ftp> cd upload  可以打开文件
ftp> mkdir 10   
550 Permission denied.   拒绝创建文件

jerry

[root@MiWiFi-R3-srv ~]# ftp 192.168.124.3
Connected to 192.168.124.3 (192.168.124.3).
220 (vsFTPd 3.0.2)
Name (192.168.124.3:root): jerry
331 Please specify the password.
Password:
ftp> cd upload
ftp> mkdir 1
ftp> ls

227 Entering Passive Mode (192,168,124,3,81,61).
150 Here comes the directory listing.
drwx------    2 3013     3013            6 Jul 09 13:11 1
226 Directory send OK.
ftp> 

 

简述NFS服务原理及配置

NFS:

网络文件系统:是FreeBSD支持的文件系统之一,允许计算机通过TCP网络共享资源,也可讲共享资源作为挂载使用。默认监听端口是:2049,实际生成环境中尽量修改为其他端口。

辅助类的服务:rpc,portmapper

  • rpc.mountd:认证;半随机端口,CentSO6有固定端口,先找rpc.server获取端口, 再通过rpc.mountd,获取令牌再去访问nfs。
  • rpc.lockd:加锁;保证文件在同一时刻只有一方进行写数据,保证数据的完整性,端口是随机的。
  • rpc.statd:状态;保存当前状态,以恢复或撤销为完成状态,端口是随机的。

rpc 全称 [remote procedure call]远程过程调用,这是一种通过网络从远程计算机程序上请求服务而不需要了解底层网络技术的协议

nfs-utils:

为NFS内核服务提供了高性能安全的守护进程。

配置目录:
  • /etc/exprots 主配置目录
  • /etc/exports.d/* 自定义配置目录
 书写格式:

/PATH/TO/SOME_DIR clients1(export_options,…) clents2(export_options,…)注意括号前没有空格

客户端:
  • single host:ipv4、ipv6,FQDN;
  • network:address/netmask, 支持长短格式的掩码;
  • wildcards:主机明通配,例如:*.mageud.com;
  • netgroups:NIS域内的主机组;@group_name;
  • anonymous;使用*同配置所有主机;
一般选项:
  • ro:只读;
  • rw;读写;
  • sync:同步;
  • async:异步;
  • secure:客户端端口小于1024,否者就要使用insecure选项
用户映射ID:
  • root_squash:压缩root用户,一般指将其映射为nfsnobody;
  • no_root_squash:不压缩root用户
  • all_squash:压缩所有用户
  • anonuid and anongid:将压缩用户映射为此处的用户;
NFS客户端:

mount -t nfs servername:/PATH/TO/SHARE /PATH/TO/MOUNT_POINT[-rvVwfnsh ] [-o options ];

showmount

命令显示NFS服务器的安排信息

  1. -e NFS_SERVER_IP:查看指定的nfs server上导出的所有文件系统;
  2. -a:在nfs server上查看nfs服务器的所有客户端列表
exprotfs:

-r:重新导出;

-a:所有文件系统;

-v:详细信息

-u:取消导出文件系统

示例:
环境配置:

nfs主机:192.168.124.3

测试机器:192.168.124.5

系统版本:CentOS 7

1、服务器安装nfs-utils
[root@MiWiFi-R3-srv ~]# yum -y install nfs-utils    安装nfs 程序

[root@MiWiFi-R3-srv ~]# mkdir -pv /data/mysql    创建nfs主机的共享目录

[root@MiWiFi-R3-srv ~]# vim /etc/exports              编辑主配置文件

/data/mysql 192.168.124.5(rw) 192.168.124.0/16(ro)   给访问主机授权

[root@MiWiFi-R3-srv ~]# systemctl start nfs.service    启动服务 

ss -tnl
:::2049  查看监听默认端口是否存在

客户端:
192.168.124.5
[root@www /]# mount -t nfs -o nfsvers=3,vers=3 192.168.124.3:/data/mysql /mnt
或
[root@www /]# mount -t nfs 192.168.124.3:/data/mysql /mnt   将ftp挂载至测试主机的mnt目录

[root@www /]# cd /mnt              打开mnt目录
[root@www mnt]# touch test      创建一个空文件
[root@www mnt]# ls                    文件存在
test
6、账户同步所拥有的权限也不同
/data/mysql 192.168.124.5(rw,anonuid=1001,anongid=1001) 192.168.0.0/16(ro)
7、用户映射:
服务器
[root@MiWiFi-R3-srv /]# vim /etc/exports
/data/mysql 192.168.124.5(rw,*.aaaa;) 192.168.0.0/16(ro)

客户端
[root@www mnt]# hsotname aaaa
[root@www ~]# mount -t nfs 192.168.124.3:/data/mysql /mnt
[root@www ~]# cd /mnt
[root@www mnt]# ls
test
8、管理员用户
[root@localhost /]# vim /etc/exports
/data/mysql 192.168.124.5(rw,no_root_squash) 192.168.0.0/16(ro)

简述samba服务,并实现samba配置

samba 协议是Linux和Unix系统实现Windows SMB/CIFS 文件服务器文件和但因资源的共享,SMB全称(Server Message Block)是一个协议名,他能被用于web连接,客户端与服务器之间的信息沟通。

samba功能:
  • 文件共享
  • 打印服务共享
  • NetBIOS协议
联机的两种模式:
  1. peer/peer(对等模式 workgrou model) 
  2. domain model (主控模式)
程序环境:
  • samba
  • samba-common
  • samba-libs

主配置文件:/etc/smaba/smb.conf

子配置文件:/etc/samba/*.smb.conf

主程序及端口:
  1. nmbd_NetBIOS name server NetBIOS 名称解析服务器 UDP 137、138;
  2. smbd:SMB/CIFS service 实现主机间共享:TCP 139、445;
系统服务:
  1. smb.service
  2. nmb.service

主配置文件的配置段:

  • global:全局配置

     

     

    • workgroup=SAMBA用户组
    • security=user 使用samba服务自我账号和密码认证
  • homes:定义samba用户定义能否访问自己的家目录
  • printers:定义打印服务
  • print$:其他
常用配置信息:
  • comment:注释信息
  • path:映射的共享目录路径;
  • write list:可访问的用户的列表

     

     

    • 用户名/组
    • @用户名/组
    • +用户名/组
  • force group:
  • valid users:访问白名单;
  • invalid users:访问黑名单
  • browswable:是否可以查看
  • inherit acls:
  • guest ok:是否允许来宾账号访问;
  • public:是否公开所有用户;
  • writable:是否可写
  • read only:是否可读
samba用户管理:

smbpasswd [options} USERNAME

  1. -a:添加
  2. -x:删除
  3. -d:禁用
  4. -e:启用

options

  1. -L:列出samba服务中的所有用户
  2. –a,create:添加用户为samba用户
  3. -u:要管理的用户
  4. -x:删除用户
  5. -t:从标准输出接收字符串作为用户密码,使用空提示符号,然后输入两遍密码;
示例:

环境配置:关闭防火墙关系selinux

系统版本:CentOS 7

1、创建一个共享目录/data/up,用CentOS、gentoo为一个用户组user,拥有读、写权限、其他用户不可见

 

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

创建用户
[root@localhost ~]# useradd centos
[root@localhost ~]# useradd gentoo
[root@localhost ~]# useradd spy

创建组
[root@localhost ~]# groupadd user

centos、gentoo 加入 user组
[root@localhost ~]# usermod -G user centos
[root@localhost ~]# usermod -G user gentoo

加入samba 用户组
[root@localhost ~]# smbpasswd -a centos
New SMB password: 123456
Retype new SMB password: 123456
Added user centos.
[root@localhost ~]# smbpasswd -a gentoo
New SMB password:
Retype new SMB password:
Added user gentoo.
[root@localhost ~]# smbpasswd -a spy
New SMB password:
Retype new SMB password:
Added user spy.

创建共享目录
[root@localhost ~]# mkdir -pv /data/up

设置文件共享属组的组
[root@localhost ~]# setfacl -m g:user:rwx /data/up
[root@localhost ~]# getfacl /data/up
getfacl: Removing leading `/` from absolute path names
# file: data/up
# owner: root
# group: root
user::rwx
group::r-x
group:user:rwx
mask::rwx
other::r-x

编辑全局配置文件
[root@localhost ~]# vim /etc/samba/smb.conf

[up]
        comment = up
        path = /data/up
        valid users = @user  访问白名单
        write list = @user
        publice = no
        browseable = no
        printable = no

启动服务
[root@localhost ~]# systemctl start nmb.service smb.service

客户端测试:
访问成功
[root@localhost ~]# smbclient //192.168.199.124/up -U gentoo
Enter SAMBA\gentoo's password: 
Try "help" to get a list of possible commands.
smb: \> mkdir centos
访问成功
[root@localhost ~]# smbclient -U centos //192.168.199.124/up
Enter SAMBA\centos's password: 
Try "help" to get a list of possible commands.
smb: \> mkdir gentoo

访问失败
[root@localhost ~]# smbclient //192.168.199.124/up -U spy
Enter SAMBA\spy's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED
子授权文件
创建目录
[root@localhost ~]# mkdir /data/spy
设置目录权限
[root@localhost data]# chmod 775 spy

编辑子配置文件/etc/samba/*.smb.conf

[root@localhost data]# vim /etc/samba/spy.smb.conf 

[xyz]
        comment = spy
        path = /data/spy
        valid users = spy
        printable = no
        public = no
        browseable =no

主配置文件添加子配置路径
[root@localhost data]# vim /etc/samba/smb.conf

[global]
        include = /etc/samba/%U.smb.conf
  1. include 只能访问子配置设置的共享文件,不能访问samba主配置文件的文件。
  2. config file 既能访问子配置文件也能访问samba的主配置文件。
重启服务客户端测试

 [root@localhost data]# systemctl restart nmb.service smb.service

客户端测试:
[root@localhost ~]# smbclient //192.168.199.124/xyz -U spy
Enter SAMBA\spy`s password: 
Try `help` to get a list of possible commands.
smb: \>

原创文章,作者:N28_刚好遇到小熊猫,如若转载,请注明出处:http://www.178linux.com/124657