在开始之前,先声明一下,内容大部分来于Hiweed的大作《ubuntu server最佳方案》,我只是在学习的过程中进行了整理和补充。毕竟别人的东西不可能让自己完全的明白。
这里要实现的是家目录的共享,服务器运行Ubuntu server,桌面系统有ubuntu-desktop和windows。当用户在桌面系统登录时,能够自动挂载服务器的家目录/home,用户所做的操作实际上是基于服务器的家目录上的。
服务器IP:192.168.91.162
客户端IP:192.168.91.161(ubuntu),192.168.91.163(windows)
为了实现这样的方案,服务器需要安装下面软件:
sudo apt-get install nfs-kernel-server nfs-common portmap nis samba
其中
nfs-kernel-server:linux的NFS服务器
nfs-common:NFS通用程序
portmap:RPC端口映射程序
nis:用来同步用户信息
samba:Linux的samba服务器,实现linux与windows的交互
(1)服务器/etc/hosts配置
在这个文件中,有这么两行127.0.0.1和127.0.1.1,请把127.0.1.1换成服务器的真是IP,否则可能导致NIS无法启动。此外,把所有客户端的主机名和IP加到文件中(可能的话),尤其是linux客户端,windows可以不必。
(2)portmap的安全设置
在/etc/hosts.deny中加入
portmap mountd nfsd statd lockd rquotad : ALL
在/etc/hosts.allow中加入服务器和客户端(ubuntu-desktop)的IP
portmap mountd nfsd statd lockd rquotad :192.168.91.162 192.168.91.161 192.168.91.163
protmap ypserv ypbind : 192.168.91.162 192.168.91.161 192.168.91.163
(3)NIS服务器配置
把/etc/default/nis文件中的NISSERVER一行修改为NISSERVER=master
在/etc/yp.conf中添加一行信息:
domain ldh.com server 192.168.91.162
注:在安装NIS的时候会要求输入一个域名,服务器和客户端是一样的域名,否则NIS无法通信。
在/etc/ypserv.securenets中将0.0.0.0那行注释掉,然后把NIS客户端的IP添加进去:
host 192.168.91.161
注:NIS只负责linux之间的通信,跟windows没有关系。
修改/etc/netgroup,建立一个组,把NIS客户端加入:
nfsclients (ldh-desktop, , )(client, , )...
组的名称随便取,括号中为客户端信息:主机名、用户、域名,用户和域名貌似可以不写。
然后,初始化数据库
sudo /usr/lib/yp/ypinit -m
最后重启NIS服务
sudo /etc/init.d/nis restart
如果NIS无法启动提示binding to YP server...fail,请确认在/etc/hosts是否正确填写了服务器的IP。
另外,如果以后新建用户,删除、修改用户信息和密码,以及修改主机名之类的,都要重建YP数据库
sudo make -C /var/yp
(4)用/etc/exports配置共享目录
在文件中加入
/home
可以将*化成网段如192.168.91.0/24或者主机名ldh-desktop
no_subtree_check:不检查子目录,提高传输速度
insecure:使用大于1023的端口
最后重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart
(5)NFS客户端配置
安装客户端软件:
sudo apt-get install nfs-common portmap nis
NIS的域名要和服务器的域名一致,如果不一致,可以用sudo dpkg-reconfigure nis更正
在/etc/hosts.deny加一行portmap:ALL
在/etc/hosts.allow加一行,把NIS服务器IP加上,portmap:192.168.91.162
在/etc/passwd最后加一行
+::::::
这行的意思是如果本地有登录的用户的信息,就直接用本地用户名登录,否则的话就通过NIS来获取用户账号信息。
在/etc/group最后加一行
+:::
在/etc/shadow最后加一行
+::::::::
修改/etc/yp.conf,加入一行
ypserver 192.168.91.162
最后重启NIS。
修改/etc/fstab,添加一行
192.168.91.162:/home /home nfs auto,rsize=8192,wsize=8192,timeo=14.intr 0 0
让客户端开机自动挂载服务器的/home目录。
最后测试一下与服务器的通信情况:
yptest或者ypwhich或者ypcat
如果没有问题,那么到此linux客户端和linux服务器之间的沟通就没有问题了。
(6)建立用户信息
在/etc/skel下面建立一个文件夹personal
sudo chmod 700 -R personal
创建用户帐户,如ldh
将创建的用户帐户加入到samba中
sudo smbpasswd -a ldh
这里要求输入的密码最好和在系统创建该用户输入的密码一样
配置/etc/samba/smb.conf
在最后加入
[home]
guest ok=no
read only=yes
browseable=no 这样看不到别人的家目录
browseable=yes 这样可以通过home看到别人的家目录
注意:这里不要画蛇添足的设置path=/home,否则的话,失败。我也不知道为什么。
然后重启启动samba服务就行了
在windows客户端可以用用户名映射网络驱动器。
设置光驱共享
确认samba服务器的/etc/fstab中有这么一行
/dev/scd0
然后修改/etc/samba/smb.conf加入
[cdrom]
read only=yes
locking=no
patn=/cdrom
guest ok=no
preexec=/bin/mount /cdrom
posrexec=/bin/umount /cdrom
同样可以映射光驱。
(7)小组共享
有时候可能要为某个小组的成员创建一个单独的共享目录,只允许小组成员访问。
先创建组sudo addgroup tech
将用户加入小组
sudo adduser ldh tech
创建共享目录
sudo mkdir /home/tech
sudo chgrp tech /home/tech/
sudo chmod 770 /home/tech/ 允许小组成员读写
修改smb.conf
[tech]
comment=technology department
path=/home/tech
read only=no
guest ok=no
browseable=yes
create mask=0660
create directory=0770
valid users=+tech
froce group=tech
重启samba服务即可。
(8)最后
说道NFS,其实相当于windows的活动目录。
说道samba,其默认的验证级别是user,在刚上上面所做的都没有在windows创建一个和samba一模一样的用户和密码。
如果在smb.conf有这么一个共享目录
[global]
security=user
[ftp]
path=/ftp
valid users=ldh
public-no
这样的话,则必须要求linux服务器要有ldh这个用户,samba中也必须有这个用户,最后windows系统中还必须有这个用户,用户名和密码必须和samba中的一模一样才可以。如果windows客户端很多呢?
所以,个人觉得这点samba还有待改进。