标签: Samba

  • samba passwd的几种方式

    passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。

     

    1.smbpasswd

     

    passdb backend = smbpasswd

     

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

     

    smbpasswd -a 用户名 #添加一个samba用户

    smbpasswd -d 用户名 #禁用一个samba用户

    smbpasswd -e 用户名 #恢复一个samba用户

    smbpasswd -x 用户名 #删除一个samba用户

     

    2.tdbsam

     

    passdb backend = tdbsam

     

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

     

    用户的建立可以先用mksmbpasswd建立一个smppasswd文件,然后用pdbedit将文件里的用户导入数据库。

     

    cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd

     

    pdbedit命令的参数很多,我们列出几个主要的:

     

    pdbedit -i smbpasswd:/etc/samba/smbpasswd

    pdbedit -a username:新建Samba账户。

    pdbedit -x username:删除Samba账户。

    pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。

    pdbedit -Lv:列出Samba用户列表的详细信息。

    pdbedit -c “[D]” –u username:暂停该Samba用户的账号。

    pdbedit -c “[]” –u username:恢复该Samba用户的账号。

     

    3.ldapsam

     

    passdb backend = smbpasswd

     

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

     

    注:samba3.x的早期版本默认使用tdb库也就是smb.conf默认设定为passdb backend = tdbsam,只需要注释掉该行添加smb passwd file = /etec/samba/smbpasswd即可使用smbpasswd存储加密密钥。samba3.5.6更加规范了passdb backend参数的使用,取消了smb passwd file设定,如果简单注释掉passdb backend参数,密钥文件也不会被存储到smbpasswd。所以很多人说怎么修改smb.conf的配置,smbpasswd文件都无法生成,就算 手工创建,内容也是0字节。

     

    这里只能说samba版本升级了,规则也变化了。现在无论是使用tdb数据库存储密钥还是smbpasswd文本存储密钥都要设定相对应的 passdb backend参数。要用传统的文本方式存储只需这样设定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是绝对路径)>,不要再画蛇添足的写上smb passwd file = /etec/samba/smbpasswd,该参数已经不适用于新版本的samba了。

     

    注意,这里的用户名必须是linux中存在的用户,可以使用useradd命令在系统中添加一个用户,然后再增加一个对应的samba用户,也 就是一个用户名使用的是两套密码。一个是系统用户密码,另一个密码存储在/etc/samba/smbpasswd文件中的samba密码,这样可以防止 系统用户密钥外泄带来的安全隐患。

     

    除了上面的措施外,samba还提供了一个更安全的方法,用户名映射功能,这样做的好处是防止系统内的真实用户名暴露,在smb.conf中增 加username map = /etc/samba/smbuser设定,再手工建立该文件。username map参数详解,比如有一个系统用户名为shaogroup.com,同时我们也设定其为samba的登录名,虽然是两套独立的密码,但依然告诉了用户,我系统内 也存在shaogroup.com这个用户。严格的说这也是违背系统安全规则的,不法人士可能会利用该用户名暴力猜解获得系统内帐户权限。samba提供的用户名 映射功能,只需编辑smbuser文件,格式为:真实的用户名 = 映射出的用户名(随便自定义);shaogroup.com = nas_guest nas_nobody(可以映射出多个用户名,注意中间的空格)。设定完成后,我们只需将nas_guest告诉用户即可,无须担心真实的 shaogroup.com用户名暴露。

  • FreeBSD Samba安装及设定

    cd /usr/ports/net/samba34

    make install clean

    (選擇 LDAP、ADS、CUPS、WINBIND、ACL_SUPPORT、SYSLOG、UTMP)

    vi /etc/rc.conf

    samba_enable=”YES”

    vi /usr/local/etc/smb.conf

    #加入工作群組

    workgroup = WORKGROUP

    #主機名稱

    server string = %h Samba Server

    (%h為主機名稱變數)

    #設定使用者家目錄

    原為:

    [homes]

    comment = Homes Directories

    browseable = no

    writable = yes

    更改為:

    [homes]

    comment = Home directory for %u on %h

    browseable = no

    writable = yes

    path = /usr/home/%u/

    valid users = %S

    #設定共享資料夾

    [public]

    comment = %h Shared Public Directory

    path = /usr/home/samba/public

    force directory mode = 0777

    force create mode = 0777

    force group = nobody

    force user = nobody

    public = yes

    writeable = yes

    read only = no

    #測試Samba conf中語法有無錯誤

    /usr/local/bin/testparm | more

    mkdir /usr/home/samba

    mkdir /usr/home/samba/public

    chmod 777 /usr/home/samba/public

    #新增Samba帳戶

    使用者必須同時設定兩種帳號: FreeBSD 的使用者帳號、 Samba 的使用者帳號 才能正常登入 Samba 伺服器。

    smbpasswd -a 帳號

    /usr/local/etc/rc.d/samba restart

    #個別設定資料夾設定

    [aaa]

    comment = aaa

    path = /home/samba/my2075/aaa

    valid users = aaa, admin2075

    write list = aaa, admin2075

    browseable = No

    [bbb]

    comment = bbb

    path = /home/samba/my2075/bbb

    valid users = bbb, admin2075

    write list = bbb, admin2075

    browseable = No

    [ccc]

    comment = ccc

    path = /home/samba/my2075/ccc

    valid users = ccc, admin2075

    write list = ccc, admin2075

    browseable = No

    #samba變數

    %S: 取代目前的「資源名稱」,所謂的「資源名稱」就是在 [ ] 裡面的內容。ex: valid users = %S

    %U: 代表目前登入的使用者的使用者名稱。

    %m: 代表 Client 端的 NetBIOS 名稱。

    %g: 代表登入的使用者的群組名稱。

    %M: 代表 Client 端的 Internet 主機名稱,就是 HOSTNAME。

    %L: 代表 SAMBA 主機的 NetBIOS 名稱。

    %h: 代表目前這部 SAMBA 主機的 HOSTNAME。

    %H: 代表使用者的家目錄。

    %I: 代表 Client 端的 IP。

    %T: 代表目前的日期與時間。

    #Samba 使用下列的通訊埠:

    Port 135/TCP – used by smbd

    Port 137/UDP – used by nmbd

    Port 138/UDP – used by nmbd

    Port 139/TCP – used by smbd

    Port 445/TCP – used by smbd

    #Windows網路芳鄰切換使用者

    進cmd模式

    net use * /delete

  • samba搭建

    安装samba

    #yum install samba

     

    配置samba

    #vi /etc/samba/smb.conf

    添加修改如下内容

    workgroup = MYGROUP //更改为你所在的工作组

    server string = Samba Server %U %G //更改显示信息,会在windows访问时最上方显示相关信息

    设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用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 = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)

    %d = 当前服务进程的ID

    %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)

    %I = 客户机的IP

    %T = 当前日期和时间

    灰色信息不添加

    #interfaces = 192.168.0.0/24 //可使用samba的网段,注释掉为全部

    [share] //显示的共享名

    path = /var/share //共享路径

    valid users = @test1,@test2 //共享文件属主,可以是用户也可以是组,组前加@

    browseable = no //非本共享用户是否可以看到,no为看不到,yes或注释掉就可看到

    writable = no //缺省是否可写

    read list = @test1 //只读用户组也可以加用户

    write list = @test2 //可写用户组也可以加用户

    create mode = 0755 //创建的文件权限

    directory mode = 0755 //创建的文件夹权限

    保存以上信息

    #mkdir /var/share //创建share目录

    #chmod 777 /var/share //将share目录权限设为777

    #groupadd test1 //添加test1组

    #groupadd test2

    #useradd -M -g test1 -s /sbin/nologin test1 //新建系统用户,无home,无shell,添加到test1组

    #useradd -M -g test2 -s /sbin/nologin test2

    #smbpasswd -a test1 //添加samba用户必添加密码,修改密码不用加-a

    #smbpasswd -a test2

    好了,重启samba就可以用windows登录了

    —————————————————————–

    以下是一些相关说明

    comment指的是对改共享的备注。

    path 指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是

    grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/

    glass目录。

    allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。

    writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。

    user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。

    valid users指定能够使用该共享资源的用户和组。

    invalid users指定不能够使用该共享资源的用户和组。

    read list 指定只能读取该共享资源的用户和组。

    write list指定能读取和写该共享资源的用户和组。

    admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。

    public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和

    public = yes是一样的。

    hide dot files指明是不是像unix那样隐藏以”.”号开头的文件。

    create mode指明新建立的文件的属性,一般是0755。

    directory mode指明新建立的目录的属性,一般是0755。

    sync always指明对该共享资源进行写操作后是否进行同步操作。

    short preserve case指明不管文件名大小写。

    preserve case指明保持大小写。

    case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。

    mangle case指明混合大小写。

    default case指明缺省的文件名是全部大写还是小写。

    force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user=

    grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。

    wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links =

    no将使该连接不可用。

    max connections = n设定同时连接数是n。

    delete readonly指明能否删除共享资源里面已经被定义为只读的文件。

  • samba简单实用配制

    步骤1:安装samba

    #apt-get install samba

    #apt-get install smbfs

    步骤2:添加linux用户

    #useradd user1     //添加用户名user1

    #passwd user1 //给用户名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/samb //进入设置目录

    #mv smb.conf smb.conf.bak //做好备份,直接将系统默认配置文件改名

    #vim smb.conf //建立和配置smb.conf文件

    [global]

    workgroup=x1 //X1为你局域网中的工作组名

    server string=x2 //x2为你linux主机描述性文字,比如:samba server。

    security=user //samba的安全等级,user代表需要输入用户名和密码,改成share则不需要输入用户名和密码

     

    [x3] //方框号中的x3这个名字可以随便取,只是在win的网上邻居中显示的共享文件夹名

    path=/home/x4 //x4为你要共享的文件夹名,在共享前还要建立这个文件夹,并设好权限以便访问,下面会说明。

    valid users=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 restart

    OK,设置到此结束

  • debian Samba Server架设

    一、安装所需软件包

    apt-get install samba samba-common smbclient smbfs

    Debian系统中在安装中就有简单的设定,呵呵,这里随便。

    软件包结构:samba包含smbd nmbd守护进程,samba-common包含相关的程序和主配置文件,samba-client这个是客户端软件。smbfs用于mount挂载支持。

    /etc/samba/smb.conf 主配置文件

    /etc/samba/lmhosts 這個檔案的主要目的在對應 NetBIOS name 與該主機名稱的 IP

    /etc/samba/smbpasswd SAMBA 的使用者密碼對應表

    /etc/samba/smbusers 由於 Windows 與 Unix-like 在管理員與訪客的帳號名稱不一致,分別為 administrator 及 root, 為了對應這兩者之間的帳號關係,可以使用這個檔案來設定。不過這個檔案的使用必須要經由 smb.conf 內的『 username map 』設定項目來啟動才行。

    testparm 用于检察smb.conf是否设置正确。

    smbd samba的主要守护进程

    nmbd 提供NetBIOS域名服务

    smbstatus 列出当前samba连接状态

    smbpasswd 添加samba用户名和密码用的

    smbclient samba客户端

    smbmount 用于挂载远程samba文件

    nmblookup 有點類似 nslookup 啦!重點在查出 NetBIOS name 就是了。

    smbtree 类似于网络邻居

     

    二、共享权限设计实现及用户和目录建立。

    要求:

    admin 有管理所有空间的权限,并有自已的私有目录。

    user01 有一个自已的私有空间。

    user02 有一个自已的私有空间。

    share目录 所有用户只读目录(含匿名)。

    user目录 user组用户可读写目录

    建立相关用户和用户组

    #groupadd admin;groupadd user

    建立相关用户

    #useradd -g user -d /home/samba/user01 -s /sbin/nologin user01

    #useradd -g user -d /home/samba/user01 -s /sbin/nologin user02

    #useradd -g admin -G admin,user -d /home/samba -s /sbin/nologin admin

    建立相关目录

    #mkdir /home/samba

    #cd /home/samba;mkdir admin user user01 user02 share

    目录权限设计

    #chmod 755 /home/samba;chown admin.admin /home/samba

    #chmod 700 admin;chown admin.admin admin

    #chmod 755 share;chown admin.admin share

    #chmod 770 user*

    #chown admin.user user

    #chown user01.admin user01

    #chown user02.admin user02

    添加samba用户,并设置密码

    samba用户名和密码默认都记录在/var/lib/samba/passdb.tdb这里,我认为这样很好,比明文更好。

    #mv /var/lib/samba/passdb.tdb /var/lib/samba/passdb.tdb.bak

    这一步是无关紧要的,因为passdb.tdb里面本来就存在用户,不过是不可用的。不过我喜欢纯洁。

    #smbpasswd -a admin

    New SMB password:<输入密码>

    Retype new SMB password:<重复一次>

    ……

    重复上面的操作,把admin,user01,user02都添加进去。

    查看用户和密码是否添加进去。

    #pdbedit -L -w

    三、编辑主配置文件

    因为我也不是很了解smb.conf文件,所以很多地方就用默认设置吧!不过我希望过客要看看配置文档啊,很有用的哦,对你帮助很大哦。

    #vim /etc/samba/smb.conf

     

    [global]

    server string = Debian Samba Server.

    netbios name = debian

    hosts allow = 192.168.1. 127.

    security = share

    guest account = nobody

    guest ok = Yes

    passdb backend = tdbsam

    passwd program = /usr/bin/passwd %u

    dns proxy = No

     

    [Samba]

    path = /home/samba

    writeable = Yes

    browseable = Yes

    public = no

     

    保存退出。

    #/etc/init.d/samba restart

    现在试试是不是samba可以工作了啊!