Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NC 12.0.3: Unable to mount SMB shares #6597

Closed
j-ed opened this issue Sep 21, 2017 · 75 comments
Closed

NC 12.0.3: Unable to mount SMB shares #6597

j-ed opened this issue Sep 21, 2017 · 75 comments
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap bug feature: external storage

Comments

@j-ed
Copy link
Contributor

j-ed commented Sep 21, 2017

Expected behavior

Nextcloud should be able to mount external SMB shares.

Current behavior

Nextcloud seems not able to always mount an external SMB share, provided via a Samba server, in a reliable way. The usual square in front of the share is displayed, which indicates an authentication problem, although all required information have been entered correctly. On top of the external mount screen the message "Verbindung zum Server verloren" (lost connection to server) is shown for a short moment.

I've double-checked that libsmbclient is installed and activated on the web server as recommended in other postings. Additionally I've tested access to the share using the smbclient command line tool:

# smbclient //192.168.1.11/Tmp -U "juergen"

Additionally I've written a small PHP script to check if the given SMB share can be accessed properly using the smbclient functions:

<?php
// Create new state:
$state = smbclient_state_new();

// Initialize the state with workgroup, username and password:
smbclient_state_init($state, '', 'juergen', 'XXXXX');

// Open a directory:
$dir = smbclient_opendir($state, 'smb://192.168.1.11/Tmp');

// Loop over the directory contents, print each node:
while (($entry = smbclient_readdir($state, $dir)) !== false) {
    echo "{$entry['name']} : {$entry['type']}<br>\n";
}

// Close the directory handle:
smbclient_closedir($state, $dir);

// Free the state:
smbclient_state_free($state);
?>

Everything works fine, except that it doesn't work from within Nextcloud :-( No error messages are shown in the Nextcloud log or elsewhere which gives a hint about the possible root cause of the problem.

Due to the fact that problems with external mount points appears very often I would recommend to add a kind of diagnosis function to each external mount function which allows double-check the base requirements and shows detailed information, including all steps of a mount attempt.

BTW: I've managed to created several identical mount configurations within seconds only by editing the SMB mount options of my test share. It seems that there is another issue with the external mount configuration dialog itself.

Steps to reproduce

  1. In my closed environment it is easy, but most likely in your test it isn't.

Environment

Server Configuration

OS: Linux 3.16.47
Web server: Apache2 2.4.26
PHP version: 5.6.29
Database: MariaDB 10.0.32
Nextcloud version: 12.0.3

Client Configuration

Browser: Mozilla Firefox 55.0.3
Operating system: Windows 7

@r3pek
Copy link

r3pek commented Sep 21, 2017

From my upgrade from 11.x to 12.0.3 i had this problem too. problem was solved by entering the domain in the external mount options.

@j-ed
Copy link
Contributor Author

j-ed commented Sep 21, 2017

@r3pek Thanks for the hint but I tried it with and without a domain name, I used an ip address, the servers short and FQDN name, I've written the server name in upper and lower case, etc., etc. without any success. That's weird, isn't it?!

@r3pek
Copy link

r3pek commented Sep 21, 2017

@j-ed sorry, maybe i wasn't clear enough ;)

image

I ment that "Domain" field. Not a "domain" in the "Host" field.

@j-ed
Copy link
Contributor Author

j-ed commented Sep 21, 2017

@r3pek Sorry, if it wasn't clear, I naturally tried it with the (Windows/Samba) domain name in the Domain field but it had not influence on the result.

@doc-jay
Copy link

doc-jay commented Oct 1, 2017

smb server (CENTOS 7)
nextcloud 12.03

I had the same problem. I tested it all the same way j-ed did with 'smbclient' via the command line and it all passed. I fixed my problem by putting in my smb servers domain name (which was 'home') and it got the green light on my 'external storages' config where they were red after upgrading from 12.02 to 12.03.

thanks

@j-ed
Copy link
Contributor Author

j-ed commented Oct 8, 2017

Today I've installed the smbwebclient.php script (https://sourceforge.net/projects/smbwebclient/files/) on my server and had also no problems to access files using SMB. What makes the Nextcloud app so specific that I cannot get it running?

@drhirn
Copy link

drhirn commented Oct 9, 2017

Had problems too after setting server min protocol to SMB2 on my Samba server. After disabling this option, Nextcloud was able to mount shares again.

@j-ed
Copy link
Contributor Author

j-ed commented Oct 9, 2017

@drhirn I've tested it with the default of server min protocol = LANMAN1 and also with server min protocol = SMB2 as recommended in other discussions. Due to the fact that access is possible with the smbclient command line program and also with the smbclient php-functions outside of the Nextcloud environment I assume that there is still bug in the Nextcloud implementation.

@j-ed j-ed mentioned this issue Oct 14, 2017
@alexxy
Copy link

alexxy commented Oct 22, 2017

I have same bug. Cannot mount samba shares anymore

@a-l-e-x-b
Copy link

Hi folks.
I got the same issue connecting to my freenas smb share after updating to 12.0.3.
Using "smbclient //192.168.11.121/myShare$ -U "myUser" " works fine.

Neither using IP or name doesn't help nor providing domain/workgroup.

My setup:
OS: CentOS Linux release 7.4.1708 (Core)
WebServer: httpd-2.4.6-67.el7.centos.6.x86_64
Nextcloud: 12.0.3
PHP: php70w-7.0.24-1.w7.x86_64

NAS:
Freenas 9.10.2 U6

Sniffing traffic between NC and the NAS reveals the following message:

20:23:05.410723 IP (tos 0x0, ttl 64, id 4498, offset 0, flags [DF], proto TCP (6), length 91)
192.168.99.104.445 > 192.168.99.126.55666: Flags [P.], cksum 0x0d8b (correct), seq 766:805, ack 1274, win 1040, options [nop,nop,TS val 332947403 ecr 1373316036], length 39
SMB PACKET: SMBtconX (REPLY)
SMB Command = 0x75
Error class = 0x22
Error code = 49152 (0xc000)
Flags1 = 0x88
Flags2 = 0x3
Tree ID = 65535 (0xffff)
Proc ID = 17839 (0x45af)
UID = 42148 (0xa4a4)
MID = 6 (0x6)
Word Count = 0 (0x0)
NTError = STATUS_ACCESS_DENIED
smb_bcc=0

Havin' a look into the smbd log at the nas says:
[2017/10/26 20:44:02.869547, 2, pid=35643, effective(0, 0), real(0, 0)] ../source3/smbd/service.c:319(create_connection_session_info)
guest user (from session setup) not permitted to access this share (myShare$)

Any help appreciated.

Thanks in advance.
Regards,
Alex

@alexxy
Copy link

alexxy commented Nov 1, 2017

Also its problem that its not possible to downgrade nextcloud to previos version (12.0.2 or so)

@nunocatarino
Copy link

same bug here.

@tsopanid
Copy link

same here

@brando-online
Copy link

brando-online commented Nov 27, 2017

I know it's not a true resolution to the problem, but if all the components/packages are installed on your machine.. you can mount the network shares via /etc/fstab - this will auto-mount them at boot.

In Nextcloud, it will see these the network mounts as local storage and it easy and quick to setup this way.

I used this walk thru: https://wiki.ubuntu.com/MountWindowsSharesPermanently

@nunocatarino
Copy link

nunocatarino commented Nov 29, 2017

@brando-online
thx for your idea.
solve temporary my problem

@alexxy
Copy link

alexxy commented Dec 26, 2017

Any idea when this issue will be fixed? Currently on of NC features totaly br0ken (i tryed 12.0.x , x>2 and 13.0.0 beta's)

@nunocatarino
Copy link

Is this normal?
Since Setember to correct a bug?
I'm new in nextcloud, i always use owncloud since the beginning and i'm starting to regret the change.

@FaySmash
Copy link

FaySmash commented Jan 5, 2018

I have the same problem on my setup too, since 16 months (since I use nextcloud)

works:
nc

doesn't work:
nc2

So I can only access sub-directorys of samba shares, not the share directly. Pretty annoying because I'd like to access the /C$ share of my Windows Server sometimes.

I've Nextcloud 13.0beta4 is running on Ubuntu Server 16.04 LTS on HyperV on Windows Server 2016.14393.1944

calling out @icewind1991

@icewind1991
Copy link
Member

There seems to be multiple separate issues being reported here.

To help debug smb issues you can clone https://github.com/icewind1991/SMB, run composer install, edit example.php with the relevant smb details and run example.php

@twrhills
Copy link

I have this same issue since at least 12.0.3. Feedback below is based on 12.0.4.

I found that what is failing on my particular set up is the auth file being provided via the /proc/self/fd/3

When I change apps/files_external/3rdparty/icewind/smb/src/RawConnection.php function writeAuthentication to point to a physical file which I create with the content provided by getAuthStream() then everything "just works".

@icewind1991 I followed your test instructions regarding the example.php in https://github.com/icewind1991/SMB and that again "just works". Apologies for tagging you in both issues I was not confident which was the best place for this 12.0.4 feedback and wanted to avoid creating another for that version.

@icewind1991
Copy link
Member

What version of smbclient are you using?

I know that newer version of smbclient don't like my /proc trick and the library has been updated to handle it but that hasn't been backported to 12.0.x yet.

@icewind1991
Copy link
Member

You can try and see if #7774 fixes the problem

@twrhills
Copy link

Thank you @icewind1991 after some quick tests it appears as if #7774 does indeed fix the issue for us.

@jaydee99
Copy link

Hi,

I'm also having the same problem : i can't use SMB shares in active directory domain...

How do you apply the fixes in #7774 please ?

Thanx !

@enoch85
Copy link
Member

enoch85 commented Jan 24, 2018

@jaydee99 It's included in the latest maintenance releases. So just upgrade to the latest version of Nextcloud and try if it works. Please report back here if it does.

Thanks!

@FaySmash
Copy link

@enoch85 still same problem. I'm on nextcloud 13.0.0 RC 2 with External storage support 1.4.1

@nextcloud-bot nextcloud-bot removed the stale Ticket or PR with no recent activity label Jul 30, 2018
@krautter
Copy link

New recognition on Server 2008:
Earlier created share run on NC. One new created not.

@ujtwr
Copy link

ujtwr commented Aug 26, 2018

I found a solution.
When the php has only smbclient command - no libsmbclient or php smbclient module -, the php uses smbclient command by using 'shell_exec' function.

apps/files_external/3rdparty/icewind/smb/src/System.php:32
$this->smbclient = trim(which smbclient);

shell_exec function refer to enviroment variables, so we have to set "PATH".
but my case, enviromental variables was cleared because php-fpm config file has "clear_env = yes". I changed "clear_env" of php-fpm config file from "YES" to "NO". the nextcloud became to be able to access smb directory.

@ltycomputer
Copy link

ltycomputer commented Sep 26, 2018

I can connect to the share just fine, it also shows a green dot. Nothing shows up and when i click on it under external storages it just loads back to the files page and shows me my working seagate nas server. NAS server works no problem, windows share is like a no go.

smb4
smb
smb2
smb3

Same problem.
CentOS 7+ php7.0 + nginx + MySQL + smbclient

I can mount "//192.168.1.2/E/Inner" ,but not “//192.168.1.2/E” , "//192.168.1.2/E/杂" not work too.

I find a better solution:

  1. Install "cifs-utils" with yum (for CentOS 7 for me).

2.Mount SMB Share with some parameter.
For example,I modified “/etc/fstab”,add a line

//192.168.1.100/E /var/www/nextcloud/data/smb/E cifs dir_mode=0755,file_mode=0755,uid=997,gid=995,username=nextcloud,password=password,vers=3.0,rw
SMB Share is : //192.168.1.100/E
Target Folder is : /var/www/nextcloud/data/smb (I put the mount point in nextcloud data folder)
(The folder should owned by group of user runing nextcloud)
Uid and gid is from the user runing nextcloud.
Username and password is for the SMB Share.
So I mount a SMB Share and nextcloud can access it.

3.Add external storage in nextcloud,select local,path is on above(/var/www/nextcloud/data/smb/E).

At end nextcloud can access external SMB Share as a local folder.

I used to mount SMB Share directly in the nextcloud user data folders,but update file info periodically with occ file:scan is not a good idea.

@j-ed
Copy link
Contributor Author

j-ed commented Dec 29, 2018

I found a solution.
When the php has only smbclient command - no libsmbclient or php smbclient module -, the php uses smbclient command by using 'shell_exec' function.

apps/files_external/3rdparty/icewind/smb/src/System.php:32
$this->smbclient = trim(which smbclient);

shell_exec function refer to environment variables, so we have to set "PATH".
but my case, environmental variables was cleared because php-fpm config file has "clear_env = yes". I changed "clear_env" of php-fpm config file from "YES" to "NO". the nextcloud became to be able to access smb directory.

@ujtwr Thank you for that hint, but I think lowering the security settings for the whole web server shouldn't be the preferred way to go. Best would be if the path to the smbclient binary could be set as a parameter within Nextcloud?!

@j-ed
Copy link
Contributor Author

j-ed commented Dec 29, 2018

@icewind1991 I've just upgraded my test environment to Nextcloud 15 and started running some tests.
Unfortunately the reported SMB mount problem hasn't been solved yet. I though it would worse to run some more tests which might help identifying the root cause of the problem.

First I tried to run a test with your smb_test app, which shows that the php-smbclient backend is installed and used. I entered the SMB mount details and pressed the Test button but the only output was Loading share content. I checked the server log file and saw that a segmentation fault has appeared right after I ran the test.

Then I used my initial test script (see initial issue ticket) to check if it is generally possible to access a SMB share using the smbclient library. As expected that worked without any problems.

Now I downloaded your wrapper for smbclient and libsmbclient-php and followed the provided test description. I was really surprised as it showed the SMB share content on the command line and also via the web server with any problems too.

As far as I understood your smb_test app relies on your PHP wrapper functions. Now I wonder why it is possible that the wrapper itself seems to work but not your smb_test app nor Nextcloud. Do you have any ideas what else I could check to narrow down the problem.

@unbranched
Copy link

unbranched commented Feb 11, 2019

I use NC 15 in docker version, but I see that this bug is present in the normal server too. This needs to be fixed asap, as it's a feature-breaking bug and will not help Nextcloud go on production servers. Any news?

EDIT: and suddenly it works. Maybe you just need to restart the docker app, I don't know.

@selimatmaca
Copy link

Installed 15.0.4 yesterday and I could not manage to connect to a SMB share.

@selimatmaca
Copy link

selimatmaca commented Feb 15, 2019

Installed 15.0.4 yesterday and I could not manage to connect to a SMB share.

The following fixed my issue
Edit /etc/samba/smb.conf adding the lines below [global]

client min protocol = SMB2

client max protocol = SMB3

and reboot

@alarmix
Copy link

alarmix commented Feb 15, 2019

15.0.4 , all smb shares working perfectly, but the log is filled with many errors:
smbclient_state_errno(): supplied resource is not a valid smbclient state resource at /var/www/nextcloud/apps/files_external/3rdparty/icewind/smb/src/Native/NativeState.php#57

@alarmix
Copy link

alarmix commented Feb 15, 2019

If using smbclient-php, the subfolder field can't be empty at the external storage setup
Putting a \ there makes it work. This problem doesn't occur if the smbclient-php is not installed!

@j-ed
Copy link
Contributor Author

j-ed commented Feb 16, 2019

I just checked how many issues have been reported which are related to "SMB". There are currently 31 open tickets, which most likely could all be solved by fixing the Nextcloud SMB integration. I think a lot of things have been analyzed in the meantime but without getting the right attention of the Nextcloud team we won't get any further with it.

@kesselb
Copy link
Contributor

kesselb commented Feb 16, 2019

You are aware that

you using external storage, if yes which one: local/smb/sftp/...

is part of the issue template? If you take a closer look at the 276 open "SMB" tickets you may notice that your figure is wrong.

@j-ed
Copy link
Contributor Author

j-ed commented Feb 16, 2019

@kesselb Sorry, I saw only matched in the title, but you're absolutely right there were also matches in the text. I've now updated the search query and figure in my post. Nevertheless it would be nice to get these issues fixed somehow 😉

@kesselb
Copy link
Contributor

kesselb commented Feb 24, 2019

Did some tests with https://github.com/dperson/samba. Not sure if there is a general problem. Does it work for you if you test it with dperson/samba?

docker run -it -p 139:139 -p 445:445 -d dperson/samba \
            -u "example1;badpass" \
            -u "example2;badpass" \
            -s "public;/share" \
            -s "users;/srv;no;no;no;example1,example2" \
            -s "example1 private share;/example1;no;no;no;example1" \
            -s "example2 private share;/example2;no;no;no;example2" \
            -p 

@pdschandler
Copy link

Hello - I've been doing a little searching so haven't gotten a chance to test thoroughly, but I'm also here because I'm not able to connect to an SMB share on my network, and it just so happens to be a share spun up from the https://github.com/dperson/samba Docker container mentioned above. I have other SMB shares on my network hosted by macOS and Windows, and all of those are accessible just fine,

@kesselb did you discover any cause for not being able to connect to your containers from the dperson/samba container? I didn't think about this as a troubleshooting vector but I will now.

@kesselb
Copy link
Contributor

kesselb commented May 2, 2019

No. It does work for me just fine with the dperson/samba container.

@skjnldsv
Copy link
Member

No. It does work for me just fine with the dperson/samba container.

I can't get it to work though, could you share your smb nextcloud config @kesselb please? :)

@pdschandler
Copy link

I figured it out - Nextcloud's smbclient uses SMB1 by default. You must either enable SMB1 on the Samba container or edit the Samba config in next loud to connect with SMB2.

@j-ed
Copy link
Contributor Author

j-ed commented May 13, 2019

@pdschandler Can you please describe what you mean with ...or edit the Samba config in nextcloud to connect with SMB2. Where and how do I need to set a parameter?

@skjnldsv
Copy link
Member

Add to /etc/samba/smb.conf into your php docker/container

[global]
client min protocol = SMB2
client max protocol = SMB3 

@j-ed
Copy link
Contributor Author

j-ed commented May 13, 2019

@skjnldsv Yes, that's the configuration part if you want to set it for Samba in general. I'm interested in the mentioned Samba config in Nextcloud part. Have I missed a configuration option in Nextcloud?

@skjnldsv
Copy link
Member

AH, no idea. Though I can connect with the settings I added :)

@skjnldsv skjnldsv added the 0. Needs triage Pending check for reproducibility or if it fits our roadmap label Jun 12, 2019
@KrullBorg
Copy link

same here; latest nextcloud version; no attempt to connect to smb share, traced with tcpdump; no errors in nextcloud.log or apache error.log; it works using smbclient and mount

@wobblywob
Copy link

So, I had the same issue and tried every trick in the thread. For NC 17.0.1 this change fixed it for me link

@gmac0
Copy link

gmac0 commented Jan 25, 2020

So, I had the same issue and tried every trick in the thread. For NC 17.0.1 this change fixed it for me link

This fixed it for me as well. Thank you for finding that!

@skjnldsv
Copy link
Member

As the version of the software you've reported this for has reached end of life, I will close this ticket. If this is still happening after an upgrade to the latest version, feel free to reopen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap bug feature: external storage
Projects
None yet
Development

No branches or pull requests