Как мне установить общий ресурс CIFS?
Я использую Ubuntu 11.10 и пытаюсь смонтировать сервер freenas. У меня есть сервер для совместного использования в CIFS и NFS без удачи.
я пытался smbmount //192.168.1.### /mnt/
Я не новичок в Ubuntu, но далеко не опытный пользователь, поэтому я бы предпочел вариант с графическим интерфейсом, если он доступен.
Как мне смонтировать ресурс cifs в 11.10?
8 ответов
Существует pyNeighborhood, который представляет собой графический интерфейс для монтирования общих ресурсов samba и доступен для скачивания в центре программного обеспечения.
Здесь есть хорошая статья о том, как ее настроить и использовать.
Сначала установите утилиты cifs
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
также, например, пароль может быть опущен в команде монтирования (также будут показаны режимы файлов / папок):
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 о том, как это сделать, и настройте ее правильно для монтирования при запуске и т. Д.
Это как 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
,
Также вы можете не указывать пароль = ПАРОЛЬ, если хотите, чтобы он подсказывал вам, вместо того, чтобы указывать его в команде, которая потенциально сохраняется в истории вашей оболочки:
mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share
1) Моя доля самбы показывает в Caja (Ubuntu 16.04 "explorer") как
smb://thinkpad/ddrive/
Это хороший тест Lithmus, нет проблем с подключением / путём.
(Предостережение: если caja спросит вас об учетных данных пароля с вашего компьютера с Windows, вы можете переключить Домен с WORKGROUP на имя компьютера, то есть 'thinkpad'. Тогда должны подойти действительно локальные учетные данные для входа на диск.)
2) Если это работает, вот команда:
sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
- Заранее убедитесь, что /mnt/ddrive существует как пустой каталог.
- Вы холодно и добавить
,password=supersecret
непосредственно (без пробела) после имени пользователя =, но вы также можете подождать, когда вас попросят ввести команду.
Я не согласен с утверждением, что 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://".
Вы можете поместить все эти детали в /etc/fstab, чтобы при запуске системы можно было смонтировать каталоги. Если сервер windows или SMB находится на IP-адресе 192.168.1.1
/etc/fstab //192.168.1.1/SharedFolder/ /mnt/linux_smb cifs username=winuser,password=TopSecret 0 0
Создать каталог как точку монтирования Linux
mkdir /mnt/linux_smb chmod 755 /mnt/linux_smb
Впервые монтировать это вручную
mount -a
Возможные ошибки могут быть найдены
dmesg | tail
Существует конкретная проблема, которую можно и очень сложно решить, когда версии CIF/SMB несовместимы между Linux и Windows. В этом случае вы можете просто внести незначительные изменения в строку 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 остаются такими же, как в предыдущем ответе.
Как работают разные методы монтажа, но вы можете рассмотреть кое-что
если вы не хотите вводить свои учетные данные непосредственно в / etc / fstab, вы можете использовать вместо этого параметр монтирования: credentials=/your/path/here/.credentials
это должно содержать имя пользователя =msusername пароль =mspassword
Сохраните файл и выйдите из редактора.
разрешения должны быть изменены на CHMOD 600
если у вас есть зашифрованный домашний каталог и вы хотите, чтобы ваше монтирование было загружено, загрузите этот файл за пределы вашего домашнего каталога. в / etc / или / media / может быть подходящим и легко запоминающимся местом.
Я собрал небольшой скрипт (он предназначен для 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