
samba服务器的功能
在一些中小型网络,或者企业的内部网中,利用Linux建立是一个很好的解决方案。
针对企业内部网中的绝大部分客户机采用的情况,我们可以通过使用Samba来实现功能。
Samba是在Linux及Unix上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。
这里我们只介绍服务器程序。
我们首先介绍一些的情况。
是建立在之上的应用协议,是基于TCP138、139两个端口的服务。
NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件\\\/打印服务系统。
这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。
这个协议被用于Lan Manager和服务器系统中,实现不同计算机之间共享打印机和文件等。
因此,为了让和Unix\\\/Linux计算机相集成,最好的办法就是在Unix\\\/Linux计算机中安装支持的软件。
这样使用Windows的客户端不需要更改设置,就能像使用Windows NT或Windows 服务器一样,使用Unix\\\/Linux计算机上的共享资源了。
Samba使SMB协议运行在上,并且使用Windows的NetBEUI协议让Unix\\\/Linux服务器可以在Windows的网络邻居上被访问到。
Samba的服务器程序可以实现以下主要功能: ◆ 文件及打印共享; ◆ 计算机名与IP的解悉; ◆ WINS服务的支持; ◆ 用户权限设置(如果配合Linux 的Quota还可以实现用户磁盘空间配额)。
linux中 samba 中valid users = %S 的%s 是什么意思
-先pingsamba服务器能ping通直接linux smbpasswd 用户名即 centos 5.5 samba服务器安装总结 先介绍基本内容windowslinux共享主要利用samba服务器所谓SMB指server message block 缩写Linux os\\\/2 windows系统windows for workgroup 等计算机间提供文件共享打印机服务域名解析验证授权及浏览等服务网络通信协议smb主要c\\\/s结构 SAMBA所功能主要许软件包 smbd samba主要程序处理客户端连接处理文件授权用户名称工作 nmbd netbios域名服务器,负责帮助客户端找服务器位置进行浏览工作管理域目前些功能已经samba testprns 测试服务器访问打印程序 testparm 测试samba配置确性 smbclient Unix主机运行SMB客户端程序 smb.conf samba主要配置文件 smbprint 批处理运行文件允许unix主机使用smbclient打印工作送给SMB 服务器 1.yum install samba\\\/\\\/安装rpm软件包自解决依赖问题,想查询rpm -qa|grep samba即 2.要单独装rpm -ivh samba-xx.xx..rpm即 3.启\\\/etc\\\/rc.d\\\/init.d\\\/smb start或者service smb start两种任选其关闭stop即 4.查看samba服务器状态用\\\/etc\\\/rc.d\\\/init.d\\\/smb status smbd nmdb 运行说明已经启 5.要机自运行ntsysv 选择smb打星号即,chkconfig --level 3 smb on 配置SAMBA服务器 设置\\\/etc\\\/services文件内容 vi \\\/etc\\\/services 查看netbios 前面没#号处共6netbios 设置\\\/etc\\\/samba\\\/lmhost文件 文件提供主机名ip址应关系 ip址 主机别名(NETBIOS名称) 127.0.0.1 localhost xxx.xxx.xxx.xxx centos1 xxx.xxx.xxx.xxx centos2 修改\\\/etc\\\/services,\\\/etc\\\/samba\\\/lmhost接设置主要配置文件 \\\/etc\\\/samba\\\/smb.conf文件参考默认配置 [global] workgroup = stationx.example.com netbios name = centos server string = Samba Server printcap name = \\\/etc\\\/printcap load printers = yes cups options = raw log file = \\\/var\\\/log\\\/samba\\\/%m.log max log size = 50 [homes] comment = Home Directories\\\/\\\/主目录注释 browseable = no \\\/\\\/否允许其用户浏览目录建议禁止 writable = yes\\\/\\\/否允许写入主目录 valid users =%S\\\/\\\/允许登录用户%S表示目录登录用户 create mode = 0664\\\/\\\/新建文件默认权限 directory mode = 0775\\\/\\\/新建目录默认权限 [netlogon] path = \\\/usr\\\/local\\\/samba\\\/lib\\\/netlogon \\\/\\\/实际访问本机路径 guest ok = yes \\\/\\\/连接候否需密码 writable = no share modes = no [profiles] path = \\\/usr\\\/local\\\/samba\\\/profiles browseable = no guest ok = yes [printers] comment = All Printers path = \\\/var\\\/spool\\\/samba browseable = no public = yes guest ok = no writable = no printable = yes [tmp] path = \\\/tmp read only = no public = yes [public] comment =Public stuff path =\\\/home\\\/samba public = yes writable = yes printable = no write list = @staff 修改smb.conf拷贝\\\/etc\\\/samba\\\/ testparm测试语否确 现loaded services file OK即 \\\/etc\\\/rc.d\\\/init.d\\\/smb restart 客户端\\\\\\\\ip址现输入用户名密码能用linux实际密码登录samba密码linux用户密码利用mksmbpasswd.sh建立 cat \\\/etc\\\/passwd|mksmbpasswd.sh>\\\/etc\\\/samba\\\/smbpasswd ls -l \\\/etc\\\/samba\\\/smbpasswd即 smbpasswd 用户名即 用SWAT网页管理 本文自 志者事竟! 博客请务必保留处
linux如何塔建samba别名共享
1. 安装Ubuntu。
2. 安装gcc一sudoapt-get install build-essential安装完了可以执行gcc--version的命令来版本,输出如下:gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)Copyright(C)2007FreeSoftwareFoundation,Inc.编译则使用Ubuntu gcc命令。
要往下学习就得熟悉gcc命令的用法。
Ubuntugcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。
一. 常用编译命令选项假设源程序文件名为test.c。
1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理、汇编、编译并链接形成可执行文件。
这里未指定输出文件,默认输出为a.out。
2. 选项 -o用法:#gcc test.c -otest作用:将test.c预处理、汇编、编译并链接形成可执行文件test。
-o选项用来指定输出文件的文件名。
3. 选项 -E用法:#gcc -E test.c -otest.i作用:将test.c预处理输出test.i文件。
4. 选项 -S用法:#gcc -S test.i作用:将预处理输出文件test.i汇编成test.s文件。
5. 选项 -c用法:#gcc -c test.s作用:将汇编输出文件test.s编译输出test.o文件。
6. 无选项链接用法:#gcc test.o -otest作用:将编译输出文件test.o链接成最终可执行文件test。
7. 选项-O用法:#gcc -O1 test.c -otest作用:使用编译优化级别1编译程序。
级别为1~3,级别越大优化效果越好,但编译时间越长。
二. Ubuntu gcc多源文件的编译方法如果有多个源文件,基本上有两种编译方法:[假设有两个源文件为test.c和testfun.c]1. 多个文件一起编译用法:#gcc testfun.ctest.c -o test作用:将testfun.c和test.c分别编译后链接成test可执行文件。
2. 分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:#gcc -ctestfun.c \\\/\\\/将testfun.c编译成testfun.o#gcc -ctest.c \\\/\\\/将test.c编译成test.o#gcc -otestfun.o test.o -o test \\\/\\\/将testfun.o和test.o链接成test以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。
3. 安装eclipsea) 安装配置java(eclipse需要)Ubuntu 在安装时,如同大部分Linux 发行版一样,都会同时安装 GNU 版本的 Java。
这个 Java 的实用程度太低,尤其对于开发人员来说,是没有太多用处的。
在 Ubuntu 下,安装 SUN Java 是一件很容易的事情。
第一步:sudoapt-get install sun-java6-jdk安装完毕之后,选择默认 java:sudo update-alternatives --config java然后配置环境变量:sudo vim \\\/etc\\\/environment在其中添加如下两行:(不同版本应不同,这里是java6)CLASSPATH=\\\/usr\\\/lib\\\/jvm\\\/java-6-sun\\\/libJAVA_HOME=\\\/usr\\\/lib\\\/jvm\\\/java-6-sun保存退出。
b) 安装 Eclipsesudo apt-getinstall eclipse-platformsudo apt-get install eclipse-pde虽然已经这时新安装的java 已经成为系统默认的 jvm,但是 Eclipse 并不会用 update-alternative 设置的 jvm 来启动自身,而使用的是以前的 GNU Java。
GNU Java 是 1.4.2 的实现,而且在性能上远不如 SUN 的实现。
为了让 Eclipse 利用 SUN Java 启动,我们还需要继续配置。
首先将 SUN Java 完完全全的设置为系统的默认 JDK:sudo update-java-alternatives -s java-6-sun然后编辑 JVM 配置文件:sudo vim \\\/etc\\\/jvm将文件中的\\\/usr\\\/lib\\\/jvm\\\/java-6-sun这一行填入到配置块的顶部。
由于 Eclipse 会忽略 Ubuntu 的通用 Java 设置(貌似一个 bug),我们需要继续编辑 Eclipse 的 java_home 文件:sudo vim \\\/etc\\\/eclipse\\\/java_home如同上面一样,将\\\/usr\\\/lib\\\/jvm\\\/java-6-sun这一行填入到文件的顶部。
c) 安装 Eclipse, c\\\/c++插件1、启动eclipse,2、选择Help->InstallNew Software...,3、选择Collaboration->MylynBridge: C\\\/C++ Development,安装,重启eclipse。
4、同上述2、3,选择ProgrammingLanguages->Eclipse C\\\/C++ Development,都选上吧,现在硬盘不贵的。
重启eclipse,试试吧,有tutorial的。
备注:有些版本还需要安装GTK+库,使用apt-getinstall libgtk2.0*可得到4. 安装g++方法一:sudo apt-get install make gcc g++再装上函数手册sudo apt-get install manpages-dev方法二:sudo apt-get install build-essential执行完后,完成了gcc,g++,make的安装。
build-essential 是一整套工具,gcc,libc等等5. 虚拟机下共享文件Windows和Linux间有很多文件共享的方式,这里我总结了一下。
假设你的Host计算机是Windows,Guest是Linux哈。
1.利用Samba这是我用得最多的方式备注:试了一下,比较麻烦2.在Linux下配置Apahce在Linux下配置Apahce,然后在Windows下通过www方式把Linux下的文件下载下来。
这种方式只能把Linux的文件传到Windows,不能把Windows的文件传到Linux.3.在Linux下配置Ftp用vsftp或者wu-ftp都可以,配置成上传权限的,然后Windows和Linux就可以相互共享文件了。
4.Windows下配置WWW服务用IIS,Apache或者其它的都可以。
如果你的Linux只有命令行的话,就用wget命令吧,可以很方便地下载文件。
5.Windows下配置Ftp用serv-u比较简单6.利用Windows的文件共享功能比如说你的Windows的IP为192.168.0.1,共享了一个叫share的目录,那么就可以用下列命令7.用vmware tools工具SharedFolders是Vmware4 的一个新功能,更加方便了在Host,Guest操作系统间共享文件。
但是使用前要安装vmwaretools.点击setting->vmwaretools installmount \\\/dev\\\/cdrom \\\/mnt\\\/cdromcd \\\/mnt\\\/cdrom里面有一个vmwaretools的tar包,解开执行vmware-tools-install.pl脚本,一路回车,一般没有问题。
点击Edit->VirtualMachine Settigns->Option->SharedFolders->Add,选定要共享的文件夹并给这个文件夹命名,下一步。
选定“Enable thisshare”,确定以后,vmware会把这个文件夹自动mount到\\\/mnt\\\/hgfs目录下。
备注:是否成功和ubuntu与vmwaretools的版本有关,需要彼此匹配。
8.直接挂接物理硬盘或者硬盘分区不过vmware也是支持直接mountHost机器的磁盘,方法是在虚机设置里新建磁盘,类型选“Usephysicaldisk(foradvanced users)”,再选定磁盘和分区就可以。
但是这样的操作可能会引会文件系统的不一致,导致错误,不推荐使用。
9.用ISO文件虚拟机里面的光驱可以有物理光驱和ISO文件两种,我们可以把我们的文件重点制件成ISO文件(用WinIso),然后在Linux中作为CDROM挂接。
6. Samba安装Ubuntu下samba的安装设置步骤1:Ubuntu下安装samba#apt-getinstall samba4#apt-getinstall smbfs步骤2:添加linux用户#useradduser1 \\\/\\\/添加用户名user1#passwduser1 \\\/\\\/给用户名user1添加密码#mkdir\\\/home\\\/user1 \\\/\\\/建立user1的home目录,如果不用这个用户名来登陆linux,此步骤不是必需#chown-R user1:user1 \\\/home\\\/user1 \\\/\\\/给user1的home目录设置好权限步骤3:给samba服务器添加用户说明:登陆samba的用户必须已经是linux中的用户#smbpasswd-a user1 \\\/\\\/添加并给user1设置samba密码步骤4:smb.conf设置#cd\\\/etc\\\/samba \\\/\\\/进入设置目录#mv smb.conf smb.conf.bak\\\/\\\/做好备份,直接将系统默认配置文件改名#vimsmb.conf \\\/\\\/建立和配置smb.conf文件[global]workgrop=x1 \\\/\\\/X1为你局域网中的工作组名serverstring=x2 \\\/\\\/x2为你linux主机描述性文字,比如:samba server。
security=user\\\/\\\/samba的安全等级,user代表需要输入用户名和密码,改成share则不需要输入用户名和密码[x3] \\\/\\\/方框号中的x3这个名字可以随便取,只是在win的网上邻居中显示的共享文件夹名path=\\\/home\\\/x4\\\/\\\/x4为你要共享的文件夹名,在共享前还要建立这个文件夹,并设好权限以便访问,下面会说明。
validusers=user1 \\\/\\\/这个x4共享目录只允许user1这个用户进入public=no \\\/\\\/no表示除了user1这个用户,其它用户在进入samba服务器后看不见x4这个目录,如果为yes,虽然能看见x4这个目录,但除了user1这个用户能进入这个目录,其它人进不了。
writable=yes \\\/\\\/允许user1在x4目录中进行读和写操作,反之no\\\/\\\/存盘退出#testparm \\\/\\\/检查一下语法错误,比如拼错步骤5:建立共享目录#mkdir \\\/home\\\/x4#chown -R user1:user1 \\\/home\\\/x4 \\\/\\\/因为是root建立的目录,其它用户只有读的权限,所还得把权限改一下。
当然也可以简单的用#chmod 777 \\\/home\\\/x4。
还有个问题就是共享里目录的文件如果有些能访问有些不能访问,那肯定也是权限的问题,进入\\\/home\\\/x4,直接#chmod 777 *来解决。
步骤6:重启samba服务#\\\/etc\\\/init.d\\\/samba restart7. windows客户端连接到samba服务器首先确保你的服务端已经配置好samba并成功启动服务, 我们就可以从Windows 客户端通过Windows网络连接到Samba,这里以 Windows XP 为例,有两种方法:1、网上邻居-->查看工作组计算机-->SambaServer2、打开运行(windows键+R),输入配置samba服务器的主机名或者IP(格式:\\\\\\\\192.168.1.98)3、进入samba可以看到我们配置的共享目录名, 步骤4配置的为share4、第一次登录需要输入用户名和密码, 步骤6配置的为username的用户名,可勾选记住我的密码,以后在此机器访问samba服务器就可以直接登录了。
8. cvs客户端设置ubuntu有两种cvs客户端程序:cvs和cvsnt。
我安装了cvsnt0. 安装cvsnt1. 在~\\\/.bashrc设置CVSROOT变量:exportCVSROOT=:pserver:lizhongkan@192.168.0.110:\\\/export\\\/home\\\/cvsroot改了以后,用户需要重新注册2. 创建cvs目录 mkdir~\\\/cvsroot3. cdcvsrootcvs loginxxx(密码)4.checkout项目:cvs co a\\\/b\\\/project\\\/src5. 常用命令:(斜杠后表示缩写)cvs checkout \\\/ cocvs update \\\/ upcvs commit \\\/ ci查看一个文件的提交情况:cvs logfilename对比两个版本文件的情况:cvs diff -r version_1 version_2 file_name6. 获得一个文件的历史版本cvs update -r 1.3 test.c-r 后,文件成为一个tag,是无法修改的,需重新从根目录checkout9. 安装 vimsudo apt-get install vim10. 安装vfftpsudoapt-get install vsftpd察看是否打开21端口Sudonetstat –tulnp | grep 21登陆ftp localhost输入Ubuntu的用户名、密码登陆ls(会显示home目录的文件)运行:standalone最普通的方式Sudoservice vsftpd
如何在2003系统上配置文件服务器
Windows的IIS中有项配置使用集成的Windows验证,在AD的环境中我们可以通过启用集成的Windows验证来使用用户登陆Windows 系统的帐号进行认证,在用户访问网页时,IE会将用户的帐号凭据发往服务器自动做认证,不需要用户输入用户名和密码。
最好的例子就是用户登陆 Outlook Web Access(OWA)。
当我们利用Squid做代理服务器需要利用用户身份做认证是,用户每次访问网页,系统会提示用户输入用户名和密码,这样给用户带来很多麻烦,有没有方法集成Windows的帐号做认证呢
通过查找资料,发现实际上在Linux等系统下,利用SQUID集成SAMB同样可以集成 windows的认证,用户在通过访问代理服务器时自动利用登陆计算机的帐号做身份验证,对用户完全透明,不需要手动输入用户名及密码。
下面是我进行 Squid集成Windows帐号认证的总结,希望对有这方面需求的朋友有所帮助,其中有什么不正确及有更好的方法也希望各位给予指点,共同研究进步。
1. 实现环境FreeBSD 5.4 + Squid 2.5 + Samba 3.0 + Krb52. 软件包安装Squid、Samba及Krb5均通过Ports安装最新版本。
3. Kerberos配置Win2003系统默认通过Kerberos做身份验证,Kerberos验证需要安装Krb5软件包。
配置文件及测试都很简单。
Krb5的配置文件为\\\/etc\\\/krb5.conf,配置如下代码:[logging]default = FILE:\\\/var\\\/log\\\/krb5libs.logkdc = FILE:\\\/var\\\/log\\\/krb5kdc.logadmin_server = FILE:\\\/var\\\/log\\\/kadmind.log[libdefaults]default_realm = TEST.COM (验证域的realm,必须全部大写)dns_lookup_realm = falsedns_lookup_kdb = false[realms]TEST.COM = {kdc = 192.168.0.1:88 (域控制器名,可以是IP地址)default_domain = TEST.COM (缺省域名,同样必须全部大写)}配置完成后可以通过Kinit工具进行测试方法如下代码:root# kinit [url=mailto:administrator@TEST.COM]administrator@TEST.COM[\\\/url]Password for [url=mailto:administrator@TEST.COM]administrator@TEST.COM[\\\/url]正确输入密码后系统返回代码:kinit: NOTICE: ticket renewable lifetime is 1 week表示正确验证,如果返回有错误,检查krb5.conf文件设置。
4. Samba配置通常samba配置文件在\\\/usr\\\/local\\\/etc\\\/smb.conf,编辑smb.conf文件如下注意,安装Samba是选择Winbind组件代码:[global]log file = \\\/var\\\/log\\\/samba\\\/log.%mdns proxy = Noidmap gid = 10000-20000server string = Samba Serveridmap uid = 10000-20000password server = 192.168.0.1workgroup = TEST (域的NetBios名)os level = 20encrypt passwords = yessecurity = ads (设置为AD验证)realm = TEST.COM (验证域realm,必须大写)winbind use default domain = yesmax log size = 50这里需要正确配置你的workgroup、Netbios名、realm,password servers(域控制器,可以有多台)。
一旦配置正确,你可以使用net ads join将你的Samba主机加入AD中。
输入代码:root# net ads join –U [url=mailto:administrator@TEST.COM]administrator@TEST.COM[\\\/url]将主机加入AD。
重新启动samba代码:\\\/usr\\\/local\\\/etc\\\/rc.d\\\/samba.sh restart同时winbind也将重新启动。
5. 确认Samba主机帐号在AD中正确注册使用wbinfo –t验证Samba主机已成功加入AD代码:root# wbinfo –t系统返回代码:checking the trust secret via RPC calls succeeded说明主机信任已成功建立使用wbinfo –u 可以列出AD中注册的帐号信息。
Wbinfo –g可以返回AD中的组信息。
6. 测试ntlm_auth验证代码:root# ntlm_auth --username=administratorPassword:**************NT_STATUS_OK: NT_STATUS_OK (0x0)说明域帐号administrator已成功验证7. 配制NSSNss为Name Service Switch,控制帐号的验证。
编辑\\\/etc\\\/nsswitch.conf,如下代码:passwd: files winbindgroup: files winbind8. 配置Squid在squid.conf文件中增加代码:auth_param ntlm program \\\/usr\\\/bin\\\/ntlm_auth --helper-protocol=squid-2.5-ntlmsspauth_param ntlm children 5auth_param ntlm max_challenge_reuses 0auth_param ntlm max_challenge_lifetime 2 minutesauth_param basic program \\\/usr\\\/bin\\\/ntlm_auth --helper-protocol=squid-2.5-basicauth_param basic children 5auth_param basic realm Squid proxy-caching web serverauth_param basic credentialsttl 5 hoursacl NTLMUsers proxy_auth REQUIREDhttp_access allow all NTLMUsers配置Squid使用ntlm_auth验证,并允许验证用户通过代理服务器访问。
这里要注意一点,用户要通过验证squid必须能访问winbind pipe,否则用户不能通过Squid验证,我刚配置完成时就是因为这里总是不能通过squid身份验证。
修改winbind pipe权限代码:root# chown -R root:squid \\\/var\\\/db\\\/samba\\\/winbindd_privilegedroot#chmod -R 750 \\\/var\\\/db\\\/samba\\\/winbindd_privileged9. 重新启动squid服务器,验证使用域用户身份验证。
如果使用域帐号登陆计算机,那么浏览网页时就不会提示输入用户名及密码认证,非域用户登陆计算机,通过代理访问网站时,IE将弹出用户身份验证窗口要求用户输入用户名及密码验证。
在squid.conf中同样可以设置允许访问的域用户,及不允许访问的域用户。
对于windows域用户来说,说有的验证都是透明的。
不需要手动输入用户名及密码,方便用户的使用。
[color=Red]如果想通过域组的验证,可在auth_param ntlm program \\\/usr\\\/bin\\\/ntlm_auth --helper-protocol=squid-2.5-ntlmssp 和auth_param basic program \\\/usr\\\/bin\\\/ntlm_auth --helper-protocol=squid-2.5-basic 後加上这一句--require-membership-of=DCDomain\\\\\\\\internetDCDomain:域名 internet:上网组名[\\\/color]



