linux运维

LAMP搭建,SQL举例及ftp,NFS和samba配置

2018-05-04  本文已影响41人  dabule

搭建php-fpm工作方式的LAMP环境,实现wordpress正常访问

centos6对于hph-fpm需要自行编译安装,centos7则源生支持,以下使用一台虚拟机来搭建LAMP环境,并实现wordpress功能.步骤如下:
1. 安装mariadb服务并配置文件:

[root@localhost ~]# yum -y install mariadb-server.x86_64 
....
Dependency Installed:
  mariadb.x86_64 1:5.5.56-2.el7          perl-DBD-MySQL.x86_64 0:4.023-5.el7         

Complete!

[root@localhost ~]# vim /etc/my.cnf.d/server.cnf 

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

# this is only for embedded server
[embedded]
skip_name_resove=ON  #加入这个,取消名字解析
innodb_file_per_table=ON  #innodb使用单独的表
# This group is only read by MariaDB-5.5 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mysqld-5.5]

"/etc/my.cnf.d/server.cnf" 29L, 788C          

[root@localhost ~]# systemctl start mariadb.service 

[root@localhost ~]# ss -tnl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128            *:111                        *:*                  
LISTEN      0      5      192.168.122.1:53                         *:*                  
LISTEN      0      128            *:22                         *:*                  
LISTEN      0      128    127.0.0.1:631                        *:*                  
LISTEN      0      100    127.0.0.1:25                         *:*                  
LISTEN      0      50             *:3306                       *:*      #3306使命服务启动了   
LISTEN      0      128           :::111                       :::*                  
LISTEN      0      128           :::80                        :::*                  
LISTEN      0      128           :::22                        :::*                  
LISTEN      0      128          ::1:631                       :::*                  
LISTEN      0      100          ::1:25                        :::*                  
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf 

[root@localhost ~]# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y  #是否设置root用户
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  #是否移除虚拟用户
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n   #是否运行root远程登录
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] n  #是否删除test表
 ... skipping.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  #是否重新加载基本表
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!   #出现提示说明配置完成.

2. 安装php-fpm:

[root@localhost ~]# yum -y install php-mysql php-fpm.x86_64 php-mbstring.x86_64 
......

Installed:
  php-fpm.x86_64 0:5.4.16-43.el7_4.1      php-mbstring.x86_64 0:5.4.16-43.el7_4.1   
  php-mysql.x86_64 0:5.4.16-43.el7_4.1   

Dependency Installed:
  libzip.x86_64 0:0.10.1-8.el7            php-common.x86_64 0:5.4.16-43.el7_4.1     
  php-pdo.x86_64 0:5.4.16-43.el7_4.1     

Complete!

#php-mysql   连接mysql服务的接口
#php-mbstring.x86_64  支持多字节的模块

[root@localhost php-fpm.d]# vim www.conf

; Start a new pool named 'www'.
[www]

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000

; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: -1
;listen.backlog = -1  #等待请求的队列,-1表示无限制

; List of ipv4 addresses of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any  # ';'号表示注释
listen.allowed_clients = 127.0.0.1  #运行访问的客户端地址
...省略...
ping.path = /ping  #把这个启动起来

; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
ping.response = pong  #同上
...省略...
; Set session path to a directory owned by process user
php_value[session.save_handler] = files  #设置会话文件及下面的路径
php_value[session.save_path] = /var/lib/php/session  #默认不存在,创建之,用户组改成使用该模块的系统用户apache

------------分割线------------

[root@localhost php-fpm.d]# mkdir /var/lib/php/session -pv
mkdir: created directory ‘/var/lib/php/session’
[root@localhost php-fpm.d]# chown apache:apache /var/lib/php/session/
[root@localhost php-fpm.d]# 

[root@localhost php-fpm.d]# systemctl start php-fpm.service 
[root@localhost php-fpm.d]# ss -tnl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128            *:111                        *:*                  
LISTEN      0      5      192.168.122.1:53                         *:*                  
LISTEN      0      128            *:22                         *:*                  
LISTEN      0      128    127.0.0.1:631                        *:*                  
LISTEN      0      100    127.0.0.1:25                         *:*                  
LISTEN      0      128    127.0.0.1:9000                       *:*        #说明服务已经启动并监听       
LISTEN      0      50             *:3306                       *:*                  
LISTEN      0      128           :::111                       :::*                  
LISTEN      0      128           :::80                        :::*                  
LISTEN      0      128           :::22                        :::*                  
LISTEN      0      128          ::1:631                       :::*                  
LISTEN      0      100          ::1:25                        :::*    

3. 安装httpd:

[root@localhost php-fpm.d]# yum -y install httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: centos.ustc.edu.cn
Package httpd-2.4.6-67.el7.centos.6.x86_64 already installed and latest version
Nothing to do

[root@localhost php-fpm.d]# httpd -M
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 allowmethods_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_anon_module (shared)
 authn_core_module (shared)
 authn_dbd_module (shared)
 authn_dbm_module (shared)
 authn_file_module (shared)
 authn_socache_module (shared)
 authz_core_module (shared)
 authz_dbd_module (shared)
 authz_dbm_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_owner_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cache_module (shared)
 cache_disk_module (shared)
 data_module (shared)
 dbd_module (shared)
 deflate_module (shared)
 dir_module (shared)
 dumpio_module (shared)
 echo_module (shared)
 env_module (shared)
 expires_module (shared)
 ext_filter_module (shared)
 filter_module (shared)
 headers_module (shared)
 include_module (shared)
 info_module (shared)
 log_config_module (shared)
 logio_module (shared)
 mime_magic_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 remoteip_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 slotmem_plain_module (shared)
 slotmem_shm_module (shared)
 socache_dbm_module (shared)
 socache_memcache_module (shared)
 socache_shmcb_module (shared)
 status_module (shared)
 substitute_module (shared)
 suexec_module (shared)
 unique_id_module (shared)
 unixd_module (shared)
 userdir_module (shared)
 version_module (shared)
 vhost_alias_module (shared)
 dav_module (shared)
 dav_fs_module (shared)
 dav_lock_module (shared)
 lua_module (shared)
 mpm_prefork_module (shared)
 proxy_module (shared)
 lbmethod_bybusyness_module (shared)
 lbmethod_byrequests_module (shared)
 lbmethod_bytraffic_module (shared)
 lbmethod_heartbeat_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_connect_module (shared)
 proxy_express_module (shared)
 proxy_fcgi_module (shared)   #没有这个模块无法与客户端通信的
 proxy_fdpass_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_scgi_module (shared)
 proxy_wstunnel_module (shared)
 systemd_module (shared)
 cgi_module (shared)

[root@localhost php-fpm.d]# mkdir -pv /date/www/html
mkdir: created directory ‘/date’
mkdir: created directory ‘/date/www’
mkdir: created directory ‘/date/www/html’

----------------分割线----------------

[root@localhost php-fpm.d]# vim /etc/httpd/conf.d/fcgi.conf

DirectoryIndex index.php  #默认主页
<VirtualHost *:80>
        ServerName www.magedu.net
        DocumentRoot /date/www/html  #要创建这个目录
        ProxyRequests Off    #关闭正向代理
        ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/date/www/html/$1   #与上面的目录路径一致
#如果用户请求的匹配.php结尾的文件就反代到/var/www/html/$1 目录下.$1代表(.*\.php)
        <Directory "/date/www/html">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
"/etc/httpd/conf.d/fcgi.conf" 12L, 313C  
:wq

----------------分割线----------------

[root@localhost php-fpm.d]# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK

[root@localhost php-fpm.d]# vim /date/www/html/index.php

<?php
        phpinfo();
?>
~                                                                                    
~       
:wq
php-fpm安装成功.png

php-fpm安装成功,图中显示为FPM格式的php

4. 安装wordpress:

[root@localhost php-fpm.d]# tar xf /root/wordpress-4.9.4-zh_CN.tar.gz 
[root@localhost php-fpm.d]# ls /root/
anaconda-ks.cfg  epel-7.repo           Pictures   wordpress-4.9.4-zh_CN.tar.gz
Desktop          File Explorer.lnk     Public     wordpress-4.9.4-zh_CN.zip
Documents        initial-setup-ks.cfg  Templates
Downloads        Music                 Videos

[root@localhost php-fpm.d]# rm -rf /date/www/html/index.php 

[root@localhost php-fpm.d]# cp -a wordpress/* /date/www/html/

wordpress页面.png

出现这个页面就成功了一般,按页面提示来操作即可以

[root@localhost php-fpm.d]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input st

MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wpuser'@'%' IDENTIFIED BY 'wppass';
Query OK, 0 rows affected (0.42 sec)
MariaDB [(none)]> CREATE DATABASE wordpress;   #创建wordpress数据库
Query OK, 1 row affected (0.00 sec)

*复制httpd主页目录下wp-config-sample.php并配置

[root@localhost html]# cp wp-config-sample.php wp-config.php  #配置文件名称不要改其他的,会报错

[root@localhost html]# vim wp-config.php   
/**#@+
 * 身份认证密钥与盐。
 *
 * 修改为任意独一无二的字串!
 * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/
 * WordPress.org密钥生成服务}
 * 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

/**#@-*/

/**
 * WordPress数据表前缀。
 *
 * 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置
 * 不同的数据表前缀。前缀名只能为数字、字母加下划线。
 */
$table_prefix  = 'wp_';
 * * ABSPATH
 *
 * @link https://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php
 *
 * @package WordPress
 */

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

/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');    #改为数据库用户名

/** MySQL数据库密码 */
define('DB_PASSWORD', 'wppass');    #数据库的密码

/** MySQL主机 */
define('DB_HOST', 'localhost');   #允许访问的主机地址

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');   

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

/**#@+
 * 身份认证密钥与盐。
 *
...省略...
:wq

*刷新页面登录wordpress:


wordpress页面.png

点击现在就开始

出现安装界面.png

点击安装wordpress

wordpress安装成功.png

点击登陆

wordpress用户登录.png

填写登陆信息并登录

wordpress的界面.png

最终登陆界面,大功告成.

什么是DML?常用SQL举例,每个命令至少1个例子,最多不超过3个例子

DML:数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE、SELECT,分别代表插入、更新、删除与查询,是开发以数据为中心的应用程序必定会使用到的指令
获取命令帮助:

mysql> help KEYWORD

MariaDB [(none)]> help SHOW
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases, tables,
columns, or status information about the server. This section describes
those following:

SHOW AUTHORS
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CONTRIBUTORS
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
...省略...

MariaDB [test]> INSERT INTO mage(id,name) VALUES(2,'hoho'); 
Query OK, 1 row affected (0.32 sec)

MariaDB [test]> INSERT INTO mage(id,name) VALUES(3,'maha'); 
Query OK, 1 row affected (0.01 sec)

MariaDB [test]> SELECT * FROM mage;
+------+------+
| id   | name |
+------+------+
|    1 | haha |
|    2 | hoho |
|    3 | maha |
|    4 | maha |
+------+------+
4 rows in set (0.00 sec)

--------------分割线--------------

MariaDB [test]> SELECT id FROM mage WHERE id < 2;
+------+
| id   |
+------+
|    1 |
+------+
1 row in set (0.00 sec)



MariaDB [test]> DELETE FROM mage WHERE id = 1;
Query OK, 1 row affected (0.34 sec)

MariaDB [test]> SELECT * FROM mage;
+------+------+
| id   | name |
+------+------+
|    2 | hoho |
|    3 | maha |
|    4 | maha |
+------+------+
3 rows in set (0.00 sec)

--------------分割线--------------

MariaDB [test]> DELETE FROM mage WHERE name = 'maha';
Query OK, 2 rows affected (0.33 sec)

MariaDB [test]> SELECT * FROM mage;
+------+------+
| id   | name |
+------+------+
|    2 | hoho |
+------+------+
1 row in set (0.00 sec)

MariaDB [test]> SELECT * FROM mage;
+------+------+
| id   | name |
+------+------+
|    2 | hoho |
|    2 | hoho |
|    3 | maha |
|    1 | haha |
+------+------+
4 rows in set (0.00 sec)

MariaDB [test]> UPDATE mage SET id=4 WHERE name = 'hoho';
Query OK, 2 rows affected (0.29 sec)
Rows matched: 2  Changed: 2  Warnings: 0

MariaDB [test]> SELECT * FROM mage;
+------+------+
| id   | name |
+------+------+
|    4 | hoho |
|    4 | hoho |
|    3 | maha |
|    1 | haha |
+------+------+
4 rows in set (0.00 sec)

--------------分割线--------------

MariaDB [test]> SELECT * FROM mage;
+------+------+
| id   | name |
+------+------+
|    3 | maha |
|    1 | haha |
+------+------+
2 rows in set (0.00 sec)

MariaDB [test]> UPDATE mage SET name='lalala' WHERE id < 2;
Query OK, 1 row affected (0.29 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [test]> SELECT * FROM mage;
+------+--------+
| id   | name   |
+------+--------+
|    3 | maha   |
|    1 | lalala |
+------+--------+
2 rows in set (0.01 sec)

简述ftp的主动和被动模式,并实现基于pam认证的vsftpd

数据传输连接由服务器主动创建,客户端先随机一个端口N,用这个的端口连接服务器的21端口来完成命令连接的建立,之后服务器以tcp的20端口主动连接客户端的N+1端口来进行数据传输连接.

数据传输连接由客户端的某个随机端口去连接服务器的某个端口,命令连接的方式与主动连接方式一致,完成连接之后服务器会告诉客户端连接的端口M,于是客户端的N+1端口连接服务器的M端口来进行数据传输的连接.

pam:
可插入式认证模块,高度模块化,可以查询系统的认证模块.

[root@localhost ~]# rpm -ql pam  | grep so
/etc/security/console.apps
/etc/security/console.handlers
/etc/security/console.perms
/etc/security/console.perms.d
/usr/lib64/libpam.so.0
/usr/lib64/libpam.so.0.83.1
/usr/lib64/libpam_misc.so.0
/usr/lib64/libpam_misc.so.0.82.0
/usr/lib64/libpamc.so.0
/usr/lib64/libpamc.so.0.82.1
/usr/lib64/security/pam_access.so
/usr/lib64/security/pam_chroot.so
/usr/lib64/security/pam_console.so
/usr/lib64/security/pam_cracklib.so
/usr/lib64/security/pam_debug.so
/usr/lib64/security/pam_deny.so

---------------------分割线---------------------

[root@localhost ~]# ls /etc/pam.d/
atd                     login             smartcard-auth-ac
chfn                    other             smtp
chsh                    passwd            smtp.postfix
config-util             password-auth     sshd
crond                   password-auth-ac  su
cups                    pluto             sudo
fingerprint-auth        polkit-1          sudo-i
fingerprint-auth-ac     postlogin         su-l
gdm-autologin           postlogin-ac      system-auth
gdm-fingerprint         ppp               system-auth-ac
gdm-launch-environment  remote            systemd-user
gdm-password            runuser           vlock
gdm-pin                 runuser-l         vmtoolsd
gdm-smartcard           setup             xserver
liveinst                smartcard-auth

虚拟用户模式登录ftp所用到的用户不是系统本地用户,这些虚拟用户只能对ftp服务器中的文件有写权限而不能对系统中的其他资源有访问权限,提高了安全性.这是又就使用pam模块了做认证.

[root@localhost ~]# vim /etc/vsftpd/vuser.list

magedu1
123456
magedu2
654321

~         
:wq

[root@localhost ~]# yum -y install db4-utils  #安装转换工具db4
...忽略...
  Verifying  : libdb4-utils-4.8.30-13.el7.x86_64                                                                                                         1/2 
  Verifying  : libdb4-4.8.30-13.el7.x86_64                                                                                                               2/2 

Installed:
  libdb4-utils.x86_64 0:4.8.30-13.el7                                                                                                                        

Dependency Installed:
  libdb4.x86_64 0:4.8.30-13.el7                                                                                                                              

Complete!

----------------分割线----------------

[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db   # 转换文件

----------------分割线----------------

[root@localhost ~]# chmod 600 /etc/vsftpd/vuser.*   #修改密码文件,保证安全性
[root@localhost ~]# ll /etc/vsftpd/vuser.*
-rw-------. 1 root root 12288 May  3 23:48 /etc/vsftpd/vuser.db
-rw-------. 1 root root    31 May  3 23:41 /etc/vsftpd/vuser.list

[root@localhost ~]# mkdir /var/ftproot

----------------分割线----------------

[root@localhost ~]# useradd -d /var/ftproot/ -s /sbin/nologin virtual
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

----------------分割线----------------

[root@localhost ~]# chmod 755 /var/ftproot/  #修改根目录权限

[root@localhost ~]# vim /etc/pam.d/vsftpd 

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
auth       required     pam_userdb.so db=/etc/vsftpd/vuser   #加入最后两行
account    required     pam_userdb.so db=/etc/vsftpd/vuser  #文件后缀不能带
~                     
:wq
                                        
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO   #这里改成NO
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
...省略...
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES  #允许虚拟用户登录
guest_username=virtual  #虚拟用户名字
pam_service_name=vsftpd   #虚拟用户的pam文件名称
virtual_use_local_privs=YES  #开启虚拟用户功能
user_config_dir=/etc/vsftpd/vusers_dir    #虚拟用户的配置目录,需要自己创建

:wq

*创建虚拟用户的目录文件并配置:

[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir
[root@localhost ~]# cd /etc/vsftpd/vusers_dir
[root@localhost vusers_dir]# touch magedu1 magedu2
[root@localhost vusers_dir]# vim magedu2

anon_upload_enable=YES
anon_mkdir_enable=YES

:wq

[root@localhost vusers_dir]# systemctl restart vsftpd
[root@localhost vusers_dir]# lftp -u virtual 192.168.1.108
Password: 
lftp virtual@192.168.1.108:~> 

简述NFS服务原理及配置

NFS是网络文件系统,NFS能够通过片网络实现在不同主机之间彼此资源的共享.NFS主要借助RPC(远程过程调用)来实现文件分享,NFS的配置文件及格式用法如下:

  /etc/exports或/etc/exports.d/*
            /PATH/TO/SOME_DIR   clients1(export_options, ...)  clients2(export_options, ...)
    clients:
            single host:ipv4, ipv6, FQDN
            network:address/netmask, 支持长短格式的掩码
            wildcards:主机名通配,例如:*.magedu.com
            netgroups:NIS域内的主机组;@group_name
            anonymous:使用*通配所有主机;
                    
        常用 Options:
            ro:只读方式读取数据
            rw:读写
            sync:同步
            async:异步
            secure:客户端端口小于1024,否则就要使用insecure选项
        User ID Mapping:
            root_squash:压缩root用户,一般指将其映射为nfsnobody
            no_root_squash:不压缩root用户,允许root用户访问挂载的NFS卷
            all_squash:压缩所有用户
            anonuid and anongid:将压缩的用户映射为此处指定的用户

*客户端配置:

NFS 客户端:
    mount -t nfs servername:/path/to/share /path/to/mount_point  [-rvVwfnsh ] [-o options]
            
showmount -显示NFS挂载点信息
    showmount -e NFS_SERVER_IP: 查看指定的nfs server上导出的所有文件系统
    showmount -a:在nfs server上查看nfs服务的所有客户端列表
        
exportfs:
        -r:重新导出
        -a:所有文件系统
        -v:详细信息
        -u:取消导出文件系统
    # exportfs -ar
    # exportfs -au

因为NFS依赖RPC服务,所以安装NFS时要先安装rpcbind服务.下面演示一下NFS文件分享.

1.在服务端配置:

*安装服务:

[root@localhost ~]# yum -y install nfs-utils.x86_64 
Loaded plugins: fastestmirror, langpacks
base                                                                  | 3.6 kB  00:00:00     
epel                                                                  | 4.7 kB  00:00:00     
extras                                                                | 3.4 kB  00:00:00     
updates                                                               | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
...省略...
Updated:
  nfs-utils.x86_64 1:1.3.0-0.48.el7_4.2                                                      

Complete!
[root@localhost ~]# yum -y install rpcbind
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package rpcbind-0.2.0-42.el7.x86_64 already installed and latest version
Nothing to do

[root@localhost ~]# mkdir /tmp/test
  

*配置文件:

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

/tmp/test  192.168.1.105(rw,sync,no_root_squash)
~                                                                                            
~                                                                                            
#/tmp/test 分享目录,      192.168.1.105 :分享的客户端                                                                                    
# (rw,sync,no_root_squash)  客户端用户的权限                                                                                            
~                                                                                            
~                              
:wq
[root@localhost ~]# systemctl start nfs rpcbind
[root@localhost ~]# systemctl status nfs rpcbind
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Fri 2018-05-04 18:31:41 CST; 1min 56s ago
  Process: 45371 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 45364 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)
  Process: 45362 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
 Main PID: 45371 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

May 04 18:31:41 localhost.localdomain systemd[1]: Starting NFS server and services...
May 04 18:31:41 localhost.localdomain exportfs[45362]: exportfs: Failed to stat /etc/test...y
May 04 18:31:41 localhost.localdomain systemd[1]: Started NFS server and services.

● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: active (running) since Fri 2018-05-04 18:31:41 CST; 1min 56s ago
  Process: 45357 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 45359 (rpcbind)

2. 客户端配置:

[root@localhost ~]# showmount -e 192.168.1.108
Export list for 192.168.1.108:
/tmp/test 192.168.1.105

[root@localhost ~]# mount -t nfs 192.168.1.108:/tmp/test /tmp/test
[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=917556k,nr_inodes=229389,mode=755)

...省略...

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186708k,mode=700,uid=42,gid=42)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186708k,mode=700)
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
192.168.1.108:/tmp/test on /tmp/test type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.105,local_lock=none,addr=192.168.1.108)

*测试NFS:

在客户端挂载目录下创建目录
[root@localhost test]# vim nfs.txt

this is a client nfs file
~                                                                                            
~                               
:wq

-------------分割线-------------

在服务器端查看对应目录下是否有文件
[root@localhost test]# ls
nfs.txt
[root@localhost test]# cat nfs.txt   #网络分享文件同步过来了
this is a client nfs file

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

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源,samba常用的配置以及命令 如下:

 samba的配置:
/etc/samba/smb.conf
        
    两类配置段:
        全局配置
            [global]
                Network-Related Options
                    workgroup =
                    server string = 
                    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
                    hosts allow = 127.  192.168.12.  192.168.13.

                Logging Options
                    log file = /var/log/samba/log.%m
                    max log size = 50

                Standalone Server Options
                    security = user   #设定安全级别:取值有四个
                        share:匿名共享
                        user:使用samba服务自我管理的账号和密码进行用户认证;用户必须是系统用户,但密码非为/etc/shadow中的密码,而由samba自行管理的文件,其密码文件的格式由passdb backend进行定义
                        server:由第三方服务进行统一认证
                        domain:使用DC进行认证;基于kerberos协议进行;
                        passdb backend = tdbsam

                Printing Options
                        load printers = yes
                        cups options = raw
                    
        [SHARED_NAME]   共享文件系统配置
                有三类:
                    [homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录
                    [printers]:定义打印服务
                    [shared_fs]:定义共享的文件系统;
                    
                常用指令:
                    comment:注释信息
                    path:当前共享所映射的文件系统路径
                    browseable:是否可浏览,指是否可被用户查看
                    guest ok:是否允许来宾账号访问
                    public:是否公开所有用户
                    writable:是否可写
                    read only:是否为只读
                    write list:拥有写权限的用户列表
                        用户名
                        @组名
                        +组名
            
        samba用户管理:
            smbpasswd 
                smbpasswd [options] USERNAME
                    -a:添加
                    -x:删除
                    -d:禁用
                    -e:启用
            pdbedit
                -L:列出samba服务中的所有用户
                -a, --create:添加用户为samba用户
                    -u, --user=USER:要管理的用户;
                -x, --delete:删除用户
                -t, --password-from-stdin:从标准输出接收字符串作为用户密码
                    使用空提示符,而后将密码输入两次
            
        查看服务器端的共享:
            smbclient -L SMB_SERVER  [-U USERNAME]
            
        交互式文件访问:
            smbclient //SMB_SERVER/SHARE_NAME [-U USERNAME]
            
        挂载访问:
            mount -t cifs //SMB_SERVER/SAHRE_NAME  -o username=USERNAME,password=PASSWORD
            
            注意:挂载操作的用户,与-o选项中指定用户直接产生映射关系;
                此时,访问挂载点,是以-o选项中的username指定的用户身份进行;本地用户对指定的路径访问,首先得拥有对应的本地文件系统权限;
            
smbstatus命令:显示samba服务的相关共享的访问状态信息
        -b:显示简要格式信息
        -v:显示详细格式信息

下面演示一下samba的配置;

1.服务端配置:

[root@localhost test]# yum -y install samba
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
...省略...
Dependency Updated:
  libsmbclient.x86_64 0:4.6.2-12.el7_4            libwbclient.x86_64 0:4.6.2-12.el7_4       
  samba-client-libs.x86_64 0:4.6.2-12.el7_4       samba-common.noarch 0:4.6.2-12.el7_4      

Complete!

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

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

...省略...

[homes]
        comment = samba test dir
        path = /tmp/sambatest
        writeable = Yes
        create mask = 0600
        public = Yes
        browseable = No

:wq
[root@localhost test]# useradd smbtest
[root@localhost test]# smbpasswd -a smbtest
New SMB password:
Retype new SMB password:
Added user smbtest.

[root@localhost test]# systemctl start smb nmb
[root@localhost test]# systemctl status smb nmb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2018-05-04 20:26:10 CST; 7s ago
 Main PID: 47137 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─47137 /usr/sbin/smbd
           ├─47138 /usr/sbin/smbd
           ├─47139 /usr/sbin/smbd
           └─47140 /usr/sbin/smbd

May 04 20:26:09 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
May 04 20:26:10 localhost.localdomain smbd[47137]: [2018/05/04 20:26:10.114204,  0] ../l...y)
May 04 20:26:10 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
May 04 20:26:10 localhost.localdomain smbd[47137]:   STATUS=daemon 'smbd' finished start...ns

● nmb.service - Samba NMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/nmb.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2018-05-04 20:26:09 CST; 8s ago
 Main PID: 47135 (nmbd)
   Status: "nmbd: ready to serve connections..."
   CGroup: /system.slice/nmb.service
           └─47135 /usr/sbin/nmbd

2.客户端配置:

[root@localhost test]# yum -y install samba-client
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Repository epel-debuginfo is listed more than once in the configuration
Repository epel-source is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
...省略...
Installed:
  samba-client.x86_64 0:4.6.2-12.el7_4                                                       

Complete!

*连接服务端:

[root@localhost test]# smbclient //192.168.1.108/smbtest -U smbtest
Enter SAMBA\smbtest's password: 
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
  .                                   D        0  Fri May  4 20:13:24 2018
  ..                                  D        0  Fri May  4 20:41:59 2018

        18971044 blocks of size 1024. 13750820 blocks available

*挂载目录:

[root@localhost test]# mount -t cifs //192.168.1.108/smbtest /tmp/smb -o username=smbtest,password=123456
[root@localhost test]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

...省略...

192.168.1.108:/tmp/test on /tmp/test type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.105,local_lock=none,addr=192.168.1.108)
//192.168.1.108/smbtest on /tmp/smb type cifs (rw,relatime,vers=1.0,cache=strict,username=smbtest,domain=LOCALHOST,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.108,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)


上一篇下一篇

猜你喜欢

热点阅读