你能给我一个使用pysmb库连接到某个samba服务器的例子吗?我已经阅读了类smb.SMBConnection.SMBConnection(用户名,密码,my_name,remote_name,domain ='',use_ntlm_v2 = True),但我无法弄清楚如何使用它
所以我正在尝试将一个文件从android设备写入windows共享文件夹.我正在使用最新版本的JCIFS和显示可用网络共享的代码正常工作.所以我假设JCIFS和我的局域网,WiFi等一切正常.这是文件上传的代码(实际上我只是想写一个文件Sring to a File):
public boolean save2Samba(String text, String fileName) {
try {
// My Windows shares doesn't require any login/password
// String name="login";//my windows username
// String password="password1";//my windows password
// sSambaFolder contains a path like MYPC/E/SharedFolderName/
String url = "smb://" + sSambaFolder.toLowerCase()+fileName;
SmbFile file = null;
try {
// assume ANONYMOUS is my case but there is no description of this in JCIFS API
NtlmPasswordAuthentication auth = NtlmPasswordAuthentication.ANONYMOUS;
file = new SmbFile(url, auth);
android.util.Log.i("TestApp",url);
// output …Run Code Online (Sandbox Code Playgroud) 我在使用Kerberos身份验证时遇到一些问题,无法使用JCifs执行文件管理(Kerberos扩展版本1.3.17)
这是我目前的krb5.conf配置:
[libdefaults]
default_realm = <REALM_NAME_UPPERCASE>
udp_preference_limit = 1
[realms]
<REALM_NAME_UPPERCASE> = {
kdc = <DOMAIN_NAME_UPPERCASE>:88
admin_server = <DOMAIN_NAME_UPPERCASE>
default_domain = <DOMAIN_NAME_UPPERCASE>
}
[domain_realm]
.<domain_name> = <REALM_NAME_UPPERCASE>
<domain_name> = <REALM_NAME_UPPERCASE>
[appdefaults]
kinit = {
renewable = true
forwardable = true
}
Run Code Online (Sandbox Code Playgroud)
这是代码验证用户,然后尝试在网络中的文件服务器上查找文件:
public static void main (String[] args) throws Exception {
Subject subject = new Subject();
System.setProperty("java.security.krb5.conf", "C:/krb5.conf");
System.setProperty("sun.security.krb5.debug", "true");
Map<String, Object> state = new HashMap<String, Object>();
state.put("javax.security.auth.login.name", "USERNAME");
state.put("javax.security.auth.login.password", "PASSWORD".toCharArray());
Map<String, Object> options = new HashMap<String, Object>();
options.put("debug", "true"); …Run Code Online (Sandbox Code Playgroud) 大约每10年一次,当我迁移到新主机时,我需要与SAMBA奋斗,然后压制创伤性记忆,直到下次必须重新学习它时:S因此,这是一个新的问题。
我有一个共享有两个共享的Ubuntu VM-一个(“ Public”)是不安全的,另一个(“ Public2”)是安全的,目的是只能由在Ubuntu框中定义的经过身份验证的用户帐户访问。两种共享都出现在XP和Win8.1的Windows资源管理器中。但是,我无法终生确定如何登录安全的Public2共享。
抛开Windows客户端,我尝试使用smbclient循环返回到框,该框会产生以下输出,指示它无法进行身份验证:
michael@ubuntu:~$ smbclient //ubuntu/Public2 --user=michael%mypasswd
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.6-Ubuntu]
tree connect failed: NT_STATUS_ACCESS_DENIED
Run Code Online (Sandbox Code Playgroud)
同时,可以访问无抵押份额。我错过了什么(可能非常明显)?我没有正确指定用户名吗?
/var/lib/samba/usershares/public (unsecure, works) contains:
#VERSION 2
path=/home/michael/Public
comment=
usershare_acl=S-1-1-0:F
guest_ok=y
sharename=Public
Run Code Online (Sandbox Code Playgroud)
/ var / lib / samba / usershares / public2(我无法访问)包含:
#VERSION 2
path=/home/michael/Public2
comment=
usershare_acl=S-1-1-0:F
guest_ok=n
sharename=Public2
Run Code Online (Sandbox Code Playgroud) 我建造了一个高山,s6和桑巴的码头集装箱.一切看起来都不错,但是当它开始smbd时它会在没有任何日志文件的情况下崩溃.
added interface eth0 ip=172.17.0.6 bcast=172.17.255.255
netmask=255.255.0.0
loaded services
Netbios name list:-
my_netbios_names[0]="ADD372A5C9D7"
INFO: Profiling support unavailable in this build.
Standard input is not a socket, assuming -D option
Becoming a daemon.
exit_daemon: STATUS=daemon failed to start: Failed to create session, error code 1
Run Code Online (Sandbox Code Playgroud)
s6运行服务:
#!/usr/bin/execlineb -P
smbd --foreground --log-stdout
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM alpine:edge
# env variables
ENV S6_VERSION v1.21.2.1
# install s6-overlay
ADD https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-amd64.tar.gz /tmp/
RUN tar xzf /tmp/s6-overlay-amd64.tar.gz -C /
RUN apk add --no-cache \
bash shadow \
samba-common-tools …Run Code Online (Sandbox Code Playgroud) 我在 mac 上运行 Docker 版本 17.09.0-ce-mac35。我想让一个 samba 服务器作为 docker 容器的一部分运行,然后从我的 mac 连接到正在运行的 samba 服务器。为此,我正在使用https://github.com/dperson/samba。
我像这样运行 samba 服务器:
? ~ sudo docker run -it -p 139:139 -p 445:445 -v /Users/anthony:/mount -d dperson/samba \
-u "example1;badpass" \
-u "example2;badpass" \
-s "public;/share" \
-s "users;/srv;no;no;no;example1,example2" \
-s "example1 private;/example1;no;no;no;example1" \
-s "example2 private;/example2;no;no;no;example2"
Run Code Online (Sandbox Code Playgroud)
我可以猛击容器并在/mount. 但是,当我尝试在 Finder > Go > Connect to server 中从 mac 连接到 samba 服务器时,我在连接时遇到错误。我尝试了以下方法:
smb://0.0.0.0
smb://localhost
smb://0.0.0.0/public
smb://localhost/public
smb://<docker_ip>/
smb://<docker_ip>/public
Run Code Online (Sandbox Code Playgroud)
他们都没有工作。有什么我想念的吗?或者是否有另一种方法可以在 mac 上运行 smb 共享以进行测试/播放?
我希望我的HTML页面链接到Samba共享中的目录(协议SMB/CIFS Windows共享).在我写的HREF中file://server/Share2/folder3
大多数浏览器处理得很好(挂载共享并在文件夹3上打开文件管理器),除了Internet Explorer 7和Internet Explorer 8,它们Permission denied甚至没有要求输入密码.我应该在HREF中为IE7/8写什么才能打开folder3?
笔记:
folder3的部分.folder3的部分.Java中是否有开放的SMB/CIFS服务器实现?我能找到的唯一一个实现是Alfresco,但它不是开源的.
一个相关的问题:假设没有这样的实现,我很惊讶没有一个库甚至提供SMB的子集,例如用于简单的文件传输.我的直觉是,实现一个简单的服务器并不是很困难(但实际上很难实现像Samba这样的完整解决方案).似乎没有人这样做的事实让我怀疑它比我猜的更难.是否没有实施,因为它很难或因为没有人关心?
我现在正在使用GSSAPI来破解跨平台应用程序.虽然我不清楚UPN和SPN之间的区别.
开发环境是CentOS 6.4上的Samba4 AD DC服务器,Windows服务器2008 R2是域中的成员盒,例如EXAMPLE.COM(您可能很好奇为什么不直接使用Win2008作为DC.正如我之前所说,应用程序是跨平台的,我现在正在测试这个设置.正常的Win DC-Linux MEM设置工作正常.).我创建了一个新用户foobar:users来运行该应用程序.当我使用foobar@EXAMPLE.COMUPN来验证针对Kerberos的应用程序时,我一直在接收
Kerberos:Principal可能不会充当服务器错误
在Samba maillist上的一个帖子之后,我想我应该app/dc.example.com为UPN 创建一个服务主体名称samba-tool
samba-tool spn add app/dc.example.com foobar
Run Code Online (Sandbox Code Playgroud)
这次我会收到另一个错误
Samba4 KDC - 在hdb中找不到这样的条目
我的问题是UPN和SPN之间有什么区别?通过samba-tool spn list foobar,它说foobar 具有 servicePrincipalName app/dc.example.com.我怎么能将UPN与SPN联系起来?
非常感谢你.
我在 ubuntu 服务器 16.04 上有一个共享文件夹。VSCode Insiders 在本地文件夹上工作正常,但在 samba 共享文件夹上,git 集成失败,忽略现有的 .git 文件夹,如下图所示。共享文件夹具有完全读/写的正确设置,并且没有隐藏 unix 点文件夹/文件。我尝试更改 unix 文件夹访问权限的不同组合,但没有成功。尝试将共享文件夹映射到 Windows 上的驱动器号,但没有成功。
以防万一它可能是相关的: samba 服务器仅在客户端使用服务器的 IP 地址(如 \\192.168.1.100\shared-folder)时接受连接(尝试使用服务器主机名(如 \\server-name\shared-folder)访问,失败)
任何建议将不胜感激。
我尝试使用 git bash,现在我发现这是一个与 git 相关的问题:
太长了;博士
samba 服务器是我的 Windows 10 电脑上的虚拟机作为主机。我正在使用它来开发和测试几种网络应用程序。共享文件夹仅用于访问源代码并使用现代代码编辑器进行更改。Git 安装在我的 Windows 电脑上,并且在 VSCode 终端上启用了 git bash。VSCode 终端“git status”命令也失败,将所有项目文件列为未跟踪。