błąd instalacji 13 = Odmowa uprawnień

44

Jeden z moich serwerów jest skonfigurowany do automatycznego montowania katalogu Windows za pomocą fstab. Jednak po ostatnim ponownym uruchomieniu przestał działać. Linia w fstab to:

//myserver/myfolder /mnt/backup cifs credentials=home/myfolder/.Smbcredentials

.SmbcredentialsPlik jest:

username=myaccount
password=mypassword
domain=mydomain

Robię mount -ai otrzymuję mount error 13 = Permission denied. Jeśli zrobię to wystarczająco, zablokuje to moje konto Windows, więc wiem, że próbuje. Sprawdziłem, czy moje hasło jest prawidłowe.

Co ja robię źle?

Opały
źródło
4
Czy mógłbyś spróbować zamontować z linii poleceń mount -t cifs //myserver/myfolder /mnt/backup --verbose -o credentials=home/myfolder/.Smbcredentialsi dodać do swojego pytania informacje o debugowaniu (odkażone)?
bsd
Jaką dystrybucję i wersję cifs-utilszainstalowałeś? Miałem już ten problem i uważam, że był on spowodowany aktualizacją.
slm

Odpowiedzi:

44

Kilka rzeczy do sprawdzenia. Robię coś podobnego i możesz przetestować zamontować go bezpośrednio za pomocą mountpolecenia, aby upewnić się, że wszystko działa poprawnie.

Uprawnienia do pliku poświadczeń

Upewnij się, że ten plik ma odpowiednie uprawnienia.

$ sudo ls -l /etc/smb_credentials.txt 
-rw-------. 1 root root 54 Mar 24 13:19 /etc/smb_credentials.txt

Pełne mocowanie

Możesz przekonać więcej informacji, mountkorzystając z -vprzełącznika, który często pokaże Ci, gdzie coś się dzieje.

$ sudo mount -v -t cifs //server/share /mnt \
    -o credentials=/etc/smb_credentials.txt

Wynikiem tego wyniku, jeśli działa:

mount.cifs kernel mount options: ip=192.168.1.14,unc=\\server\share,credentials=/etc/smb_credentials.txt,ver=1,user=someuser,domain=somedom,pass=********

Sprawdź dzienniki

Po uruchomieniu powyższej komendy mount zajrzyj do plików dmesgi /var/log/messageslub w /var/log/syslogposzukiwaniu komunikatów o błędach, które mogły zostać wygenerowane podczas próby mount.

Rodzaj zabezpieczenia

Możesz przekazać wiele dodatkowych opcji za pomocą -o ..przełącznika do montażu. Te opcje są specyficzne dla technologii, więc w twoim przypadku dotyczą one mount.cifskonkretnie. Spójrz na mount.cifsstronę podręcznika, aby uzyskać więcej informacji na temat wszystkich opcji, które możesz przekazać.

Podejrzewam, że brakuje ci opcji sec=.... W szczególności jedna z tych opcji:

   sec=
       Security mode. Allowed values are:
       ·   none - attempt to connection as a null user (no name)
       ·   krb5 - Use Kerberos version 5 authentication
       ·   krb5i - Use Kerberos authentication and forcibly enable packet 
           signing
       ·   ntlm - Use NTLM password hashing
       ·   ntlmi - Use NTLM password hashing and force packet signing
       ·   ntlmv2 - Use NTLMv2 password hashing
       ·   ntlmv2i - Use NTLMv2 password hashing and force packet signing
       ·   ntlmssp - Use NTLMv2 password hashing encapsulated in Raw NTLMSSP
           message
       ·   ntlmsspi - Use NTLMv2 password hashing encapsulated in Raw 
           NTLMSSP message, and force packet signing

       The default in mainline kernel versions prior to v3.8 was sec=ntlm. 
       In v3.8, the default was changed to sec=ntlmssp.

Być może trzeba ustawić sec=...opcję, aby to albo sec=ntlmalbo sec=ntlmssp.

Bibliografia

slm
źródło
1
Sprawdzanie dmesgbyło bardzo pomocne. Ta odpowiedź pochodzi z 2014 roku i od tego czasu wykorzystanie SMB1.0 przez WannaCry sprawiło, że stało się ono przestarzałe, dlatego należy dodać wersję vers=2.02.1 lub 3.0, cokolwiek obsługuje serwer, ponieważ domyślna wersja 1.0 nie będzie już obsługiwana.
Michael Plautz
1
Tylko heads-up: ponieważ folder docelowy znajduje się w systemie Windows, co często wymaga zmiany hasła co jakiś czas, hasło w pliku referencji może być nieprawidłowe. mountpolecenie nie powie ci takich szczegółów.
HongboZhu,
22

Dzięki, ale jeszcze więcej googlingów znalazło rozwiązanie. Domyślnie używał niewłaściwego typu zabezpieczeń; to polecenie działało:

$ sudo mount -t cifs //172.16.1.5/myshare/ /mnt/myshare \
    -osec=ntlmv2,domain=MYDOMAIN,username=myusername,password=mypassword
Opały
źródło
To było to! Uruchomienie mount -t cifs //10.0.0.138/usb1_1 /mnt/usbdisk -ousername=theusername,password=thepassord,file_mode=0644,dir_mode=0755,uid=rootna maszynie Fedory 25 działało dobrze, ale zakończyło się niepowodzeniem, gdy uruchomiłem dokładnie to samo polecenie na polu openwrt (Chaos Calmer 15.05.1). Dodanie sec=ntlmv2sprawiło, że również tam działało.
hlovdal
2
Przybyłem tutaj, próbując zamontować członka Debian 9 AD z nie-członka CentOS 6, i to mnie zbliżyło - w moim przypadku magia byłasec=ntlmssp
Gepard
Rozwiązaniem dla mnie było użycie domainsłowa kluczowego i podanie go oprócz nazwy użytkownika.
Jim Fell
sec = ntlmv2 ma opcję, której potrzebowałem do mojego dostępu SMB z Ubuntu 18.04 do udziału Windows 10. Dzięki, Pickle.
noel aye
12

Zetknąłem się z tym problemem i okazało się, że nie formatuje on poprawnie wartości w pliku poświadczeń. Próbowałem:

username=DOMAIN\mylogin
password=<password>
domain=FULLY.QUALIFIED.DOMAIN

Próbowałem także:

[email protected]
password=<password>
domain=FULLY.QUALIFIED.DOMAIN

I:

username=FULLY.QUALIFIED.DOMAIN\mylogin
password=<password>
domain=FULLY.QUALIFIED.DOMAIN

Raz użyłem tylko mojej nazwy użytkownika do logowania:

username=mylogin
password=<password>
domain=FULLY.QUALIFIED.DOMAIN

Udało mi się zdobyć mojego cifsa, by odnieść sukces.

Mark Salisbury
źródło
świetne wyjaśnienie!
Dima Lituiev
2

Ten dodatek działa na naukowym Linuksie 6.6 (RedHat 6.6)

edytuj /etc/fstab
utwórz plik = .credentials(np. w /etc) z następującymi szczegółami:

username=value
password=value
domain=value

//SERVER/SHARE1 /mnt/SHARE1 cifs credentials=/etc/.credentials,rw,uid=1000,gid=1000,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 
stoferontheweb
źródło
flagi file_mode i dir_mode rozwiązane dla mnie! :)
Rafael Moni