柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

Centos6.4 samba服务器搭建

像NFS,samba服务都是大家所熟知的文件共享服务,nfs也可以实现linux与windows之间的文件共享,但是显然samba做这件事更合适。我们samba服务器主要用于办公的文件共享,这里也记录一下。

一、samba服务的介绍

        在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,而Windows系统均包括这个协议的客户软件,因而这个协议在局域网系统中影响很大。

       随着Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。因此,为了让Windows和Unix计算机相集成,最好的办法即是在Unix中安装支持SMB/CIFS协议的软件,这样Windows客户就不需要更改设置,就能如同使用Windows NT服务器一样,使用Unix计算机上的资源了。

        与其他标准的TCP/IP协议不同,SMB协议是一种复杂的协议,因为随着Windows计算机的开发,越来越多的功能被加入到协议中去了,很难区分哪些概念和功能应该属于Windows操作系统本身,哪些概念应该属于SMB 协议。其他网络协议由于是先有协议,实现相关的软件,因此结构上就清晰简洁一些,而SMB协议一直是与Microsoft 的操作系统混在一起进行开发的,因此协议中就包含了大量的Windows系统中的概念。

        samba服务器既可以用于windows与linux之间的资源共享,也可以用于linux与linux之间的资源共享。samba是一个工具套件,由服务器及客户端程序构成。

         samba运行两个服务,一个是smb,一个是nmb;smb是samba的核心启动服务,主要负责建立linux samba服务器与samba客户机之间的通信,验证用户身份并提供对文件和打印系统的访问,只有smb服务启动,才能实现文件的共享,监听139/TCP/UDP和445/TCP/UDP端口。nmb服务负责解析,类似于DNS功能, nmb可以把linux系统共享的工作组名称与其IP对应起来,如果nmb服务没有启动,就只能通过IP来访问共享文件,监听137/ucp和138/udp端口。


博文来自:www.51niux.com

二、安装samba服务

# yum install samba samba-client samba-swat  #直接yum安装便可以


# rpm -qa|grep samba   #安装包说明

samba-winbind-clients-3.6.23-36.el6_8.x86_64   #这个包只含有客户端工具(wbinfo,ntlm_auth)

samba-winbind-3.6.23-36.el6_8.x86_64  #winbind是samba作为windows域成员(AD)的一个中介,包里包含了做映射的服务库(NSS library)和客户端工具

samba-3.6.23-36.el6_8.x86_64 #服务器软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,开机默认选项

samba-client-3.6.23-36.el6_8.x86_64 #客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集。

samba-common-3.6.23-36.el6_8.x86_64  #主要提供samba服务器的设置文件与设置文件语法检验程序testparm

samba-swat-3.6.23-36.el6_8.x86_64 #基于https协议的samba服务器web配置界面


#/etc/init.d/smb start  #启动smb服务

# /etc/init.d/nmb start  #启动nmb服务(这个服务启动后,我们windows就可以通过网络发现直接发现这台机器,不启动的话就发现不到,看需求,我们一般都不启动,直接通过IP访问的形式来访问)


# netstat  -lntup|egrep 'smb|nmb'  #查看服务都已经启动(如果没必要的话,就关闭防火墙和selinux)

tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      2314/smbd           

tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      2314/smbd           

tcp        0      0 :::445                      :::*                        LISTEN      2314/smbd           

tcp        0      0 :::139                      :::*                        LISTEN      2314/smbd           

udp        0      0 192.168.1.255:137           0.0.0.0:*                               2327/nmbd           

udp        0      0 192.168.1.111:137           0.0.0.0:*                               2327/nmbd           

udp        0      0 0.0.0.0:137                 0.0.0.0:*                               2327/nmbd           

udp        0      0 192.168.1.255:138           0.0.0.0:*                               2327/nmbd           

udp        0      0 192.168.1.111:138           0.0.0.0:*                               2327/nmbd           

udp        0      0 0.0.0.0:138                 0.0.0.0:*                               2327/nmbd 


博文来自:www.51niux.com

三、samba配置文件详解

samba的配置文件为/etc/samba/smb.conf,文件分为两大部分,第一部分为全局配置,第二部分是局部配置。

# vi /etc/samba/smb.conf   #配置文件中的#开头的是纯注释部分,;开头的是可以去掉注释的选项

[global]  

workgroup = MYGROUP  #samba的工作组

server string = Samba Server Version %v  #samba的说明信息

netbios name = MYSERVER #默认是;注释状态,是你被网络发现时候显示的主机名称。如我们改成:netbios name = nidaye

blob.png

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 #后面可以跟接口或IP地址,如果服务器不想用默认的IP地址时或想用多个IP地址时设置此项。

;       hosts allow = 127. 192.168.12. 192.168.13. #默认注释,表示允许所有主机访问。开启后可以设置IP或者IP段,多个参数空格隔开,IP端上面已经举例了,192.168.12.就代表的192.168.12这个段。

log file = /var/log/samba/log.%m #samba日志文件存放的位置,以及名称,这里是以客户端主机名为log日志的后缀

max log size = 50 #指定日志文件的大小为50KB,0代表无限制

# ----------------------- Standalone Server Options ------------------------

security = user  #samba共享安全级别为用户级别,主要用的也是这个级别。

设置Samba共享安全级别:

share: 共享级别,服务器不对客户机进行身份验证。

user: 用户级别,服务器对客户机进行身份验证。

server: 服务器级别,Samba服务器必须通过另一台服务器对客户机进行身份验证。如果设置为此值,需另加一行:password Server = IP才行。

domain: 域级别,Samba服务器要通过windows server的域控制器对客户机进行身份验证,同样,如果设置为此值,需另加一行:password Server = IP才行。

passdb backend = tdbsam #指定samba服务器用户后台为tdbsam,默认便可。

三种方式:

1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。 

2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。

3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置"passdb backend = ldapsam:ldap://LDAP Server"

# ----------------------- Domain Members Options ------------------------ #这下面的参数是关于域的,这里不说明

# ----------------------- Domain Controller Options ------------------------#这下面的参数是关于域的,这里选择默认

# ----------------------- Browser Control Options ----------------------------#浏览器控制选项一般也不设置

;       local master = no  #如果不想使您的Samba服务器成为局域网内部的主浏览服务器,将此选项设为no

;       os level = 33 # OS Level决定了该服务器在局域网内的访问优先权。设定 samba server的os level. os level从 0 到 255 . winNT的os level为33, win95/98的os level 是 1 .若要拿samba server 当LMB或DMB则它的os level至少要大于NT的33以上。

;       preferred master = yes #Preferred Master使Samba在启动时选择一个本地浏览器并给它获得选择的较高的机会。设定 samba server 是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no,(同一网段内不可有两个PDC,他们会每5分钟抢主控权一次)

#----------------------------- Name Resolution ------------------------------- #选择默认不更改

;       wins support = yes  #是否支持WINS服务器,Samba可以成为WINS服务器,也可以成为WINS客户端,但不能两者兼得。

;       wins server = w.x.y.z #设定samba server 是否要使用别台主机提供的WINS服务,通常无特殊原因设为no。除非所处网络上有一台主机提供WINS服务才要设yes,其他 wins support 和 wins server例:wins server = 192.168.0.1 表示samba server要使用192.168.0.1提供的WINS服务

;       wins proxy = yes #表示一个非WINS用户通知Samba响应名称解析,本身不为客户端提供查询。

;       dns proxy = yes #表示一个非WINS用户通知Samba响应名称解析,本身不为客户端提供查询。

# --------------------------- Printing Options ----------------------------- #打印选项,这里选择不修改

load printers = yes  #允许打印机共享,并加载打印机。

cups options = raw #打印机的使用方式

;       printcap name = /etc/printcap  #打印机配置文件位置

;       printcap name = lpstat 

;       printing = cups #设置打印系统类型,一般默认。只有在打印系统不是标准系统时才指定。

# --------------------------- Filesystem Options --------------------------- #下面的参数不修改

#============================ Share Definitions ==============================

[homes] #局部配置,【】里面是段名,也就是我们的共享名

comment = Home Directories #共享的说明

browseable = no #不可以网页浏览

writable = yes  #共享文件夹可写

;       valid users = %S #允许访问该共享的用户,多用户用逗号分开,指定组时要在组名前加@。


[printers]  

comment = All Printers

path = /var/spool/samba 

browseable = no

guest ok = no  #不许用guest用户访问

writable = no  #文件夹不可写只能读

printable = yes #可以打印


还记得前面%m代表客户端的主机名吗?这是samba定义的宏,宏用百分号后面跟一个字符表示,在具体运作的时候就用实际的参数来代替。下面是samba的宏,灵活地应用宏可以很方便地管理比较复杂的网络。

%S  当前服务器名。

%P  当前服务器的根目录。

%u  当前服务器的用户名。

%g  当前用户所在的主工作组。

%U  当前对话的用户名。

%G 当前对话的用户我主工作组。

%H 当前服务器用户的home目录。

%v  Samba服务器的版本号。

%h  运行Samba服务器的主机名。

%m 客户机的NetBios名。

%L  服务器的NetBios名。

%M 客户机的主机名。

%N  NIS服务器名。

%p  NIS服务器的Home目录。

%R  所采用的服务器等级。

%d  当前服务进程的ID。

%a  客户机和结构。

%I   客户机的IP。

%T  当前日期和时间。


博文来自:www.51niux.com

四、samba服务器配置实例

配置文件我们把最下面关于【home】共享的设置用;分号注释掉,共享/home下面的用户不是我们的目的也不安全。

# vi /etc/samba/smb.conf  #在配置文件下面加入下面这段

[smb_test1]

comment = samba test1

path = /samba/test1

browseable = yes

printable yes

hide dot ftles = yes

public = no

guest ok = no

read only = yes

;writable = yes 

vaild users = test,hadoop

invalid users = zabbix,@zabbix

write list = hadoop

create mask = 0600

directory mask = 0700

下面为配置文件的解释信息:

comment---------注释说明

path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对

browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取

printable-------是yes/否no允许打印

hide dot ftles--是yes/否no隐藏隐藏文件

public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准

writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only

vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)

invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)

read list-------设定此名单内的成员为只读(用户名/@组名)

write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)

create mask-----建立文件时所给的权限

directory mask--建立目录时所给的权限

force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)

force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)

allow hosts-----设定只有此网段/IP的用户才能访问共享资源

allwo hosts = 网段 except IP

deny hosts------设定只有此网段/IP的用户不能访问共享资源

allow hosts=本网段指定IP指定IP

deny hosts=指定IP本网段指定IP

另外:还有三个字符集的配置,我没有用上,在别的博客里面看到有写,就在这里粘贴一下,记录一下。

dos charset = GB2312 ←将Windows 客户端的文字编码设置为简体中文 GB2312

unix charset =GB2312 ←指定Samba所在的CentOS服务端新建文件或目录时的编码为 GB2312

display charset= GB2312 ←指定使用SWAT(一种通过浏览器控制Samba的工具)时页面的默认文字编码


好了现在我们的环境有test,test2,test3,test4,hadoop,zabbix这六个用户,test2,test3,zabbix都属于zabbix组。

然后用smbpasswd -a 用户名,将这五个用户都加到samba中,samba的用户定义就是系统中必须存在此用户。

我拿test举例演示一下:

# smbpasswd -a test

New SMB password:

Retype new SMB password:


好了那么让我们现在测试一下,windows尽力就不贴图了:

# service smb reload #重新加载smb配置文件,如果重启没关系的话就restart

# service nmb restart


windows的测试:

第一种:可以直接网络邻居发现,因为我们没有把网络邻居发现去掉。

第二种:打开我的电脑在最上方输入:\\IP地址,然后出现我们共享的目录,输入用户名密码登录

第三种:我的电脑=》映射网络驱动器=》选择驱动器盘符号然后文件夹位置输入我们的smb连接\\192.168.1.111/smb_test1=》完成


Linux下的测试:

# mount //192.168.1.111/smb_test1 /mnt/ -o username=test2%654321   #username=用户名,%后面跟的就是密码

mount error(13): Permission denied

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

# mount //192.168.1.111/smb_test1 /mnt/ -o username=zabbix%654321

mount error(13): Permission denied

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

# mount //192.168.1.111/smb_test1 /mnt/ -o username=test3%654321      

mount error(13): Permission denied

Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

# mount //192.168.1.111/smb_test1 /mnt/ -o username=hadoop%123456

# mount //192.168.1.111/smb_test1 /opt/ -o username=test4%654321

# df -h  #通过df -h查看发现有两个挂载,说明我们有两个用户挂载成功了。分别为hadoop用户和test4用户

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3              18G   13G  3.9G  77% /

tmpfs                 495M  4.0K  495M   1% /dev/shm

/dev/sda1             190M   48M  133M  27% /boot

//192.168.1.111/smb_test1

                       47G   13G   33G  28% /mnt

//192.168.1.111/smb_test1

                       47G   13G   33G  28% /opt

好了根据上面的结果说明我们的hadoop用户和test4用户都测试OK了。这里要提一点,我们共享的这个 /samba/test1默认是root用户的属主和属组,755权限。这样的话,我们其他用户就算挂在了samba也不能在根目录创建目录,因为没有权限。那么如何解决呢?

根据自己的需求:

  1. 在samba服务器: chmod 777 /samba/test1

  2. 不授权777,但是在/samba/test1创建目录然后对用户和用户组进行chown授权。

我这里选择了第一种方法,所以上面我默认是只读模式,但是呢又给特别的用户或者组授予了写权限,结果如何,我们现在/mnt是hadoop用户挂载应该具有写权限,/opt用户是test4用户挂载只拥有只读权限,来看下测试结果。

# cd /mnt/

# mkdir hadoop

# echo 'hadoop ok' >hadoop/testOK

# cat /mnt/hadoop/test  #hadoop用户测试OK

hadoop ok

# cd /opt/

# touch test4  #test4用户创建目录失败

touch: cannot touch `test4': Permission denied

注:在共享目录是777权限的情况下,;writable = yes也是放开的,只要能登录都可以在共享目录下面进行写操作的,如果你只想大部分用户只看不写得话,可以参考下我的配置。

好的,到此我们上述的测试,我们samba的搭建以及共享已经完成。


博文来自:www.51niux.com

五、SWAT工具使用

        SWAT 是通过浏览器对 Samba 进行管理的工具之一。通过 SWAT ,可以在 Samba 允许访问范围内的客户端,用浏览器对服务端的 Samba 进行控制。在线文档的阅览、smb.conf 的确认和编辑,以及密码的变更、服务的重启等等都可以通过 SWAT 来完成,它的直观让 Samba 变得温和化,对那些不喜欢文本界面管理服务器的朋友来说,是一个强大的工具。

安装swat:

# yum install -y samba-swat

配置swat:

# vi /etc/xinetd.d/swat 

disable         = no #从默认的yes改为no

only_from       = 192.168.1.0 #将自己的网段加上,允许那些网段访问

启动服务:

# /etc/init.d/xinetd restart

通过url页面访问:http://samba服务器的ip:901  #输入root的用户名密码登录

blob.png

blob.png

好了swat大家如果有兴趣可以自行摸索。


六、samba的常用命令

关于samba的命令还是有一些的:smbcacls    smbcontrol  smbencrypt  smbmount   smbprint    smbstatus   smbtree
smbclient   smbcquotas  smbmnt    smbpasswd   smbspool    smbtar      smbumount smbd nmbd   mount

这里就说一些常用的就得了,samba毕竟更多的是公司内部用,我觉得没必要太深究。

服务器端常用命令:

第一个命令:查看服务器的哪个共享目录被哪些IP然后是什么用户在访问?

#smbstatus  #默认是-d选项,如果想就看有哪些ip连接,就加-b

Samba version 3.6.23-36.el6_8

PID     Username      Group         Machine                        

-------------------------------------------------------------------

3358      hadoop        hadoop        192.168.1.108 (192.168.1.108)

3292      hadoop        hadoop        192.168.1.112 (192.168.1.112)


Service      pid     machine       Connected at

-------------------------------------------------------

smb_test1    3292   192.168.1.112  Sun Nov  6 16:55:31 2016

IPC$         3358   192.168.1.108  Sun Nov  6 17:04:26 2016

smb_test1    3358   192.168.1.108  Sun Nov  6 17:04:26 2016

IPC$         3292   192.168.1.112  Sun Nov  6 16:55:31 2016

选项:

-b :指定只输出简短的内容。 
-d :指定以详细方式输出内容。 
-L :让smbstatus只列出/var目录中的被锁定项。 
-p :用这个参数来列出smbd进程的列表然后退出。对脚编程来说很有用。 
-S :让smbstatus只列出共享资源项。 
-s configuration file :用这个参数指定一个配置文件。当然在编译时已做好了默认的配置文件。文件中包含了服务需要的详细配置信息。 
-u username :用这个参数来查看只与username用户对应的信息。


第二个命令:smbpasswd  #samba用户的增删等操作

语法:smbpasswd(选项)(参数) #参数就是你要操作的用户名

选项:

-a:向smbpasswd文件中添加用户;如果存在此用户,就变为了修改用户密码。

-c:指定samba的配置文件;

 -x:从smbpasswd文件中删除用户; 

-d:在smbpasswd文件中禁用指定的用户;

 -e:在smbpasswd文件中激活指定的用户;

 -n:将指定的用户的密码置空


第三个命令:samba用户查看命令:pdbedit,这个命令跟上面命令的用途还是有很多相同之处。这里就说一个用户查看用法,其他的可以help查看。

# pdbedit -L      #查看samba用户当前已经添加了哪些用户

test:2531:

zabbix:2530:

test3:2533:

hadoop:2527:

test2:2532:

test4:2534:

nagios:2529:


客户端的命令:

第一个命令服务端和客户端都可以用,我们在搭建完samba服务之后总要测试一下是否能连接成功吧?smbclient

smbclient主要是用于linux访问windows的共享文件,或者是访问linux的samba服务器。说白点就是个客户端工具。

语法:

smbclient [网络资源][密码][-EhLN][-B<IP地址>][-d<排错层级>][-i<范围>][-I<IP地址>][-l<记录文件>][-M<NetBIOS名称>][-n<NetBIOS名称>][-O<连接槽选项>][-p<TCP连接端口>][-R<名称解析顺序>][-s<目录>][-t<服务器字码>][-T<tar选项>][-U<用户名称>][-W<工作群组>]

参数:
[网络资源] [网络资源]的格式为//服务器名称/资源分享名称。
[密码] 输入存取网络资源所需的密码。

-B<IP地址> 传送广播数据包时所用的IP地址。
-d<排错层级> 指定记录文件所记载事件的详细程度。
-E 将信息送到标准错误输出设备。
-h 显示帮助。
-i<范围> 设置NetBIOS名称范围。
-I<IP地址> 指定服务器的IP地址。
-l<记录文件> 指定记录文件的名称。
-L 显示服务器端所分享出来的所有资源。
-M<NetBIOS名称> 可利用WinPopup协议,将信息送给选项中所指定的主机。
-n<NetBIOS名称> 指定用户端所要使用的NetBIOS名称。
-N 不用询问密码。
-O<连接槽选项> 设置用户端TCP连接槽的选项。
-p<TCP连接端口> 指定服务器端TCP连接端口编号。
-R<名称解析顺序> 设置NetBIOS名称解析的顺序。
-s<目录> 指定smb.conf所在的目录。
-t<服务器字码> 设置用何种字符码来解析服务器端的文件名称。
-T<tar选项> 备份服务器端分享的全部文件,并打包成tar格式的文件。
-U<用户名称> 指定用户名称。
-W<工作群组> 指定工作群组名称。

别看上面一大坨,但是我们真用不了那么多,一般 就做个测试而已,下面十几个常用用法:

# smbclient -L //192.168.1.111  -U hadoop%123456 #-L 显示共享资源 指定samba服务器 然后-U 用户名%加密码,当然不加%后面写密码,你要不将密码存在历史记录里面也可以,不加%密码就可以了。通过这个命令,我们来测试一下要分享的客户端是否能够访问我们的共享目录。

# smbclient -c "ls" //192.168.1.111/smb_test1  -U hadoop%123456 #我们可以通过-c来指定我们要输入的命令,然后制定共享路径然后加上用户名和密码,这个目录的意思就是查看共享目录下的文件与目录

# smbclient //192.168.1.111/smb_test1  -U hadoop  #第三个命令就不常用了,就是通过连接到samba服务然后像ftp那样交互

Enter hadoop's password: 

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-36.el6_8]

smb: \>  

blob.png

命令说明:

?或help [command] 提供关于帮助或某个命令的帮助 
![shell command]   执行所用的SHELL命令,或让用户进入 SHELL提示符 
cd [目录]  切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录 
lcd [目录]  切换到客户端指定的目录; 
dir 或ls   列出当前目录下的文件; 
exit 或quit    退出smbclient 
get file1  file2 从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略 
mget file1 file2 file3  filen 从服务器上下载多个文件; 
md或mkdir 目录 在服务器上创建目录 
rd或rmdir 目录 删除服务器上的目录 
put file1 [file2] 向服务器上传一个文件file1,传到服务器上改名为file2; 
mput file1 file2 filen 向服务器上传多个文件 


第二个命令:挂载命令

上面测试的时候已经讲了一种mount挂载,现在用另一个挂载,smbmount这个命令已经不用。smbfs协议改为cifs,现在cifs是官方正式协议。

# mount.cifs  //192.168.1.111/smb_test1 /tmp -o username=hadoop%123456 #这条命令的合适就是mount.cifs samba服务器的共享目录 本机的挂载点 -o username=用户名%密码


至此,samba服务器记录就暂时告一段落,日后再补充!

作者:忙碌的柴少 分类:网络文件共享 浏览:2398 评论:0
留言列表
发表评论
来宾的头像