首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >利用samba做Linux和Windows域的整合

利用samba做Linux和Windows域的整合

作者头像
XPcode7
发布2025-10-23 11:04:11
发布2025-10-23 11:04:11
1670
举报

利用samba做Linux和Windows域的整合

1.测试环境:

DC&DNS:Windows Server 2003 sp2 企业版. 计算机名为:DC ip:192.168.255.1

客户机:Red Hat Enterprise Linux ES5 hostname为server ip: 192.168.255.2

域名:yanchun.com

2.试验目的:将Linux加入到Windows域,并实现Windows域帐户登陆Linux服务器.

3.准备工作:

a.在一台机器上安装Windows Server 2003 ,并升级为DC,同时集成DNS服务.

b.Linux的准备工作也很简单,主要是检查以下几个包是否被安装:

samba-3.0.23c-2

samba-common-3.0.23c-2

samba-client-3.0.23c-2 //samba的相关包

krb5-libs-1.5-17

krb5-workstation-1.5-17

krb5-devel-1.5-17

pam_krb5-2.2.11-1 //kerberos相关的软件包

主要就用到这些包,由于各Linux发行版本的不同,包的版本或许会有差异.

4.配置步骤:

a.修改ip和dns我就不做介绍了.但是要注意防火墙(iptables)和SELinux.

你可以把iptables规则清空,并禁用SELinux.

清空iptables规则命令如下:

iptables -F

禁用SELinux方式如下:

vi /etc/selinux/config

将其中的 SELINUX=enforcing

改成 SELINUX=disable

b.修改/etc/krb5.conf文件,该文件是kerberos的配置文件。

典型的krb5.conf文件如下:

[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log

[libdefaults] default_realm = EXAMPLE.COM

dns_lookup_realm = false dns_lookup_kdc = false

[realms] EXAMPLE.COM = { kdc = kerberos.example.com:88 admin_server = kerberos.example.com:749 default_domain = example.com }

[domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

[kdc] profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }

其中需要我们修改的地方很少,以我的例子为例,修改后的文件如下:

[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log

[libdefaults] default_realm = YANCHUN.COM //改成你的域名 dns_lookup_realm = false dns_lookup_kdc = false

[realms] YANCHUN.COM = { //改成你的域名 kdc = dc.yanchun.com:88 //改成你DC的FQDN或者是IP,两者没什么区别 admin_server = dc.yanchun.com:749 default_domain = yanchun.com //改成你的域名,注意和上面的不同.(大小写) }

[domain_realm] .example.com = YANCHUN.COM example.com = YANCHUN.COM //接着改

[kdc] profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }

修改完毕后运行下面的命令查看kerberos文件是否有误:

kinit administrator@YANCHUN.COM

其中administrator是域管理员账户,YANCHUN.COM是你的域名.

回车键后,会提示你输入密码,如果没有什么错误.在你输入密码回车后,会自动返回到Linux命令提示符下.

在这里要注意的小问题就是Linux本地的时间要和DC的时间差问题,我们都知道,在DC上的策略中,时间差允许的范围是5分钟,所以,在运行上述的命令前,最好先同步下Linux和DC的时间:

ntpdate 192.168.255.1

c.这一步是最主要的步骤了,就是修改/etc/samba/smb.conf配置文件.samba的主配置文件选项很多,在加上各版本中默认的选项都有所差异,在这里我就不列举典型的smb.conf文件了,我只把我的smb.conf文件帖出来,以供各位参考:

[global] workgroup = YANCHUN //需要加入的域的netbios名,注意是域的netbios名,要大写 netbios name = Linux //本机器的netbios名,有的版本没有这一项会没有这个, 要手动添加 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

security = ads //ads验证方式必须有realm项

realm = YANCHUN.COM //增加这一行,注意这里是域名. password server = dc.yanchun.com //这里是DC的FQDN,也可以写ip,但是有时候会出 问题,建议写FQDN

encrypt passwords = yes //加密在网络上传输的用户密码 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy = no

winbind separator = / //用户的域名和用户名之间的间隔,用什么随你心情 idmap uid = 1000000-2000000 idmap gid = 1000000-2000000 //域用户映射成Linux本地用户时所有的uid和gid范围. template home = /home/%D/%U //与home文件夹中定义的作用相同.两者定义一个就行(我没加这行) template shell = /bin/bash //用户登陆后所使用的shell winbind use default domain = yes //用户登陆使用默认的域 winbind enum users = yes winbind enum groups = yes //有人说是自动创建用 getent passwd[group]看到的 用户和组的信息.具体有什么用,我也说不清楚

[homes] comment = Home Directories browseable = no writable = yes create mode = 0777 directory mode = 0777 //创建的文件和目录的默认权限 path = /home/%D/%U //用户主目录的相关设置

[printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes

以上红色的部分都是要修改的,其余的都保持默认就行.好了,修改完成后,保存退出.然后用下面的命令测试 smb.conf是否有误:

testparm

显示的结果如下:

在这里注意两个地方就行,一个是 Loaded services file OK. //说明你的配置文件没有错

还有一个就是:Server role:ROLE_DOMAIN_MEMBER //说明你的服务器已经是域的 "准"成员了.

好了,做了这些测试后,先把smb和winbind两个服务开启成随系统自动启动:

chkconfig smb on

chkconfig winbind on

然后重启samba服务:

service smb restart //写到这里,我想起一点好玩的事来, 在fedora 9中(其他版本我不知道),

smb和nmb服务是分开的,也就是说你用这条命令只能重启动smb,不能重 启nmb,你还要打service nmb restart才行.....

然后就可以加入域了:

net ads join -W YANCHUN.COM -S dc -U administrator

然后会要求你输如管理员的password,输入后,正常情况下会提示加入域成功.

在这里我插一句,有时候用net ads join 会不好使,这时候就试试net rpc join 这种方式.

到这里,我们就已经把samba服务器加入到域里了,这时,在DC上,computers这个OU里就应该可以看到你的samba服务器了.

这时,我们重启winbind服务:

service winbind restart

重启完成后,我们就可以用下面的几条命令来进行测试了:

wbinfo -t //测试该samba服务器与域的信任关系

wbinfo -u // 查看域用户的映射信息

wbinfo -g

有时候会出现这样的错误信息,解决办法如下:

先停掉winbind和smb服务:

service smb stop

service winbind stop

然后删除下面两个目录里的.tdb文件: /etc/samba 和 /var/cache/samba

据我理解,这些应该是在加入域过程中,产生的一些缓存 文件,但是有时候这些缓存会造成一些错误信息,就象我们刚才看到的那样,删除后,重启服务,让他重新 生成就行了.

fedora9 会稍有不同,目录我记不太清楚了,好像是 /var/lib/samba 你可以用命令搜索下:

find / -name *.tdb

删除完成后,重新启动 smb服务.

service smb start

在次运行加入域的命令:

net ads join -W YANCHUN.COM -S dc -U administrator

重启动winbind服务.

service winbind start

然后在用命令查看信息就OK了.

到这里呢,我们的samba服务器就成功的加入到域里了,但是呢,却还不能实现域账户在Linux终端上的登陆.想要实现这个目的,其实也很简单,只需要修改下面几个文件就可以了:

/etc/nsswitch.conf //修改这个文件,影响Linux查找用户,组,和他们密码的行为

修改项如下:

passwd: winbind files shadow: winbind files group: winbind files

/etc/pam.d/sysconfig-auth //让pam认证支持以winbind为源进行用户的查找和匹对.

修改项如下:

auth sufficient /lib/security/pam_winbind.so //增加这一行

auth required /lib/security/ISA/pam_env.so auth sufficient /lib/security/ISA/pam_unix.so likeauth nullok auth required /lib/security/

account sufficient /lib/security/pam_winbind.so //增加这一行,注意这两行的位置

account required /lib/security/ISA/pam_unix.so account sufficient /lib/security/ISA/pam_succeed_if.so uid < 100 quiet account required /lib/security/

password requisite /lib/security/ISA/pam_cracklib.so retry=3 password sufficient /lib/security/ISA/pam_unix.so nullok use_authtok md5 shadow password required /lib/security/

session required /lib/security/ISA/pam_limits.so session required /lib/security/ISA/pam_unix.so

修改完毕后,根据上面smb.conf文件的配置,我们就可以实现用户的登陆了,不过还有一点要说明,就是在用户登陆前,必须手动创建他们的登陆主目录,并且赋予他们完全控制的权限.

比如,我想让administrator用户登陆Linux,实现步骤如下:

cd /home

mkdir YANCHUN

cd YANCHUN

mkdir administrator

chown administrator administrator //在home目录下创建YANCHUN域目录,并在该目录下创建 要登陆用户administrator的目录,更改目录权限.

这样在终端上就可以实现域用户账户的登陆了.

还有就是用户登陆Linux平台后,权限控制的问题.默认情况下,这种方式登陆到Linux平台的用户只有对自己主目录有完全控制权限,其余的文件均为只读.

可以通过下面的方法来实现对域用户权限的控制:

1.更改/etc/nsswitch.conf文件.

passwd: winbind files shadow: files winbind group: winbind files

细心的朋友也许已经注意到了这个文件与上面那个文件的不同.就是shadow的查找顺序.为什么这么改,呵呵,先卖个关子,接着往下看.

2.然后先把winbind 服务停掉.

建立与要登陆Linux的域用户账户的同名Linux账户.

3.重启winbind服务.用域账户登陆.这时会发现,登陆后域用户的登陆点不是在/home/%D/%U下了,而是在/home/%U下.为什么呢?

这是因为nsswitch.conf文件影响的结果.就是域用户在输入自己的登陆名时,Linux系统并不认为是域用户,而认为该用户是一个本地用户,而shadow项的设置,是先去DC进行密码的查询.于是就造成了一种假象,就是域用户用自己的用户名和密码登陆了Linux.所以其登陆目录为/home/%U.

既然,Linux认为该登陆用户是一个本地用户,那么我们就可以很方便的对他赋予权限了.

但是,如果要登陆Linux的用户非常多,那么作为管理员,我们的工作量会非常大,这也是我下面要提出的用LDAP想法的原因.

我在这个试验过程中所碰到的问题如下:

1. net rpc join 和 net ads join 命令在作用上有什么区别.

2. 有时候配置文件没有错,但是在加入域时会提示错误信息,如NT_STATUS开头的一些错误信息,具体是什么原因,还望有高手指教.我在网上搜索相关错误提示的帖子,也没有能找到真正解决问题的方法.

NT_STATUS_ACCESS_DENIED (0xc0000022) NT_STATUS_NO_TRUST_SAM_ACCOUNT (0xc000018b) NT_STATUS_INVALID_COMPUTER_NAME

3.有时候会出现unable to find a suitable server .提示找不到合适的服务器,不知道问题出在什么地方.

4.另外,我还有一种想法,能不能在Linux上搭建LDAP服务,然后用他去同步Windows的活动目录数据库,然后激活samba的LDAP数据库认证功能,实现域用户账户访问samba服务器的认证问题.有做过相关试验的朋友请给小弟一点指点.感激不尽.

5.至于自动为登陆Linux平台的域用户创建宿主目录,和自动加入某一Linux本地组,等我熟了SHELL编程在说吧,呵呵~

6.有时候会出现类似于Winbind服务启动起来后,显示该服务已经假死的现象,这时候可以通过查找/var/log/messages或者/etc/log/samba/winbind.log查找相关的错误信息。我碰到过的一个问题是:Winbind Dead but subsys lock的东东,解决办法是关闭SELinux就可以了,针对这个问题在相关的日志错误信息中显示的是:open secrets.tdb error。据我个人理解,应该是SELinux的开启造成了Winbind无法访问/etc/samba/secrets.tdb文件的缘故,只要disable SELinx 重启计算机后,应该就可以正常的启动和停止Winbind服务了。

自己操作:

Win 03 AD:

IP: 192.168.15

Samba server (cetnos5.3):

[root@sambatest ~]# hostname

Sambatest

[root@sambatest ~]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost

::1 localhost6.localdomain6 localhost6

        1. sambatest

软件:

Yum search samba

找到:

samba.i386 : Samba SMB 服务器。

samba-client.i386 : Samba (SMB) 客户程序。

samba-common.i386 : 用在 Samba 服务器和客户机上的文件。

samba-swat.i386 : Samba SMB 服务器配置程序。

后:

Yum –y install samba*

Yum search krb5

找到:

krb5-auth-dialog.i386 : Kerberos 5 认证对话

krb5-devel.i386 : 编译 Kerberos 5 程序所需的开发文件。

krb5-libs.i386 : 被 Kerberos 5 使用的共享库。

krb5-server.i386 : The KDC and related programs for Kerberos 5.

krb5-workstation.i386 : 用在工作站上 Kerberos 5 程序。

pam_krb5.i386 : 一个 Kerberos 5 的可插入验证模块 (PAM)。

后:

Yum –y install pam_krb5* krb5*

SMB.CONF:

[global]

workgroup = DS

realm = DS.COM

server string = Sambatest Server Version %v

security = ADS

password server = 192.168.1.16

idmap uid = 16777216-33554431

idmap gid = 16777216-33554431

template shell = /sbin/nologin

winbind separator = +

winbind enum users = Yes

winbind enum groups = Yes

winbind use default domain = Yes

winbind offline logon = false

netbios name = sambatest

encrypt passwords = yes

cups options = raw

[centos ds]

comment = centos samba server

path = /home/samba/

valid users = ds+caiwu02, @ds+caiwu, @ds+test, @ds+server

read only = No

create mask = 0664

directory mask = 0775

guest ok = Yes

more /etc/krb5.conf

[logging]

default = FILE:/var/log/krb5libs.log

kdc = FILE:/var/log/krb5kdc.log

admin_server = FILE:/var/log/kadmind.log

[libdefaults]

default_realm = DS.COM

dns_lookup_realm = false

dns_lookup_kdc = false

ticket_lifetime = 24h

forwardable = yes

[realms]

DS.COM = {

kdc = 192.168.1.16:88

kdc = 192.168.1.16

admin_server = 192.168.1.16:749

default_domain = DS.COM

}

[domain_realm]

.ds.com = DS.COM

ds.com = DS.COM

[kdc]

profile = /var/kerberos/krb5kdc/kdc.conf

[appdefaults]

pam = {

debug = false

ticket_lifetime = 36000

renew_lifetime = 36000

forwardable = true

krb4_convert = false

}

more /etc/nsswitch.conf

passwd: files winbind

shadow: files winbind

group: files winbind

[root@sambatest ~]# more /etc/pam.d/sysconfig-auth

auth sufficient pam_winbind.so //增加这行

auth required pam_env.so

auth sufficient pam_unix.so nullok try_first_pass

。。。。。。

account sufficient pam_winbind.so //增加这行

account required pam_unix.so broken_shadow

account sufficient pam_succeed_if.so uid < 500 quiet

。。。。。。

同步时间:

ntpdate 192.168.1.16

net rpc join -S WIN03SERVER1.DS.COM -U centos

net ads testjoin

/etc/init.d/winbind start 启动不了是还没加入域,获取不不到消息,再加入域后要启动才能使用下面命令:

wbinfo -t //测试该samba服务器与域的信任关系

wbinfo -u // 查看域用户的映射信息

wbinfo –g

以下是我没用到的:

net ads info

net ads status -Ucentos%centos

net rpc info -S win03server1.ds.com -Ucentos%centos

net rpc testjoin -S win03server1.ds.com -Ucentos%centos

代码语言:javascript
复制
nmblookup -A 192.168.0.2 //查询网络上 NetBIOS 主机的信息

smbstatus:

列出目前的 SMB server 的狀態,也是很有用途的一個指令啦!

testparm:

這個指令主要在檢驗 samba 設定檔 smb.conf 的語法正確與否,當你編輯過 smb.conf 時,請務必使用這個指令來檢查一次, 避免因為打字錯誤引起的困擾啊!

smbtree:

這玩意就有點像 Windows 系統的網路上的芳鄰顯示的結果,可以顯示類似『靠近我的電腦』之類的資料, 能夠查到工作群組與電腦名稱的樹狀目錄分佈圖,有趣吧!

/etc/samba/smbusers:

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

%S:取代目前的設定項目值,所謂的『設定項目值』就是在 [分享] 裡面的內容! 舉例來說,例如底下的設定範例:

[homes]

valid users = %S

....

因為 valid users 是允許的登入者,設定為 %S 表示任何可登入的使用者都能夠登入的意思~今天如果 dmtsai 這個使用者登入之後,那個 [homes] 就會自動的變成了 [dmtsai] 了!這樣可以明白了嗎? %S 的用意就是在替換掉目前 [ ] 裡面的內容啦!

%m:代表 Client 端的 NetBIOS 主機名稱喔!

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

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

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

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

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

%h:代表目前這部 SAMBA 主機的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!

%I:代表 Client 的 IP 咯。

[root@linux ~]# smbpasswd [-adem] username

參數說明:

: 如果都沒有加上任何一個參數,例如『 smbpasswd dmtsai 』時,這表示:

修改 SAMBA 密碼檔 (/etc/samba/smbpasswd) 裡面的 dmtsai 這個帳號的密碼!

也就是說,密碼檔裡面已經存在一個 dmtsai 的帳號了!

-a : 在 smbpasswd 密碼檔裡面新增一個使用者

-d : 讓在 smbpasswd 密碼檔裡面的某個帳號的使用者暫時無法使用 SAMBA

當多了 -d 的參數時,在 smbpasswd 裡面某個欄位會多出一個 D 的參數,

代表該帳號目前無法使用喔!

-e : 與 -d 參數相反,讓某個帳號恢復使用!

-m : 該 username 為機器代碼 (Machine Account),這個與 domain model 有關!

etc/samba/smbusers文件中做映射

真实samba帐号 = 帐号别名

确保有以下内容:

root = administrator

smbuser1 = user1

smbuser2 = user2

smbuser3 = user3

username map = /etc/samba/smbusers #帐号映射文件

samba结合AD实现大型网络方案

前言: 这文章可能在某些情况下还会有各种的不足,所以我只是作一个抛砖来引玉.希望能和大家讨论这个方案存在的问题与如何解决问题. 背景: 在上次的背景之下(见上一文章),管理员发现公司内现有部门不多,但员工数量非常的多.如果按照用户一个一个的去创建用户并用smbpasswd增加samba的登陆用户非常的麻烦.而且公司内已经存在一台windows 2003 server域控制器(建立方法),并且包含所有员工的帐号信息.在此管理员想通过windows 2003 server域控制器的帐号来作为samba的登陆帐号. 环境: Windows 2003 Server Linux Samba's Server IP地址 192.168.1.1/24 192.168.1.250/24 DNS 192.168.1.1 192.168.1.1 hostname gz rhel 域 eric.local 配置: 一.linux加入到AD域(这步暂时大家先放一下,因为我后面步骤没有使用到.大家先做后面的步骤如果不行在返过来做这一步骤.以前在RHEL AS4的时候,用这步骤是很简单就能成功的,但我用RHEL AS5就不知道为什么怎么都不成了.) #vi /etc/krb5.conf 修改为以下内容 (注意区分大小写,还有就是自己正确替换为自己的域) [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = ERIC.LOCAL(验证域的realm,必须全部大写)dns_lookup_realm = false dns_lookup_kdb = false [realms] ERIC.LOCAL = { kdc = 192.168.1.1:88 default_domain = ERIC.LOCAL(缺省域名,同样必须全部大写)} [domain_realm] .eric.local= ERIC.LOCAL eric.local = ERIC.LOCAL 后面不用修改,省略...... 做完这里的话就测试一下 #kinit administrator@ERIC.LOCAL (@ERIC.LOCAL必须大写) 输入AD里的administrator密码,如果没有任何的提示.直接返回到shell里的话就表示已经成功了.但这并不代表已经加入了域.继续看下去 修改samba的主配置文件 #vi /etc/samba/smb.conf 修改以下的内容 workgroup = ERIC # <-- 这里的 workgroup 见图1就知道填什么了. realm = ERIC.LOCAL # <-- 建立的域名称security = ADS password server = 192.168.1.1 # <-- windos AD 域控制器的完整主机名。也可以用 IP 地址来代替 workgroup的填写内容就在登陆到里显示了!!,图1 然后就基本可以了. 启动samba服务 #service smb start 同步时钟,加入域必须时差在5分钟内! #ntpdate 192.168.1.1 测试与加入域 #kinit administrator@ERIC.LOCAL #net ads join (在AS4的话用这句很容易就加到域的,但AS5中我怎么都加不到.所以krb5.conf文件就变得似呼没有用了.) #net rpc join -S gz.eric.local -U administrator (如果上句不行就试试这一句,我AS5就是用rpc方式连接域的,功能上没有ADS强.) 如果能够加入后,在AD域可以在windows 2003 server里看到rhel 到这里其实就只是加入域而已,但并不能用AD帐号登陆samba 二.将AD帐号同步到linux里.这里要用到一个工具winbind 修改samba的主配置文件 #vi /etc/samba/smb.conf 在配置文件中添加以下内容 idmap uid = 10000 - 20000 idmap gid = 10000 - 20000 template shell = /sbin/nologin template homedir = /home/%D/%U winbind separator = % winbind use default domain = yes winbind enum users = yes winbind enum groups = yes encrypt passwords = yes 修改以下内容 [home] path = /home/%D/%U browsable = no writable = yes create mask = 0664 directory mask = 0775 前面不是看到/home/%D/%U这样的目录吗?我们就要手工去创建这个目录了.不过这里比较麻烦,AD帐号的个人目录必须要工的去创建,而不能说自动的检测是否已存在,不存在自动创建.不知道哪个高手能够说说有什么方法解决,我想到用脚本去做.但还在测试中...大家说说你们的高见 #mkdir /home/ERIC #chmod -R 777 /home/ERIC 添加winbind写入帐号的信任 #vi /etc/nsswitch.conf 修改以下位置 passwd: files winbind shadow: files winbind group: files winbind 保存然后就重启两个服务 #service smb restart #service winbind start 再加入域语句和前面一样,我这就不再写了. 加入成功后就测试一下! #wbinfo -t #看winbind是否正常运行 #wbinfo -u #看AD用户是否同步过来了 基本上到这里就已经完成了配置.到windows测试一下吧! 我先来说一下存在的问题: 1.首先最亟待解决的问题就是AD帐号主目录的自动建立问题,一直想不到好的解决方法.暂时有一个方向是用脚本去实现,还在研究当中. 2.net ads join不能够加入域,只能用net rpc join的方法.不知道哪个高人能指点一下. 以上是我暂时想到的问题,大家在操作研究中如果发现有什么问题可以提出来大家讨论一下.学习Linux就必须多思考,而不是到处搜索.版本多了,并不一定网上的转载就正确.讨论才是解决的好办法!哈哈

Windows 2003 Server

Linux Samba's Server

IP地址

192.168.1.1/24

192.168.1.250/24

DNS

192.168.1.1

192.168.1.1

hostname

gz

rhel

eric.local

Windows 2003 Server

Linux Samba's Server

IP地址

192.168.1.1/24

192.168.1.250/24

DNS

192.168.1.1

192.168.1.1

hostname

gz

rhel

eric.local

AD帐号登陆samba自动创建主目录脚本

我就受这文件的启发,还有就是我一直的一个思路所影响.开始研究那个pam_mkhomedir.so的原理.最后我想到了以下这个方法.

在SAMBA的主配置文件下的[homes]增加一句执行脚本的代码

//[homes] 由于在 [homes]实现共享所以用他

preexec = /home/ERIC/buildhome %D %U %G

然后就保存文件.接下来就到/home/ERIC下创建脚本了!

#vi /home/ERIC/buildhome

脚本的内容如下

umask 077

domain=$1

user=$2

group=$3

if [ ! -d /home/domain/user ] ; then

mkdir /home/domain/user

chown user /home/domain/

chgrp group /home/domain/

if

分配权限

#chmod 777 /home/ERIC/buildhome

然后就重启samba服务

#service smb restart

到此就完成了一个samba的自动化了!希望在几篇关于samba的文章当中会对大家搭建windows与linux的异构网络有所帮助.同时也希望大家一直以来对本站的关注.

  1. share安全级别模式 客户端登录samba服务器,不需要输入用户名和密码就可以浏览samba服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba服务器的安全性。 (2)user安全级别模式 客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。 (3)server安全级别模式 客户端需要将用户名和密码,提交到指定的一台samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问。 (4)domain安全级别模式 如果samba服务器加入windows域环境中,验证工作服将由windows域控制器负责,domain级别的samba服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows域滴。 (5)ads安全级别模式 当samba服务器使用ads安全级别加入到windows域环境中,其就具备了domain安全级别模式中所有的功能并可以具备域控制器的功能。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档