Как я могу получить доступ к файловому системному файлу Windows через Ubuntu 17.10 с именем пользователя и паролем? [dубликат]

Я использую Ubuntu 11.10 и пытаюсь установить сервер freenas. У меня есть сервер, на котором можно делиться cifs и nfs без везения.

Я попытался smbmount //192.168.1.### /mnt/

Я не новичок в Ubuntu, но я нигде не располагаю сильным пользователем, поэтому я бы предпочел вариант GUI, если он доступен.

Как подключить share cifs в 11.10?

56
задан 9 August 2017 в 01:52

14 ответов

Существует определенная проблема, возможная и очень расстраивающая, когда версии CIF / SMB не совместимы между Linux и Windows. В этом случае вы можете просто сделать небольшой chnage в строке fstab, добавив «vers = 2.1». Итак, если Windows или SMB-сервер находится по IP-адресу 192.168.1.1 /etc/fstab //192.168.1.1/SharedFolder/ /mnt/linux_smb cifs vers=2.1,username=winuser,password=TopSecret 0 0 Шаги 2, 3 и 4 остаются такими же, как в предыдущем ответе.
2
ответ дан 17 July 2018 в 16:32

, как работают различные методы монтажа, но вы можете захотеть рассмотреть

, если вы не хотите вводить свои учетные данные прямо в / etc / fstab, вы можете использовать опцию mount вместо этого: credentials = / your / path / here / .credentials

должно содержать имя пользователя = msusername password = mspassword

Сохраните файл и выйдите из редактора выбора.

должны быть изменены на chmod 600

, если у вас есть зашифрованный домашний каталог и хотите, чтобы ваш монтир был включен при загрузке, обязательно разместите файл вне вашего домашнего каталога. в / etc / or / media / может быть подходящим и легко запоминающимся местом.

0
ответ дан 17 July 2018 в 16:32

Я собрал небольшой скрипт (он предназначен только для Fedora) для монтирования файловой системы CIFS из командной строки и создания / удаления тестового файла. Может быть полезно:

#!/bin/bash # Passes https://www.shellcheck.net/ set -o nounset # See # https://wiki.samba.org/index.php/Mounting_samba_shares_from_a_unix_client # https://access.redhat.com/solutions/448263 # and also # https://serverfault.com/questions/309429/mount-cifs-credentials-file-has-special-character # One needs to run "yum install cifs-utils" to have the kernel module, man page # and other stuff. rpm --query cifs-utils > /dev/null if [[ $? != 0 ]]; then echo "Package cifs-utils is not installed -- exiting" >&2 exit 1 else ver=$(rpm --query cifs-utils) echo "Package $ver exists ... good!" >&2 fi # Where to find credentials? Use the "credential file" approach, which # we call "authfile". Example content (w/o the leading #) below. # Make sure there are no spaces around '=' (this is different than # for "smbclient" which can deal with spaces around '='.) # ----8<------8<---------------- # username=prisoner # password=KAR120C # domain=VILLAGE # ----8<------8<---------------- # Trailing empty lines will lead to (harmless) error messages # "Credential formatted incorrectly: (null)" authfile='/etc/smb.passwd' # Make sure read permissions are restricted!! # Server to contact. # In the UNC path, we will use DNS name instead of the (more correct?) # NetBIOS name. # mount.cifs manpage says: "To mount using the cifs client, a tcp name # (rather than netbios name) must be specified for the server." server_dns=thedome.example.com # The name of the connecting client, just to be sure (probably useless) client_nbs=$(hostname --short | tr '[:lower:]' '[:upper]') if [[ -z $client_nbs ]]; then client_nbs=UNKNOWN fi # Connect to a certain service (which is a fileservice) # and then switch to the given directory. # Instead of appending $directory to form the complete UNC # (Uniform Naming Convention) path, one could also use the option # "prefixpath". # If there is no need to mount a subdirectory of the service, # the UNC would just be unc="//$server_dns/$service_name" service_name='information' directory='PERSONALDATA' unc="//$server_dns/$service_name/$directory" # Finally, we will mount the CIFS filesystem here (the # permissions on that node are not directly of interest) mntpoint=/mnt/portal if [[ ! -d "$mntpoint" ]]; then mkdir "$mntpoint" if [[ $? != 0 ]]; then echo "Could not create mountpoint '$mntpoint' -- exiting" >&2 exit 1 fi fi # Only this user will be able to access the mounted CIFS filesystem user=number6 group=number6 # Try to mount this so that only user "number6" can access it mount -t cifs \ "$unc" \ "$mntpoint" \ --read-write \ --verbose \ -o "credentials=$authfile,uid=$user,gid=$group,netbiosname=$client_nbs,file_mode=0660,dir_mode=0770" res=$? if [[ $res != 0 ]]; then echo "Mount failed!" >&2 echo "Return code $res; more info may be in kernel log or daemon log" >&2 echo "Try 'journalctl SYSLOG_FACILITY=0' or 'journalctl SYSLOG_FACILITY=3'" >&2 echo "...exiting" >&2 exit 1 fi # Check permissions on the mount point stat=$(stat --format="group=%G user=%U access=%A" "$mntpoint") soll="group=$group user=$user access=drwxrwx---" if [[ $stat != "$soll" ]]; then echo "Incorrect permissions on root of '$mntpoint'" >&2 echo "Expected: $soll" >&2 echo "Obtained: $stat" >&2 echo "...exiting" >&2 umount "$mntpoint" exit 1 fi # CD to the mountpoint to be sure cd "$mntpoint" if [[ $? != 0 ]]; then echo "Could not cd to '$mntpoint'" >&2 exit 1 fi # CD to directory TEST which must exist (change as appropriate) newcd="$mntpoint/TEST" if [[ ! -d "$newcd" ]]; then echo "Directory '$newcd' not found - can't test!" >&2 echo "...exiting" >&2 exit 1 fi cd "$newcd" if [[ $? != 0 ]]; then echo "Could not cd to '$newcd'" >&2 exit 1 fi # Create a file and check the permissions testfile=$(mktemp --tmpdir="$newcd") if [[ $? != 0 ]]; then echo "Could not create temporary file in '$newcd'" >&2 exit 1 fi stat=$(stat --format="group=%G user=%U access=%A" "$testfile") soll="group=$group user=$user access=-rw-rw----" if [[ $stat != "$soll" ]]; then echo "Incorrect permissions on temporary file '$testfile'" >&2 echo "Expected: $soll" >&2 echo "Obtained: $stat" >&2 echo "...exiting" >&2 exit 1 fi /bin/rm "$testfile" echo "Mounted '$unc' on '$mntpoint'" >&2
1
ответ дан 17 July 2018 в 16:32

1) Моя доля samba показана в Caja (ubuntu 16.04 "explorer") как

smb://thinkpad/ddrive/

Это хороший тест литоса, нет проблем с соединением / маршрутом.

(caveat: Если вы спрашиваете caja о учетных данных паролей с вашего компьютера Windows, вам может потребоваться переключить Domain из WORKGROUP на имя машины, то есть «thinkpad». Тогда действительно должны быть указаны локальные учетные данные вашего диска .)

2) Если это работает, вот команда:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive Убедитесь, что заранее / mnt / ddrive существует как пустой каталог. Вы холод также добавляете ,password=supersecret прямо (без пробела) после имени пользователя =, но вы также можете дождаться запроса, когда вы вводите команду.
4
ответ дан 17 July 2018 в 16:32

Это как указано в map7, но если вы не хотите использовать права root при каждом изменении файла на диске, вам нужно будет подключиться к пользовательской папке и убедиться, что gid и uid установлены к вашему имени пользователя.

Команда, устанавливающая их:

mount -t cifs -o username=USERNAME,password=PASSWD,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share

Обратите внимание, что папка mnt была создана в ~/mnt/share вместо /mnt/share.

] Также вы можете оставить пароль = PASSWD, если вы хотите, чтобы он запрашивал вас, а не вы его в команде, которая потенциально хранится в истории вашей оболочки:

mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share
9
ответ дан 17 July 2018 в 16:32

Существует pyNeighborhood, который является gui для установки акций samba и доступен в программном центре для загрузки.

Существует хорошая статья pyNeighborhood о том, как ее настроить и используйте [.d2]

Сначала установите cifs utils

sudo apt-get install cifs-utils

В качестве альтернативы, основная команда терминала:

mount -t cifs -o username=USERNAME,password=PASSWD //192.168.1.88/shares /mnt/share

Если вы хотели бы видеть свою монтировку в Nautilus, было бы неплохо создать подпапку сначала в / media / USERNAME / например:

mkdir /media/paul/cifsShare

также, например, пароль мог бы быть скопирован в команде mount (например, также продемонстрирует режимы файлов / папок):

sudo mount -t cifs //nas-server/cifsShare /media/paul/cifsShare -o username=paulOnNAS,iocharset=utf8,file_mode=0777,dir_mode=0777,soft,user,noperm

, в этом случае вам будет предложено ввести пароль (фактически для 2 паролей) в момент установки.

прочитайте здесь документацию Samba о том, как это сделать, и правильно настройте его для запуска при запуске и т. д.

69
ответ дан 17 July 2018 в 16:32

Я не согласен с утверждением, что root всегда необходим для соединения cifs. Это правда, это всегда необходимо для CLI smbmount, но файловый менеджер, такой как nautilus, имеет возможность монтировать общий ресурс cifs, и нет необходимости быть root.

Я не использую Gnome, но У меня все еще установлен Nautilus. Запустите это в терминале, чтобы он не попытался захватить рабочий стол

$ nautilus --no-desktop &

. В Ubuntu 16.04 в левом дереве меню «Подключиться к серверу» внизу. Нажмите на это, предложение типа «smb: //foo.example.com». smb - это старое слово для «cifs», и если вы положите на свой сервер и поделитесь с smb: // в начале, соединение действительно сработает! Обещаю. Если ваш ресурс является именованным, он необходим после косой черты, «smb: //foo.example.com/myshare».

Я использовал другие файловые менеджеры одинаково. Протокол должен быть «smb: //».

3
ответ дан 17 July 2018 в 16:32
Существует определенная проблема, возможная и очень расстраивающая, когда версии CIF / SMB не совместимы между Linux и Windows. В этом случае вы можете просто сделать небольшой chnage в строке fstab, добавив «vers = 2.1». Итак, если Windows или SMB-сервер находится по IP-адресу 192.168.1.1 /etc/fstab //192.168.1.1/SharedFolder/ /mnt/linux_smb cifs vers=2.1,username=winuser,password=TopSecret 0 0 Шаги 2, 3 и 4 остаются такими же, как в предыдущем ответе.
2
ответ дан 23 July 2018 в 17:24

, как работают различные методы монтажа, но вы можете захотеть рассмотреть

, если вы не хотите вводить свои учетные данные прямо в / etc / fstab, вы можете использовать опцию mount вместо этого: credentials = / your / path / here / .credentials

должно содержать имя пользователя = msusername password = mspassword

Сохраните файл и выйдите из редактора выбора.

должны быть изменены на chmod 600

, если у вас есть зашифрованный домашний каталог и хотите, чтобы ваш монтир был включен при загрузке, обязательно разместите файл вне вашего домашнего каталога. в / etc / or / media / может быть подходящим и легко запоминающимся местом.

0
ответ дан 23 July 2018 в 17:24

Я собрал небольшой скрипт (он предназначен только для Fedora) для монтирования файловой системы CIFS из командной строки и создания / удаления тестового файла. Может быть полезно:

#!/bin/bash # Passes https://www.shellcheck.net/ set -o nounset # See # https://wiki.samba.org/index.php/Mounting_samba_shares_from_a_unix_client # https://access.redhat.com/solutions/448263 # and also # https://serverfault.com/questions/309429/mount-cifs-credentials-file-has-special-character # One needs to run "yum install cifs-utils" to have the kernel module, man page # and other stuff. rpm --query cifs-utils > /dev/null if [[ $? != 0 ]]; then echo "Package cifs-utils is not installed -- exiting" >&2 exit 1 else ver=$(rpm --query cifs-utils) echo "Package $ver exists ... good!" >&2 fi # Where to find credentials? Use the "credential file" approach, which # we call "authfile". Example content (w/o the leading #) below. # Make sure there are no spaces around '=' (this is different than # for "smbclient" which can deal with spaces around '='.) # ----8<------8<---------------- # username=prisoner # password=KAR120C # domain=VILLAGE # ----8<------8<---------------- # Trailing empty lines will lead to (harmless) error messages # "Credential formatted incorrectly: (null)" authfile='/etc/smb.passwd' # Make sure read permissions are restricted!! # Server to contact. # In the UNC path, we will use DNS name instead of the (more correct?) # NetBIOS name. # mount.cifs manpage says: "To mount using the cifs client, a tcp name # (rather than netbios name) must be specified for the server." server_dns=thedome.example.com # The name of the connecting client, just to be sure (probably useless) client_nbs=$(hostname --short | tr '[:lower:]' '[:upper]') if [[ -z $client_nbs ]]; then client_nbs=UNKNOWN fi # Connect to a certain service (which is a fileservice) # and then switch to the given directory. # Instead of appending $directory to form the complete UNC # (Uniform Naming Convention) path, one could also use the option # "prefixpath". # If there is no need to mount a subdirectory of the service, # the UNC would just be unc="//$server_dns/$service_name" service_name='information' directory='PERSONALDATA' unc="//$server_dns/$service_name/$directory" # Finally, we will mount the CIFS filesystem here (the # permissions on that node are not directly of interest) mntpoint=/mnt/portal if [[ ! -d "$mntpoint" ]]; then mkdir "$mntpoint" if [[ $? != 0 ]]; then echo "Could not create mountpoint '$mntpoint' -- exiting" >&2 exit 1 fi fi # Only this user will be able to access the mounted CIFS filesystem user=number6 group=number6 # Try to mount this so that only user "number6" can access it mount -t cifs \ "$unc" \ "$mntpoint" \ --read-write \ --verbose \ -o "credentials=$authfile,uid=$user,gid=$group,netbiosname=$client_nbs,file_mode=0660,dir_mode=0770" res=$? if [[ $res != 0 ]]; then echo "Mount failed!" >&2 echo "Return code $res; more info may be in kernel log or daemon log" >&2 echo "Try 'journalctl SYSLOG_FACILITY=0' or 'journalctl SYSLOG_FACILITY=3'" >&2 echo "...exiting" >&2 exit 1 fi # Check permissions on the mount point stat=$(stat --format="group=%G user=%U access=%A" "$mntpoint") soll="group=$group user=$user access=drwxrwx---" if [[ $stat != "$soll" ]]; then echo "Incorrect permissions on root of '$mntpoint'" >&2 echo "Expected: $soll" >&2 echo "Obtained: $stat" >&2 echo "...exiting" >&2 umount "$mntpoint" exit 1 fi # CD to the mountpoint to be sure cd "$mntpoint" if [[ $? != 0 ]]; then echo "Could not cd to '$mntpoint'" >&2 exit 1 fi # CD to directory TEST which must exist (change as appropriate) newcd="$mntpoint/TEST" if [[ ! -d "$newcd" ]]; then echo "Directory '$newcd' not found - can't test!" >&2 echo "...exiting" >&2 exit 1 fi cd "$newcd" if [[ $? != 0 ]]; then echo "Could not cd to '$newcd'" >&2 exit 1 fi # Create a file and check the permissions testfile=$(mktemp --tmpdir="$newcd") if [[ $? != 0 ]]; then echo "Could not create temporary file in '$newcd'" >&2 exit 1 fi stat=$(stat --format="group=%G user=%U access=%A" "$testfile") soll="group=$group user=$user access=-rw-rw----" if [[ $stat != "$soll" ]]; then echo "Incorrect permissions on temporary file '$testfile'" >&2 echo "Expected: $soll" >&2 echo "Obtained: $stat" >&2 echo "...exiting" >&2 exit 1 fi /bin/rm "$testfile" echo "Mounted '$unc' on '$mntpoint'" >&2
1
ответ дан 23 July 2018 в 17:24

1) Моя доля samba показана в Caja (ubuntu 16.04 "explorer") как

smb://thinkpad/ddrive/

Это хороший тест литоса, нет проблем с соединением / маршрутом.

(caveat: Если вы спрашиваете caja о учетных данных паролей с вашего компьютера Windows, вам может потребоваться переключить Domain из WORKGROUP на имя машины, то есть «thinkpad». Тогда действительно должны быть указаны локальные учетные данные вашего диска .)

2) Если это работает, вот команда:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive Убедитесь, что заранее / mnt / ddrive существует как пустой каталог. Вы холод также добавляете ,password=supersecret прямо (без пробела) после имени пользователя =, но вы также можете дождаться запроса, когда вы вводите команду.
4
ответ дан 23 July 2018 в 17:24
  • 1
    Мне потребовалось немного времени, чтобы выяснить, где я могу ввести путь smb: // .... в Nemo / Linux Mint 18, но на самом деле это довольно просто: если поле ввода пути не отображается, включите его в Просмотреть меню. – Pedi T. 10 August 2017 в 19:32

Это как указано в map7, но если вы не хотите использовать права root при каждом изменении файла на диске, вам нужно будет подключиться к пользовательской папке и убедиться, что gid и uid установлены к вашему имени пользователя.

Команда, устанавливающая их:

mount -t cifs -o username=USERNAME,password=PASSWD,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share

Обратите внимание, что папка mnt была создана в ~/mnt/share вместо /mnt/share.

] Также вы можете оставить пароль = PASSWD, если вы хотите, чтобы он запрашивал вас, а не вы его в команде, которая потенциально хранится в истории вашей оболочки:

mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share
9
ответ дан 23 July 2018 в 17:24
  • 1
    Сделайте более полный ответ, с некоторыми примерами, и я продолжу :) – storm 21 December 2016 в 19:02

Существует pyNeighborhood, который является gui для установки акций samba и доступен в программном центре для загрузки.

Существует хорошая статья pyNeighborhood о том, как ее настроить и используйте [.d2]

Сначала установите cifs utils

sudo apt-get install cifs-utils

В качестве альтернативы, основная команда терминала:

mount -t cifs -o username=USERNAME,password=PASSWD //192.168.1.88/shares /mnt/share

Если вы хотели бы видеть свою монтировку в Nautilus, было бы неплохо создать подпапку сначала в / media / USERNAME / например:

mkdir /media/paul/cifsShare

также, например, пароль мог бы быть скопирован в команде mount (например, также будут демонстрировать режимы файлов / папок):

sudo mount -t cifs //nas-server/cifsShare /media/paul/cifsShare -o username=paulOnNAS,iocharset=utf8,file_mode=0777,dir_mode=0777,soft,user,noperm

, в этом случае вам будет предложено ввести пароль (фактически для 2 паролей) в момент установки.

прочитайте здесь документацию Samba о том, как это сделать, и правильно настройте его для запуска при запуске и т. д.

69
ответ дан 23 July 2018 в 17:24
  • 1
    есть ли способ установить долю samba без 1) жесткого кодирования пароля и 2) быть root? – mcExchange 25 January 2016 в 18:18
  • 2
    @mcExchange root необходим, и вы можете использовать файл учетных данных smb для защиты ваших учетных данных – adampski 29 February 2016 в 17:14
  • 3
    также убедитесь, что у вас установлен cifs-utils: sudo apt-get install cifs-utils. Для получения дополнительной информации эта утилита ubuntu help doc отличная. – Marco Pashkov 31 March 2016 в 08:20
  • 4
    pyNeighborhood дает мне ошибку сегментации при запуске по ssh в ubuntu 14.04 – Pavel Niedoba 9 May 2016 в 01:12
  • 5
    @MarcoPashkov cifs-utils - это то, что меня возбуждало. Ничего из этого не получилось бы. Это должно быть непосредственно включено в ответ. – rubynorails 5 July 2016 в 22:32

Я не согласен с утверждением, что root всегда необходим для соединения cifs. Это правда, это всегда необходимо для CLI smbmount, но файловый менеджер, такой как nautilus, имеет возможность монтировать общий ресурс cifs, и нет необходимости быть root.

Я не использую Gnome, но У меня все еще установлен Nautilus. Запустите это в терминале, чтобы он не попытался захватить рабочий стол

$ nautilus --no-desktop &

. В Ubuntu 16.04 в левом дереве меню «Подключиться к серверу» внизу. Нажмите на это, предложение типа «smb: //foo.example.com». smb - это старое слово для «cifs», и если вы положите на свой сервер и поделитесь с smb: // в начале, соединение действительно сработает! Обещаю. Если ваш ресурс является именованным, он необходим после косой черты, «smb: //foo.example.com/myshare».

Я использовал другие файловые менеджеры одинаково. Протокол должен быть «smb: //».

3
ответ дан 23 July 2018 в 17:24

Другие вопросы по тегам:

Похожие вопросы: