如何为NT Service\SQLAgent$SQLTEAM2013授权访问Debian10 Samba共享以完成TFS备份
我来帮你解决这个问题——因为你的Samba是独立服务器(未加入域),Windows那边的NT Service\SQLAgent$SQLTEAM2013本地服务账号没法被Samba直接识别,所以得通过账号映射或者Windows端配置访问凭证的方式来搞定,下面是具体操作步骤:
方法一:用Samba账号映射功能(推荐)
这个方法能让Samba直接把Windows的服务账号映射到你Debian服务器上的本地用户,不用在Windows端额外配置凭证。
在Debian上创建对应本地用户
先建一个和Windows服务账号对应的本地用户(比如叫sqlagent,名字可以自定义),同时创建对应的Samba用户:# 创建本地用户,设置shell为nologin(不需要登录权限) useradd -m -s /sbin/nologin sqlagent # 创建Samba用户并设置密码(这个密码记好,后续可能用得到) smbpasswd -a sqlagent配置Samba的账号映射规则
编辑你的/etc/samba/smb.conf文件,在[global]区块里添加:username map = /etc/samba/smbusers然后创建
/etc/samba/smbusers文件,添加映射规则:sqlagent = NT Service\SQLAgent$SQLTEAM2013格式是
Samba用户名 = Windows用户名,Windows用户名里的反斜杠直接写单个就行。给Samba用户授予共享目录权限
先确保/server目录的权限正确,你可以把目录的组权限开放给sqlagent,或者直接修改目录所有者:# 把目录的组设置为sqlagent所在的组,同时开放组读写权限 chown -R juan:sqlagent /server chmod -R g+rw /server接着在
smb.conf的[server]区块里,把valid users更新为包含sqlagent:valid users = juan sqlagent重启Samba服务生效
systemctl restart smbd nmbd
方法二:在Windows端配置Samba共享访问凭证
这个方法不用改Samba配置,只需要在Windows服务器上把访问Samba共享的凭证设置为你已有的Samba用户(比如juan)。
以管理员身份打开Windows命令提示符
运行以下命令添加访问凭证:cmdkey /add:<Samba服务器IP或主机名> /user:juan /pass:<juan的Samba密码>比如你的Samba服务器IP是10.0.2.10,命令就是:
cmdkey /add:10.0.2.10 /user:juan /pass:your_juan_password_here测试备份任务
现在重新运行TFS的备份任务,SQL Agent服务会自动使用你配置的凭证访问Samba共享。
验证权限配置是否成功
不管用哪种方法,都可以在Windows上用runas命令模拟SQL服务账号测试访问:
runas /user:"NT Service\SQLAgent$SQLTEAM2013" "cmd.exe"
在弹出的命令提示符里,运行:
dir \\<Samba服务器IP>\server
如果能正常列出目录内容,说明权限配置成功了。
内容的提问来源于stack exchange,提问作者zeros

