第十一周作業

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數據庫
[[email protected] ~]# yum -y install httpd php php-mysql mariadb-server
[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
 ServerName www.example.com:80 去掉注釋
2、檢查語法錯誤,并啟用服務, ,172.16.1.% ;
[[email protected] ~]# httpd -t 檢查語法錯誤
[[email protected] ~]# systemctl start httpd.service 啟動服務
[[email protected] ~]# 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.%.%
[[email protected] ~]# mysql
...
...
MariaDB [(none)] GRANT ALL ON wordpress.* TO `admin`@`%` IDENTIFIED BY `admin`;
MariaDB [(none)] exit
Bye
4、登錄測試是否能夠正常啟動
[[email protected] ~]# mysql -uadmin -h192.168.1.2 -padmin
5、配置安裝 wordpress
[[email protected] ~]# mkdir /wordpress            創建一個目錄
[[email protected] ~]# cd /wordpress
[[email protected] ~]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.zip      下載wordpress-4.9.4 版本
[[email protected] ~]# unzip wordpress-4.9.4-zh_CN.zip                              解壓文件
[[email protected] ~]# cp -a wordpress /var/www/html/blog                           拷貝將解壓的文件wordpress 至httpd定義的web目錄并改名blog

[[email protected] ~]# cd /var/www/html/blog                                        打開blog
[[email protected] ~]# cp wp-config-sample.php wp-config.php                        復制模板文件,創建wordpress配置文件
[[email protected] ~]# 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進行編譯安裝所以要提前安裝好編譯環境。

[[email protected] ~]# yum -y groupinstall `Development Tools` `Server Platform Development`
2、首先安裝需要的協議組件
[[email protected] ~]# yum -y install mariadb-devel pam-devel mariadb-server vsftpd

3、創建目錄pam-mysql,

[[email protected] ~]# mkdir /pam-mysql
[[email protected] ~]# cd /pam-mysql/

4、下載pam-mysql的編譯安裝包,解壓并且進行編譯安裝

[[email protected] pam-mysql]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz      下載軟件包
[[email protected] pam-mysql]# tar -zxf pam_mysql-0.7RC1.tar.gz   解壓軟件包
[[email protected] pam-mysql]# cd pam_mysql-0.7RC1                打開解壓的目錄
[[email protected] pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/usr/lib64/security/                  然后進行編譯
[[email protected] pam_mysql-0.7RC1]# make && make install       進行編譯安裝
5、查看文件夾下是否有pam_mysql.so 存在這表示編譯安裝成功
[[email protected] etc]# cd /usr/lib64/security/
6、編輯pam做mysql認證并啟動服務
[[email protected] security]# vim /etc/my.cnf.d/server.cnf

    [mysql]
    skip_name_resolve=ON       跳過域名解析
    innodb_file_per_table=ON   影響數據庫創建或刪除表所耗時
    log_bin=mysql-bin          日志相關文件

[[email protected] security]# systemctl start mariadb.service
7、創建mysql數據庫用戶vsftpd并且允許通過所有網絡訪問數據庫,并且新建一個名為vsftpd的數據庫,建立表格用來存儲vsftpd的管理登錄管理賬戶。
[[email protected] security]# mysql           打開mysql數據庫
MariaDB [(none)]> GRANT ALL ON vsftpd.* TO [email protected]`%.%.%.%` IDENTIFIED BY `vsftpd`;    創建MySQL的授權賬戶
[[email protected] 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、創建系統映射用戶
[[email protected] security]# mkdir /tmp/vuser        給vuser用戶建立一個home目錄
[[email protected] security]# useradd -d /tmp/vuser vuser     創建vuser用戶并指明home目錄為創建的目錄

[[email protected] 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


[[email protected] 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/                                      指定用戶配置目錄

[[email protected]]# mkdir /etc/vsftpd/vusers_config/                創建用戶配置目錄
[[email protected] vusers_config]# vim /etc/vsftpd/vusers_config/tom           創建授權用戶tom
anon_upload_enable=YES                                                          tom用戶擁有匿名創建的的權限
[[email protected] vusers_config]# vim /etc/vsftpd/vusers_config/jerry         jerry用戶

[[email protected] security]# systemctl restart vsftpd.service       重啟服務生效配置
9、登錄測試

tom 

[[email protected] ~]# 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

[[email protected] ~]# 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
[[email protected] ~]# yum -y install nfs-utils    安裝nfs 程序

[[email protected] ~]# mkdir -pv /data/mysql    創建nfs主機的共享目錄

[[email protected] ~]# vim /etc/exports              編輯主配置文件

/data/mysql 192.168.124.5(rw) 192.168.124.0/16(ro)   給訪問主機授權

[[email protected] ~]# systemctl start nfs.service    啟動服務 

ss -tnl
:::2049  查看監聽默認端口是否存在

客戶端:
192.168.124.5
[[email protected] /]# mount -t nfs -o nfsvers=3,vers=3 192.168.124.3:/data/mysql /mnt
或
[[email protected] /]# mount -t nfs 192.168.124.3:/data/mysql /mnt   將ftp掛載至測試主機的mnt目錄

[[email protected] /]# cd /mnt              打開mnt目錄
[[email protected] mnt]# touch test      創建一個空文件
[[email protected] mnt]# ls                    文件存在
test
6、賬戶同步所擁有的權限也不同
/data/mysql 192.168.124.5(rw,anonuid=1001,anongid=1001) 192.168.0.0/16(ro)
7、用戶映射:
服務器
[[email protected] /]# vim /etc/exports
/data/mysql 192.168.124.5(rw,*.aaaa;) 192.168.0.0/16(ro)

客戶端
[[email protected] mnt]# hsotname aaaa
[[email protected] ~]# mount -t nfs 192.168.124.3:/data/mysql /mnt
[[email protected] ~]# cd /mnt
[[email protected] mnt]# ls
test
8、管理員用戶
[[email protected] /]# 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,擁有讀、寫權限、其他用戶不可見

 

[[email protected] ~]# yum -y install samba

創建用戶
[[email protected] ~]# useradd centos
[[email protected] ~]# useradd gentoo
[[email protected] ~]# useradd spy

創建組
[[email protected] ~]# groupadd user

centos、gentoo 加入 user組
[[email protected] ~]# usermod -G user centos
[[email protected] ~]# usermod -G user gentoo

加入samba 用戶組
[[email protected] ~]# smbpasswd -a centos
New SMB password: 123456
Retype new SMB password: 123456
Added user centos.
[[email protected] ~]# smbpasswd -a gentoo
New SMB password:
Retype new SMB password:
Added user gentoo.
[[email protected] ~]# smbpasswd -a spy
New SMB password:
Retype new SMB password:
Added user spy.

創建共享目錄
[[email protected] ~]# mkdir -pv /data/up

設置文件共享屬組的組
[[email protected] ~]# setfacl -m g:user:rwx /data/up
[[email protected] ~]# 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

編輯全局配置文件
[[email protected] ~]# vim /etc/samba/smb.conf

[up]
        comment = up
        path = /data/up
        valid users = @user  訪問白名單
        write list = @user
        publice = no
        browseable = no
        printable = no

啟動服務
[[email protected] ~]# systemctl start nmb.service smb.service

客戶端測試:
訪問成功
[[email protected] ~]# 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
訪問成功
[[email protected] ~]# 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

訪問失敗
[[email protected] ~]# smbclient //192.168.199.124/up -U spy
Enter SAMBA\spy's password: 
tree connect failed: NT_STATUS_ACCESS_DENIED
子授權文件
創建目錄
[[email protected] ~]# mkdir /data/spy
設置目錄權限
[[email protected] data]# chmod 775 spy

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

[[email protected] data]# vim /etc/samba/spy.smb.conf 

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

主配置文件添加子配置路徑
[[email protected] data]# vim /etc/samba/smb.conf

[global]
        include = /etc/samba/%U.smb.conf
  1. include 只能訪問子配置設置的共享文件,不能訪問samba主配置文件的文件。
  2. config file 既能訪問子配置文件也能訪問samba的主配置文件。
重啟服務客戶端測試

 [[email protected] data]# systemctl restart nmb.service smb.service

客戶端測試:
[[email protected] ~]# 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.npownk.tw/124657

聯系我們

400-080-6560

在線咨詢

工作時間:周一至周五,9:30-18:30,節假日同時也值班

QR code
安徽十一选五分布走势