Автоматическое монтирование fstab и systemd
Содержание:
Принцип работы
CIFS — это протокол, основанный на технологии клиент-сервер, который предоставляет клиентским приложениям простой способ для чтения и записи файлов, а также запроса служб у серверных программ в различных типах сетевого окружения. Единственное отличие от модели клиент-сервер состоит в том, что, когда клиент посылает в качестве запроса возможные блокировки, то сервер вынужден отпустить уже предоставленную блокировку, так как другой клиент запросил открытие файла в режиме, несовместимом с предоставленной блокировкой. В этом случае сервер посылает клиенту уведомительное сообщение о том, что блокировка была снята. Серверы предоставляют файловые системы и другие ресурсы (принтеры, почтовые сегменты, именованные каналы и т. д.) для общего доступа в сети. Клиентские компьютеры могут иметь у себя свои носители информации, но также имеют доступ к ресурсам, предоставленным сервером для общего пользования.
Клиенты соединяются с сервером, используя протоколы TCP/IP (а, точнее, NetBIOS через TCP/IP), NetBEUI или IPX/SPX. После того, как соединение установлено, клиенты могут посылать команды серверу, который даёт им доступ к ресурсам, позволяет открывать, читать файлы, писать в файлы и вообще выполнять весь перечень действий, которые можно выполнять с файловой системой. Однако в случае использования CIFS эти действия совершаются через сеть.
CIFS определяет серию команд, используемых для передачи информации между сетевыми компьютерами. Запросы на перенаправление отправляют пакеты, предназначенные для удаленных компьютеров в структуре CIFS. CIFS можно отправлять по сети на удаленные устройства. Перенаправитель также использует CIFS для выполнения запросов к стеку протоколов локального компьютера. Сообщения CIFS могут быть в целом классифицированы следующим образом:
- Сообщения установления соединения, состоящие из команд, которые запускают и завершают соединение перенаправителя с общим ресурсом на сервере.
- Сообщения о пространстве имен и манипуляциях с файлами, использующиеся перенаправителем для получения доступа к файлам на сервере и для их чтения и записи.
- Сообщения принтера, использующиеся перенаправителем для отправки данных в очередь печати на сервере и получения информации о состоянии очереди печати.
- Различные сообщения, использующиеся перенаправителем для записи в mailslots (клиент-серверный интерфейс) и именованные каналы.
CIFS дополняет протокол передачи гипертекста (HTTP), обеспечивая более сложное совместное использование файлов и передачу файлов, чем старые протоколы, такие как FTP.
Компоненты в перенаправителе обеспечивают поддержку CIFS, например:
- Rdbss.sys Все взаимодействия на уровне ядра инкапсулируются в этом драйвере. Сюда входят все менеджеры кэшей, диспетчеры памяти и запросы для удаленных файловых систем, чтобы указанный протокол мог использовать запрошенный сервер.
- Mrxsmb.sys Этот мини-перенаправитель для CIFS имеет команды, специфичные для CIFS.
- Mrxnfs.sys Этот мини-редиректор для сетевой файловой системы (NFS) обеспечивает поддержку NFS. Mrxnfs.sys включен в Службы для Unix.
В Windows NT 4.0 разрешение имен Windows Internet Name (WINS) и Domain Name System (DNS) было выполнено с использованием TCP-порта 134. Расширения для CIFS и NetBT теперь позволяют соединения непосредственно через TCP/IP с использованием TCP-порта 445. Оба способа разрешения все еще доступны в Windows 2000. Можно отключить одну или обе этих службы в реестре.
Samba Command Line Utilities
Command that returns IP addresses of all Samba servers in one’s own broadcast domain:
nmblookup __SAMBA__
Command that returns a list of all NetBIOS names and their aliases of all Samba servers in the neighbourhood (it does a ‘node status query’):
nmblookup -S __SAMBA__
List of all IP adresses of SMB servers (that is, Linux+Unix/Samba or Windows) in the neighbourhood:
nmblookup '*'
List all NetBIOS names and their aliases of all SMB servers (Linux+Unix/Samba or Windows):
nmblookup -S '*'
For a specific workgroup, get a list of Netbios names
nmblookup -S WORKGROUP
smbclient
To connect to a Windows computer from Unix
smbclient //nicolep/C$ -U username -W workgroup
or
smbclient //nicolep/C -U Administrator -W workgroup
Windows Instant Messaging Pop-Up (like net send in windows)
smbclient -I ip-address -M netbios-name-of-recipient
Принадлежность файлов в CIFS
Различия в определении принадлежности файлов в UNIX-подобных операционных системах и в Windows могут порождать проблемы. Начнем с того, что имена пользователей FreeBSD, возможно, не получится отобразить в имена пользователей Windows, а кроме того, в UNIX и в Windows используются совершенно непохожие схемы назначения прав доступа.
Если в Windows вы используете отдельную учетную запись для доступа к разделяемому ресурсу, вы обладаете теми правами доступа, которые имеет эта учетная запись в Windows, однако в FreeBSD для этого монтируемого ресурса вам необходимо назначить права доступа, используемые системой FreeBSD. По умолчанию утилита mount_smbfs(8) определяет те же самые права доступа для нового разделяемого ресурса, какие указаны для точки монтирования. В предыдущем примере владельцем каталога /home/mwlucas/smbmount был пользователь mwlucas, а для каталога были определены права 755. Эти права доступа говорят, что пользователь mwlucas обладает возможностью редактировать все, что находится в этом каталоге, но все остальные лишены такого права. Но даже когда FreeBSD позволяет данному пользователю редактирование указанных файлов, Windows может не позволить ему изменять файлы, находящиеся на разделяемом ресурсе.
Better Method
The above method has a little problem. Username and password are visible to everyone. We can avoid this by using a credentials file.
\\winbox\getme /mnt/win cifs user,uid=500,rw,noauto,suid,credentials=/root/secret.txt 0 0
Note: per jbroome, in IRC, a working example looks like this
\\jellyfish\DBRefreshLogs\beta2 /media/DBRefreshLogs/beta2 cifs credentials=/root/secret.txt,_netdev,uid=oracle,gid=dba 0 0
Where the /root/secret.txt file looks like this:
username=sushi password=yummy
This file can be placed anywhere. Encrypted passwords cannot be used. Make sure it is not readable by others. Note also that no spaces are allowed.
(Note: username can have a form of username=<domain>/<hostname>)
The most obvious benefit of using autofs is that the share is only mounted when being accessed. If it is unavailable it will not effect your system when it boots.
Using autofs has the same credentials issues described above with fstab. It is also necessary to store your password in plain text when using autofs for cifs shares.
Installing autofs Package
Install autofs in CentOS 7, or Red Hat 7:
Install autofs in Ubuntu 18:
Let’s configure autofs to mount our Windows share.
First, ensure you create the credentials file as described above:
DO NOT forget to set the permissions:
Now, let’s get our user accounts uid so we can tell autofs to mount the share as our user instead of root.
Example:
Edit auto.master Map File
Edit the /etc/auto.master configuration file. In this file we will provide a map of directories to shares for autofs to use. Add the following line to the file:
The first part of the above line is the directory we are using as a mount point (you can create a custom directory if you wish). The second is the file that autofs should look in for instructions on how to connect to the resource and mount it.
Test and Verify
Now, let’s look in the /mnt directory.
The shareddocs directory doesn’t exist until you try to access it (auto fs). If everything above was followed, we should be to cd into that directory even though we do not see it. The directory will be dynamically created as it is accessed.
Bob’s your uncle.
A default CentOS 7 build will not be able to mount SMB\CIFS shares, unless you customized the install. We’ll need to install a package onto the server that allows it to understand the SMB protocol.
- Install the cifs-utils package from the default CentOS yum repository.
yum install cifs-utils
- Next, we need an account on the CentOS server that will map to the Windows account granted permission to the SMB share, _share_library_core. We’ll create a service account named svc_library_core with a user id (UID) of 5000.
useradd -u 5000 svc_library_core
- We also want a group on the CentOS server that will map to the share. This group will contain all of the Linux accounts that will need access to the share. Our account will be called share_library_core and it will have a group id (gid) of 6000.
groupadd -g 6000 share_library_core
- Finally, add any Linux accounts that require access to the SMB share to the newly created Linux group. I have an existing account named user1 that I will add to the share_library_core group.
usermod -G share_library_core -a user1
TROUBLESHOOTING, if the above doesn’t work.
Step 1: Have you tried restarting both computers
Reboot both of your computers. After that, make sure all your windows updates are done. Make sure Linux has its software updates taken care of as well. Reboot after updates.
Step 2: Review your Firewalls, ZoneAlarms, and other Security Software
A piece of software designed to protect your computer from viruses, malware or evils on the internet might be blocking your file sharing attempt. Windows firewall might be in a paranoid mode. Although it is unlikely Windows Firewall is to blame, turn it off temporally to verify it’s not the problem. (don’t leave it off).
Acquire a list of all the security software that might be set to paranoid mode. Windows Firewalls, 3rd party firewalls, ZoneAlarms, Antiviruses, Kaspersky, AVG, or anything else that claims to protect you from viruses/malware/evil. You will need to review these and either turn them off temporally, or open a white list through them for your IP address.
Step 3: Acquire clues from security software.
ZoneAlarm keeps a log of all folder share events and attempts, go to Overview->alerts and logs. And see a list of all your failed attempts. The same is possible for other software. In that case, it’s protecting you from you.
Step 4: Suspect problems in the router or local area network itself
Maybe the router, wireless bridges, dumb hubs, or other network device has some directive shenanigan in it by blocking your shared folder connect attempt. The router or device itself might be blocking a port or has something in restrictive mode. Has anyone been fooling around with it lately? Try setting the router back to default everything and trying again.
Step 5: Make sure your local area network is simple and correct.
Are both your computers connecting to the same router? Perhaps one is connected to a crappy netgear wireless bridge and the other to a router? Simplify the network by having all computers connect to one router. Restart the routers and the internet, try again.
Step 6: Still not working. Isolate the defective unit.
It’s time to herd cats and isolate the defective unit. Prove the windows box is not sharing your file by connecting to the share with a different computer. Get a friends windows laptop, or apple product and connect it to your network and see if they can access the share. If they can’t, the windows box has a problem, if they can, the Linux box has the problem.
Step 7: Suspect the firewall on Linux
Take note of any special security alarm or special firewall software on Linux. Run and make sure smb is checked. Check to make sure Linux is not preventing your mount. Create a smb share on another Linux box, and try to connect to that.
You can add your CIFS mount point in /etc/fstab and have the system mount it during boot. However, there are some considerations to make. If the share is not available at boot time the system will hang until the mount attempt times out, or worse, refuse to boot. This will cause a delay in accessing the system. To avoid this you can use autofs (next section). Also mounting it via fstab requires you to put your credentials somewhere in plain text. You have two options when using fstab to mount a CIFS share.
- Put the credentials in the fstab file itself — This is a huge security risk as fstab is readable by any user. Someone can simply cat the file and see your credentials. IT IS NOT RECOMMENDED!
- Use a credentials file — This entails saving your credentials in a separate file which can then be protected by permissions. Although your credentials will still be saved in plain text, someone would need root permissions to read them.
Because of the high risk of the first option, we will not even discuss how to do it. It is easy enough to use a credentials file.
First, create a hidden file in root’s home directory (/root/). You can call this file whatever you like. Most people call it .smbcreds or similar. In this file you need two lines, one containing «username=<your-username>» and one containing «password=<yourpassword>».
Example:
Now set the permissions so it is only readable by root:
Now edit the /etc/fstab file and add the following information:
- Remote server share address (//mymuse/shareddocs)
- Local mount point (/mnt/cifs)
- Filesystem type (cifs)
- options (credentials file=/root/.smbcreds)
- dump option (0)
- check option (0)
Example fstab, last line showing the CIFS mount point.
DESCRIPTION
This tool is part of the samba(7) suite.
mount.cifs mounts a Linux CIFS filesystem. It
is usually invoked indirectly by
the mount(8) command when using the
«-t cifs» option. This command only works in Linux, and the kernel must
support the cifs filesystem. The CIFS protocol is the successor to the
SMB protocol and is supported by most Windows servers and many other
commercial servers and Network Attached Storage appliances as well as
by the popular Open Source server Samba.
The mount.cifs utility attaches the UNC name (exported network resource)
specified as service (using //server/share syntax,
where «server» is the server name or IP address and «share» is the name
of the share) to the local directory mount-point.
Options to mount.cifs are specified as a comma-separated
list of key=value pairs. It is possible to send options other
than those listed here, assuming that the cifs filesystem kernel module (cifs.ko) supports them.
Unrecognized cifs mount options passed to the cifs vfs kernel code will be logged to the
kernel log.
mount.cifs causes the cifs vfs to launch a thread named cifsd. After mounting it keeps running until
the mounted resource is unmounted (usually via the umount utility).
mount.cifs -V command displays the version of cifs mount helper.
Монтирование smb-ресурса
В виду того, что компьютеров в доме каждого из нас становится всё больше, а работают под Linux`ом далеко не все из них, регулярно возникает необходимость как-то налаживать взаимодействие между машинами в таких гетерогенных сетях. Об офисных сетях и говорить нечего: на рабочих компьютерах пока господствует Windows, а Linux, в основном, обитает на серверах (тем не менее, ситуация может и измениться).
К счастью, файлообмен в гетерогенных сетях задача вполне уже решенная, ведь есть Samba.
Предустановленных программ Ubuntu вполне достаточно, чтобы путешествовать по ресурсам Windows (в главном меню: Переход > Сеть > Сеть Windows). Но удобным может быть примонтировать удаленный сетевой ресурс (после чего вы сможете работать с файлами, расположенными на нём, как с локальными). Для этого есть команда smbmount из пакет smbfs (установите его: sudo apt-get install smbfs).
Примонтировать удаленный ресурс можно так:
smbmount //192.168.0.10/ShareDocs ~/Share -o rw,iocharset=utf-8,codepage=cp866
Здесь 192.168.0.10 — IP-адрес компьютера с ресурсом (вместо IP можно использовать и имя компьютера); ShareDocs — имя ресурса на нём (задается в параметрах общего доступа, по умолчанию сопадает с именем расшаренной папки); ~/Share — точка монтирования (в данном случае, это директория Media в вашем домашнем каталоге, не забудьте при необходимости эту директорию создать перед монтированием mkdir ~/Share).
После ключа -o следуют опции: rw — запись и чтение (ro — только чтение); iocharset=utf-8 — кодировка в который должен будет представлен общий ресурс; codepage=cp866 — кодировка держателя (сервера) общего ресурса (для общих ресурсов Windows требуется установит именно cp866).
Для ресурсов, закрытых паролем, пригодятся еще две опции: username=myname — устанавливает имя пользователя; password=mypasswd — собственно, пароль.
А вот так можно отмонтировать ресурс:
smbumount ~/Share
Если удаленный ресурс всегда доступен и часто требуется вам, то есть смысл примонтировать его на постоянной основе (чтобы он автоматически монтировался при каждой загрузке), добавив такую строку в файл /etc/fstab:
//192.168.0.10/ShareDocs /home/yourusername/Share cifs auto,users,rw 0 0
Монтирование ISO образов
-
Монтирование образов дисков в Linux: .nrg; .bin/.cue.; .mdf
-
Монтировать ISO- образ в локальную директорию пользователя
$ sudo mount -o loop iso_file.iso $HOME/temp_mnt
Монтирование нового HDD
Монтирование нового HDD.
# mkdir /home/keepraid1 # mount /dev/sdb1 /home/keepraid1/ # df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 9,2G 310M 8,5G 4% / udev 2,0G 252K 2,0G 1% /dev none 2,0G 0 2,0G 0% /dev/shm none 2,0G 32K 2,0G 1% /var/run none 2,0G 0 2,0G 0% /var/lock none 2,0G 0 2,0G 0% /lib/init/rw /dev/sda6 942M 18M 877M 2% /tmp /dev/sda7 28G 343M 26G 2% /var /dev/sda8 28G 554M 26G 3% /usr /dev/sda9 75G 180M 71G 1% /home /dev/sdb1 230G 188M 218G 1% /home/keepraid1 # umount /home/keepraid1
Настроим автоматическое монтирование партиции нового HDD через fstab. Для этого нам нужно узнать UUID новой партииции. Для получения этой информации используем утилиту blkid:
# cp /etc/fstab /etc/fstab.noraid1 # blkid /dev/sda1: UUID="d49fa623-e131-45d4-a59c-7cc98191d536" TYPE="ext4" /dev/sda5: UUID="4a803b5c-0ff2-402b-a596-9a7e17c2b2bc" TYPE="swap" /dev/sda6: UUID="183761a2-6e46-4282-9334-5f4d43c25c51" TYPE="ext4" /dev/sda7: UUID="abb9ac60-5348-4259-91f1-482a1ce59b28" TYPE="ext4" /dev/sda8: UUID="db8adf38-6724-4dbc-9253-f63f2b054069" TYPE="ext4" /dev/sda9: UUID="d2c3ff60-2e1e-4f52-806e-24e901e0f86e" TYPE="ext4" /dev/sdb1: UUID="fe462740-4281-4de8-ada5-988b6d7e5aae" TYPE="ext4" # nano /etc/fstab ... #RAID1 UUID=fe462740-4281-4de8-ada5-988b6d7e5aae /home/keepraid1 ext4 defaults 0 2 # mount -a #проверяем # df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sdb1 230G 188M 218G 1% /home/keepraid1

Usage
A simple , using file system UUIDs:
/etc/fstab
# <device> <dir> <type> <options> <dump> <fsck> UUID=0a3407de-014b-458b-b5c1-848e92a327a3 / ext4 noatime 0 1 UUID=f9fe0b69-a280-415d-a03a-a32752370dee none swap defaults 0 0 UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4 noatime 0 2
- describes the block special device or remote filesystem to be mounted; see .
- describes the mount directory.
- the file system type.
- the associated mount options; see and .
- is checked by the utility. This field is usually set to , which disables the check.
- sets the order for filesystem checks at boot time; see . For the root device it should be . For other partitions it should be , or to disable checking.
Tip:
- The type lets the mount command guess what type of file system is used. This is useful for optical media (CD/DVD/Blu-ray).
- If the root file system is btrfs, the fsck order should be set to instead of . See .
All specified devices within will be automatically mounted on startup and when the flag is used with unless the option is specified. Devices that are listed and not present will result in an error unless the option is used.
See for details.
Ключевые слова в nsmb.conf
Параметры настройки в файле nsmb.conf определяются с помощью ключевых слов и значений в соответствующих разделах. Например, серверы имеют IP-адреса, а пользователи — нет, поэтому параметр, определяющий IP-адрес, должен находиться только в разделе описания сервера. Чтобы использовать ключевое слово, ему нужно присвоить значение через знак равенства: keyword=value. Далее перечисляются наиболее часто употребляемые — полный список можно найти в странице руководства nsmb.conf(5).
workgroup=string
Ключевое слово
workgroup
определяет имя домена Windows или рабочей группы, доступ к которой требуется получить. Это типичная настройка по умолчанию, используемая для всех серверов.
addr=a.b.c.d
Ключевое слово
addr
определяет IP-адрес сервера CIFS. Данное ключевое слово может находиться только в разделе с меткой
nbns=a.b.c.d
Ключевое слово
nbns
определяет IP-адрес сервера имен NetBIOS (WINS). Вы можете добавить эту строку в раздел по умолчанию или в раздел с конкретным сервером. Если у вас имеется служба ActiveDirectory (которая основана на DNS), можно использовать имена хостов в DNS. Добавление сервера WINS не повредит вашей конфигурации и поможет проверить базовые настройки CIFS.
password=string
Ключевое слово
password
определяет пароль в открытом текстовом виде для пользователя или разделяемого ресурса. Если вам придется хранить пароли в /etc/nsmb.conf, вы должны обеспечить доступность этого файла на чтение только для пользователя root. Хранение паролей в многопользовательских системах в файле $НОМЕ/.nsmbrc вообще недопустимо.
Пароли Windows можно зашифровать с помощью команды
smbutil crypt
. Она сгенерирует строку, которую можно использовать как значение этого ключевого слова. Зашифрованная строка начинается с двух символов доллара ($$). Шифрование предотвращает случайное раскрытие пароля, но злонамеренный пользователь легко может расшифровать его.
14 ответов
Я столкнулся с этой проблемой при использовании имени хоста и решил ее с помощью IP-адреса. Например:.
использовать
а не
Другое возможное решение — установить
Ах, страшно -22. По сути, это, кажется, используется как ловушка для «что-то не работает», хотя технически это называется недопустимым аргументом.
Клиент делает ИМХО очень плохую работу, сообщая вам актуальную проблему. (Возможно, это не его вина — у него не всегда есть доступ к этой информации).
Однако — вы проверили журналы на сервере /машине, к которой вы подключаетесь?
Я подключался к серверу OS X samba и узнал из того, что нашел в журналах, что необходимо указать дополнительные параметры в -o следующим образом:
Среди этих параметров есть «разрешить длинные имена» и «игнорировать окончания имен файлов UNIX» … sec — указать флаги безопасности.
Другая возможность состоит в том, что вы пытаетесь получить доступ к файловой системе того типа, который mount.cifs на самом деле не может обработать.
Для установочного пакета RHEL /Centos — «cifs-utils»
Может быть, переместить цель?
Или, может быть, это решение ? (Ubuntu, методы Debian)
Или для CentOS, RedHat, Fedora попробуйте:
У меня была похожая проблема в Ubuntu 12.04 с пакетом «mount» (версия 2.20.1-1ubuntu3).
Это произошло, когда я пытался смонтировать общий ресурс сервера, используя имя хоста, более точное, чем его IP-адрес.
Другим способом решения проблемы в Ubuntu была установка пакета . Таким образом, я также мог бы смонтировать общий ресурс samba, используя точно такую же командную строку (или fstab), но с именем хоста.
Просто сделал чистую установку Ubuntu 12.04 LTS и получил это, пытаясь подключить мой Linux HTPC.
Решите его, запустив: и перемонтировав его.
CIFS возвращает код «-22» во многих случаях (не только недопустимые аргументы).
Для меня установка keyutils сделала свое дело:
Мой дистрибутив «Ubuntu 14.04.2 LTS».
Я понял это, увеличив подробность регистрации в CIFS:
Документация по битовой маске («7») для cifsFYI может быть найдена здесь: «> https://www.kernel.org/doc/readme/Documentation-filesystems-cifs-README
После попытки монтировать еще раз dmesg включил дополнительную полезную информацию:
Еще одна полезная ссылка:
У меня Ubuntu Server 12.10 x64 установлен как виртуальная машина VMware, работающая на OS X 10.8 (Mountain Lion).
На Mac, в СИСТЕМНЫХ НАСТРОЙКАХ> ОБМЕН> ОБМЕН ФАЙЛАМИ (включен), я добавил папку для обмена. Для своих тестов я создал новую папку в своей папке Public под названием «ubuntu».
В Ubuntu я выполнил следующие команды:
Ubuntu запросил у меня пароль и после ввода смонтировал папку. Я тогда побежал:
который позволил мне проверить точки монтирования и точки монтирования.
Просто испытайте проблему на RHEL 5. Вам не нужно устанавливать пакет samba, только клиент samba и любые зависимости.
Попробуйте запустить команду:
Если вы получили какую-либо ошибку, то не установлено. Просто уточните у своего администратора. Я думал, что это помогает.
Сначала вам нужно установить cifs-utils, как показано ниже:
sudo yum установить cifs-utils
Я знаю, что это старая версия, но в старых версиях cifs-utils вам, возможно, придется добавить следующие две строки в /etc/request-key.conf
Обходной путь без установки дополнительных пакетов ( добавляет еще 81 МБ в Debian Stretch):