1

Всем привет, прошу меня не пинать сразу. Прошу Вашей помощи.
Поставил centos задачи простые и я их пытаюсь решить сам. Но столкнулся с проблемой автоматического монтирования сетевых дисков. 
Скачал с оф. сайта полный дистр. с графической оболочкой и ни чего не урезал с нее. Подтянуть сетевые диски у меня получилось через эту команду mount.cifs //192.168.101.100/sales /mnt/cifs -o username=shareuser,password=sharepassword,domain=nixcraft
Но я не могу понять логики, для того, чтобы они автоматически подтягивались(( Я только виндовыми серверами занимался. Понял, что нужно прописать настройки в /etc/fstab Я открыл этот файл, но вот как правильно прописать- не знаю.
Вот нашел пример: //server/dir /mnt/localdir/  cifs user=domain/user,password=pass 0 0. Я прописываю в fstab, в самом конце, все как для меня (у меня есть домен). Но он выдает ошибку:"chdir to mnt/my folder: No such file or directory
Ну как это нет, если она там есть. Может сначала нужно монтировать диски, а потом писать это. В общем 2-й день мучаюсь, помогите пожалуйста.

2 (30.01.2014 13:29:04 отредактировано kirillov3798)

msgeorge, для того что бы монтировать в эти папки их сначала надо создать. Например папка /mnt уже есть. Вам нужно смонтировать //server/dir в localdir. Создаем папку:

 Консоль:
$ cd /mnt
$ mkdir localdir

Перезагружаемся и по идее должно все примонтироваться (если вы до этого все правильно сделали).

Fedora 21 Workstation KDE 4.14.4
Gigabyte GA-Z77-D3H, Intel Core i5-3470, nVidia GeForce GTX 660 2GB, 8GB RAM, 1TB HDD

3 (30.01.2014 13:33:52 отредактировано msgeorge)

Папка есть. Если просто в терминале пишу команду-она монтируется. А вот когда я пишу в fstsb - ошибка((
Только я не перезагружаюсь, а использую команду "sudo mount -a"

4

Значит ошибся где-то в синтаксисе. Вот, вдогонку:
http://www.chilic.ru/blog/montirovanie- … herez-cifs

При укусе ядовитой змеи, держите её голову на расстоянии от себя, чтобы она не укусила вас в ответ...

5 (30.01.2014 13:49:51 отредактировано msgeorge)

Спс,тоже читал, но не могу понять где именно нужно указать логин с доменом и как правильно его нужно прописать?!
sudo nano /root/.smbcredentials
Тут добавить
1.username=windowsuser
2.password=windowspass
3.domain=домен
или username=windowsuser/домен или домен/юзвер?? Или его вообще нужно в другом месте прописать?

6

msgeorge пишет:

Всем привет, прошу меня не пинать сразу.

Да нет, попинаем... :-)
0. Про fstab нагугливатется очень много русскоязычной документации. Хоть обчитайся.
1. Надо четко понимать, что fstab читается системой самым первым. Читается и "исполняется". И как он может смонтировать сетевые диски, если сеть еще не поднята? Посему я бы не считал хорошим тоном вписывать в этот файл сетевые диски. Ну а если очень хочется, то надо пробовать параметр _netdev.
2. Для монтирования сетевых шар очень удобно использовать пакет autofs.

7

Почему? Сеть поднята, сетевой принтер настроил и поднял rdp. Тут не могу понять сам синтаксис команды, которую нужно записывать в fstab, Учитывая, что нужно прописать не только логин и пароль, но и доменное имя. Как я понял на основе fstab есть два метода: 1-й мы прописываем сам файл с логином и паролем (опять же домен, под вопросом) и в пути при монтировании диска указываем его. Пример: //192.168.0.11/share /media/sharefolder cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 ; 2-й метод если мы вносим все данные в строку Пример: //server/dir /mnt/localdir/  cifs user=domain/user,password=pass 0 0
Тут два вопроса:
1-где и как прописать домен
2-нужно монтировать сетевые диски до написания этой команды или нет?

8

msgeorge пишет:

Почему? Сеть поднята, сетевой принтер настроил и поднял rdp. Тут не могу понять сам синтаксис команды, которую нужно записывать в fstab,

Еще раз. Файл /etc/fstab отрабатывается системой в самом начале загрузки. И отрабатывается он тогда, когда у Вас еще ничего не поднято. Даже корень еще не смонтирован окончательно. Нет еще ничего. В том числе и сети. Поэтому вписывать в /etc/fstab можно что угодно, в том числе и сетевые диски. Но вот для успешного применения этой записи надо будет делать mount -a руками. Возможно, оно и автоматизировано. Но я всегда прописывал монтирование сетевых дисков или /etc/rc.d/rc.local (если он нужен перманентно), или пользовался autofs'ом.

9

Плохо без systemd, да.

10 (30.01.2014 15:05:32 отредактировано msgeorge)

Vascom пишет:

Плохо без systemd, да.

Извините - не понял((
Да, кстати я к этому и пришел. ЧТо после перезагрузки нужно делать Mount -a иначе ни чего не работает. Так же я отметил, что после включения ПК  он ругается на мою строку с командой. Можно ссылку на мануал по написанию и инсталиции autofs. А то нахожу что-то не то((
P.S.кстати разобрался с доменом, просто прописывает domain=мой домен, там где и прописываем логин и пароль.

11

msgeorge пишет:

Можно ссылку на мануал по написанию и инсталиции autofs. А то нахожу что-то не то((

http://yandex.ru/yandsearch?text=autofs … 4&lr=2

12

Vascom пишет:

Плохо без systemd, да.

Да какая разница куда этот mount -a вписывать? В какой-то сервис systemd или в rc.local, который всяко самым последним грузиться будет. Мне даже удобнее в rc.local свою инициализацию писать.

13

Ну я к тому, что в mount юнитах systemd можно прописать монтирование после гарантированного старта сети.

rc.local вроде одним из первых грузится и не обращает внимания ни на что другое.

14

Vascom пишет:

rc.local вроде одним из первых грузится

самым последним

15

Поэтому лучше засунуть команду mount в скрипт, и сослаться на него в rc.local.

При укусе ядовитой змеи, держите её голову на расстоянии от себя, чтобы она не укусила вас в ответ...

16

Так, получилось))
1-у меня действительно не поднималась сеть. Пришлось пофиксить ONBOOT=yes.
2-Добавил строку //источник /назначение cifs auto,username=логин,password=Логин,domain=Домен,rw 0 0
Перезагрузился и все ок))) С этим проблему решил, спс за подсказки буду учить autofs
Теперь другой вопрос, у меня есть пользователь, но у него нет прав, кроме просмотра. Как это можно пофиксить?

17

msgeorge пишет:

Как это можно пофиксить?

дать права?

18

Тоже пофиксил)) Да, пользователь мог только смотреть содержимое,а roothave a power)) Но все сделал. Большое всем спасибо!!!! Тему можно закрыть.

19

msgeorge пишет:

2-Добавил строку //источник /назначение cifs auto,username=логин,password=Логин,domain=Домен,rw 0 0
Перезагрузился и все ок))) С этим проблему решил, спс за подсказки буду учить autofs

Недостатки решения с fstab - если система не найдет на этапе загрузки сервер, сетевую шару (а такое всяко может быть, то загрузка будет продолжаться очень долго. На всех таймаутах повисит обязательно. Поэтому я делаю так:
1. Если нужна какая либо сетевая шара постоянно (такие я раздаю по glusterfs), то прописываю монтирование в rc.local. При этом предварительно проверяю ремутный хост на доступность тривиальным пингом. Если пингуется, то и шара должна быть доступна, следовательно можно монтировать.
2. Если ремутная шара нужна не сразу на этапе загрузки и есть вероятность того, что её хост еще не включился, то монтирую её потом, по мере возможности. А возможность эту проверяю по крону тем же пингом.
3. Ну и шары для пользователей - из монтирую уже с помощью autofs. Монтируется оно по мере необходимости, висит примонтированным столько сколько надо, а потом, когда активности нет - отваливается. Ну и монтируется именно пользователю с правами конкретного этого пользователя. Для терминального сервера самое то. Ну и для дома тоже рулит. Например - есть медиаплейер. Он далеко не всегда включен. Поэтому вписывать его монтирование в fstab или в rc.local - это обречь себя на длительное ожидание загрузки. Когда оно там прочухается (в этом плане винда лучше - напишет, что не удалось восстановить все подключения и ладно)... А с autofs: когда надо - включил плейер, дождался его загрузки, зашел в нужный каталог (у меня там просто ссылка на него лежит) и вот оно, его содержимое.

Ну и пара советов по autofs:
Я в домашнем каталоге пользователя делаю каталог ~/.Net. Этот каталог скармливаю в autofs. Далее даю команду
ls ~/.Net/<ServerName>. В ~/.Net/<ServerName> появляются все сетевые шары, которые раздает <ServerName>. Далее - создаю каталог ~/Net (или "Сетевое окружение", не важно) и в нем делаю ссылки на шары в ~/.Net/<ServerName>. И потом - захожу в ~/Net и вижу все нужные мне шары. Autofs заботливо их мне подмонтирует (если сможет).

20

Спасибо, учту! Шара тут будет постоянно включена, поэтому тут я не переживаю. Просто нужно постепенно все осваивать. Я день принтер устанавливал (почему-то скаченные с сайта дрова не подходили), заставил читать ntfs и освоил freerdp. После нескольких лет работы на Майкрософт-тяжело перейти на линус.

21

Vascom пишет:

Плохо без systemd, да.

Будто тут он что-то сделает лучше, ога. Глупости.
Параметр _netdev, который уже поминали здесь, решает проблему. При указании этого параметра в соответствующем поле (поле параметров), init вызывает mount, когда сеть поднимется, не раньше и не позже.
Пруф:

man mount(8)
...
_netdev
              The filesystem resides on a device that requires network access (used to prevent the  system  from attempting  to mount these filesystems until the network has been enabled on the system).

_netdev
               Файловая система, находящаяся на устройстве, требующая доступа в сеть (используется для предупреждения попыток системы примонтировать эту файловую систему пока сеть не будет включена).

Лукавите, господа системдевцы.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

22

Vascom пишет:

rc.local вроде одним из первых грузится и не обращает внимания ни на что другое.

Опять враки. Грузится, как уже сказали, последним, и выполняет в точности то, что в нем записано. Это же скрипт, а не глупый юнит systemd.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

23

Cruiser78 пишет:

Мне даже удобнее в rc.local свою инициализацию писать

а если хостов сотня? а тысяча? а если учесть то, что периодически корявый апдейт стирает самодельный скрипт? нет уж, самопал не масштабируется.

24

yars пишет:
Vascom пишет:

rc.local вроде одним из первых грузится и не обращает внимания ни на что другое.

Опять враки. Грузится, как уже сказали, последним, и выполняет в точности то, что в нем записано. Это же скрипт, а не глупый юнит systemd.

Признаю, ошибался.
Юнит системд может быть глупым, только если его глупый человек написал.

25

yars пишет:

Параметр _netdev, который уже поминали здесь, решает проблему. При указании этого параметра в соответствующем поле (поле параметров), init вызывает mount, когда сеть поднимется, не раньше и не позже.

Да, это справедливо, но при одном условии. Что соответствующий mount знает про этот параметр. А именно - попробуйте в том же центосе применить _netdev к томам glusterfs. Этот параметр будет с негодованием отвергнут. Так что...

26 (31.01.2014 09:38:03 отредактировано Cruiser78)

dyasny пишет:
Cruiser78 пишет:

Мне даже удобнее в rc.local свою инициализацию писать

а если хостов сотня? а тысяча? а если учесть то, что периодически корявый апдейт стирает самодельный скрипт? нет уж, самопал не масштабируется.

Решение элементарно - я одной из первых операций в rc.local поднимаю доступ к файловому хранилищу на glusterfs'е. Там есть общий etc. В котором лежат нужные для этой тыщи компьютеров конфигурационные файлы и скрипты. Если хранилища еще нет - стоим, ждем пока не поднимется. И далее пользуюсь именно этой сетевой шарой для окончания инициализации хоста. Естественно (даже объяснять не стоит), что редактируются конфигурации только в одном месте, а не на всей тыще компьютеров. И там, в общих конфигах, можно даже устроить некую программную разбивку кода в зависимости от `hostname` или иных условий.

В результате имеем тыщу компьютеров с единой системой (вполне согласованной) конфигурационных файлов и скриптов. А теперь расскажи, как это всё можно реализовать в systemd, когда все service-файлы, все юниты должны быть локальными, так как считываются они при запуске этого systemd. Когда еще нет ничего... И как можно удобно актуализировать содержание тыщи локальных конфигов и скриптов? Ну и держать всю эту систему во взаимосогласованном состоянии? Особенно, когда периодически корявый апдейт стирает самодельный юнит...

27

dyasny пишет:

а если хостов сотня? а тысяча? а если учесть то, что периодически корявый апдейт стирает самодельный скрипт? нет уж, самопал не масштабируется.

Прекрасно масштабируется, если у вас Slackware Linux ab

# grep "rc\.local" /var/log/{packages,scripts}/*
/var/log/packages/sysvinit-scripts-2.0-noarch-17:etc/rc.d/rc.local.new
/var/log/scripts/sysvinit-scripts-2.0-noarch-17:config etc/rc.d/rc.local.new

После обновления sysvinit-scripts новый rc.local не затрет старый, пока вы не сделаете

# slackpkg new-config

и не ответите на вопрос, что с файлом *.new сделать:

# slackpkg new-config         


Searching for NEW configuration files

Some packages had new configuration files installed.
You have four choices:

    (K)eep the old files and consider .new files later

    (O)verwrite all old files with the new ones. The
       old files will be stored with the suffix .orig

    (R)emove all .new files

    (P)rompt K, O, R selection for every single file
    
What do you want (K/O/R/P)?

Выберете Prompt, и вас спросят по каждому конфигу персонально.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

28

Cruiser78 пишет:

Этот параметр будет с негодованием отвергнут. Так что...

Это проблемы кривого софта.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Slackware64-current/Xfce/Lenovo G580

29

yars пишет:

Прекрасно масштабируется, если у вас Slackware Linux

он, как и генту, не масштабируется вообще.

yars пишет:

Выберете Prompt, и вас спросят по каждому конфигу персонально.

и так 1000 раз, на разных хостах ab

Cruiser78 пишет:

Решение элементарно - я одной из первых операций в rc.local поднимаю доступ к файловому хранилищу на glusterfs'е. Там есть общий etc. В котором лежат нужные для этой тыщи компьютеров конфигурационные файлы и скрипты. Если хранилища еще нет - стоим, ждем пока не поднимется. И далее пользуюсь именно этой сетевой шарой для окончания инициализации хоста. Естественно (даже объяснять не стоит), что редактируются конфигурации только в одном месте, а не на всей тыще компьютеров. И там, в общих конфигах, можно даже устроить некую программную разбивку кода в зависимости от `hostname` или иных условий.

и это не костыль? я бы еще понял ответ вроде "у меня все под паппетом". но вообще, при таких масштабах, кастомизация должна быть сведена к минимуму, а лучше чтоб ее вообще не было. потому что проблемы имеют тенденцию очень быстро нарастать и превращаться в общий [CENSORED], при котором надо быстро и без напрягов суметь развернуть все заново с нуля (так было в Цюрихском датацентре гугля несколько лет назад, кстати). И каждая кастомизация это риск помноженный на количество хостов как минимум.

Cruiser78 пишет:

В результате имеем тыщу компьютеров с единой системой (вполне согласованной) конфигурационных файлов и скриптов. А теперь расскажи, как это всё можно реализовать в systemd, когда все service-файлы, все юниты должны быть локальными, так как считываются они при запуске этого systemd. Когда еще нет ничего... И как можно удобно актуализировать содержание тыщи локальных конфигов и скриптов? Ну и держать всю эту систему во взаимосогласованном состоянии? Особенно, когда периодически корявый апдейт стирает самодельный юнит...

красота тут в том, что systemd заранее умеет справляться с такими ситуациями, и не требует доработки напильником. Так что если исправно тестировать апдейты перед их развертыванием, проблем при массовом апдейте не будет. еще раз - чем меньше самодеятельности тем надежнее и что очень важно - повторимее будет система, и тем легче будет ее масштабировать.

30

Предлагаю завершить обсуждение, раз вопрос решён.