Немного теории

  • Если вы раньше использовали ОС Windows, то вы, скорее всего, привыкли к дискам с именами (C:), (D:) и т.д. В ОС Ubuntu Linux все иначе. Если в Windows для каждого раздела винчестера, CD-привода, флешки или картридера, назначалась определенная буква, к примеру (E:), то в Linux содержимое всех подключаемых и внутренних дисков отображается в виде папок, которые монтируются (подключаются) в корень файловой системы (/) По началу это может показаться очень неудобным, но при постепенном осваивании системы Linux, вы поймете что так правильней и даже удобней.

В Linux подключение диска в основную файловую систему называется монтирование.

  • Список всех смонтированных устройств можно узнать командой mount
  • На данный момент Ubuntu Linux выполняет автоматическое монтирование всех обнаруженных подключаемых устройств (внешние винчестеры, флешки, фотоаппараты и т.д.) в корень файловой системы в директорию /media/. Например, если вы вставите флешку с меткой «Flash_card», то система смонтирует ее в каталог /media/Flash_card. В любом случае вам не надо задумываться куда и как монтировать внешние носители, т.к. они автоматически становятся доступны на панели рабочего стола в меню «Переход».

Однако ситуация с NTFS, FAT и FAT32 разделами основного (внутреннего) винчестера несколько иная. Чтобы каждый раз при попытке зайти на NTFS или FAT32 раздел не вводить пароль нужно выполнить действия рассмотренные ниже:

Способы монтирования

Способ 1: монтирование через универсально уникальный идентификатор (UUID)

Монтирование через идентификатор диска UUID является наиболее надёжным, работает во всех версиях Ubuntu (и не только Ubuntu).

UUID - это атрибут конкретной файловой системы, а не произвольное число, зависящее от физического порядка подключения дисков или случайностей инициализации дисковой подсистемы ядром.

Узнаем UUID разделов, для этого

  • в терминале выполняем команду:
    sudo blkid

Примерный вывод:
/dev/sda1: UUID="00a4ad8e-dbcc-4c32-a0b4-074b5ee2bfb4" TYPE="ext4" 
/dev/sda2: LABEL="Win7" UUID="0E42D6D242D6BE21" TYPE="ntfs" 
/dev/sda3: LABEL="Shared" UUID="7ECCC7F5CCC7A62D" TYPE="ntfs" 
/dev/sda4: UUID="1050e484-896f-42a9-bdb3-49eb1255cc77" TYPE="swap" 
/dev/sr0: LABEL="DrWebLiveCD" TYPE="iso9660" 
/dev/sdb1: LABEL="TRENDNET8GB" UUID="355B-FE37" TYPE="vfat"

Предположим, мы хотим подключить раздел «Shared» (NTFS-раздел, находящийся на основном диске компьютера) и «TRENDNET8GB» (флэшка, отформатированная в FAT32).

Бонус использования команды blkid по сравнению с инспекцией каталога /dev/disk/by-uuid/ в том,что вы сразу видите тип файловой системы на блочном устройстве, если ядру удалось его определить.

  • Создаём каталоги для монтирования:
    sudo mkdir /mnt/Shared /mnt/TrendNet8Gb
  • Открываем от имени администратора файл /etc/fstab, содержащий информацию о всех монтируемых при загрузке разделах:
    sudo nano /etc/fstab
  • Добавляем в конец файла,
    для NTFS:
    UUID="7ECCC7F5CCC7A62D" /mnt/Shared ntfs rw,nls=utf8,gid=plugdev,umask=0002 0 0


    для FAT и FAT32:

    UUID="355B-FE37" /mnt/TrendNet8Gb vfat rw,exec,codepage=866,nls=utf8,gid=plugdev,umask=0002,nofail,users 0 0
  • Монтируем только что вписанные разделы диска:
    sudo mount -a

Способ 2: монтирование через имена устройств

Монтирование с помощью таблицы разделов поддерживается практически во всех версиях всех *nix-подобных операционных систем.

Считается устаревшим и строго не рекомендуется к постоянному использованию.

Единственным заметным плюсом является небольшая длина имён устройств, что удобно при прямой работе с консолью. Например, во время реанимации умершей системы.

  • Узнаём имена разделов. Для этого можно, опять же, воспользоваться командой blkid, либо обратиться к помощи системы:
    cat /proc/partitions

Примерный вывод:
# cat /proc/partitions
major minor  #blocks  name

   8     0  488386584 sda
   8     1   20971520 sda1
   8     2    2097152 sda2
   8     3  464519168 sda3
   8    16  488386584 sdb
   8    17   20971520 sdb1
   8    18    2097152 sdb2
   8    19  464519168 sdb3
   9     1   10538496 md1
   9     0    6289344 md0

Разделы, оканчивающиеся цифрой - файловые системы. Разделы без цифры на конце - реальные физические устройства. В данном примере участвуют два физических диска (/dev/sda и /dev/sdb) и два рейд-массива (по сути - две файловые системы, не привязанные напрямую к какому-то одному физическому носителю).

Больше информации (как то точная геометрия и серийные номера физических дисков, что бывает нужно в целях более точной идентификации разделов) можно получить, воспользовавшись утилитами fdisk, sfdisk (для дисков, размеченных в MBR), parted (рекомендуется, понимает как разметку MBR, так и более современную GPT, используемую в системах с UEFI BIOS).

Пример вывода команды fdisk (вывод parted отличается очень незначительно):

# fdisk -u -l /dev/sd?

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x8543ab30

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    41945087    20971520   83  Linux
/dev/sda2        41945088    46139391     2097152   83  Linux
/dev/sda3        46139392   975177727   464519168   83  Linux

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x84a90046

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048    41945087    20971520   83  Linux
/dev/sdb2        41945088    46139391     2097152   83  Linux
/dev/sdb3        46139392   975177727   464519168   83  Linux

Попробуем достучаться до массива md0.

  • Как и прежде, создаём каталог для монтирования файловой системы:
    sudo mkdir /mnt/raid0
  • Предположим, мы не знаем, какая файловая система на диске. К счастью, в большинстве случаев вполне можно положиться на автоматическое определение системы.
    $ sudo mount /dev/md0 /mnt/raid0 -t auto -o rw,nls=utf8,noatime
    
    $ mount
    ....
    /dev/md0 on /mnt/raid0 type ext3 (rw,noatime,nls=utf8)

Дополнительная информация

Я не стал загружать основной текст статьи расшифровкой опций монтирования, но несколько слов пояснения сказать необходимо.

  • rw (read-write, чтение-запись) - файловая система будет подключена с возможностью записи на неё пользователями.

Если вы хотите предотвратить любую запись на файловую систему вообще, указание одной только опции ro (read-only, только чтение) вас не спасёт - такие действия, как восстановление целостности системы по записям из журнала, будут проведены при подключении систем, поддерживающих журналирование. При необходимости предотвратить любую запись на файловую систему пользуйтесь другими средствами для монтирования, либо внимательно читайте документацию на утилиту монтирования для соответствующей файловой системы, если она допускает принудительное отключение подобных действий.

  • exec - все файлы на подключемой системе будут считаться исполнимыми, если система не поддерживает других механизмов указания исполнимости файла. Альтернативно, noexec запрещает исполнение любых бинарных файлов вообще.
  • codepage=866 - указывает, какую кодировку использовать для трансляции имён файлов на файловой системе. Кириллическая русская кодовая страница для файловой системы FAT - 866. Длинные имена на файловой системе (VFAT) сохраняются в уникоде, реально эта настройка нужна только для дисков, записанных на отличных от Windows системах, не поддерживающих соглашения VFAT.
  • nls=utf8 - указывает модулю файловой системы, какую кодировку использовать при передаче данных системе (и пользователю). Старое название этой опции - iocharset использовать запрещено - она будет удалена в следующих версиях программы.

Схематично взаимодействие этих двух опций можно представить как:
FS <=charset=> OS <=nls=> Applications <=> Operator

  • uid (gid) - указывает, какой пользователь (группа) будет владеть точкой подключения (и файлами на ней, если нет других способов определить владельца). gid=plugdev указывает, что все пользователи в группе 46(plugdev) могут обращаться к этому устройству. Локальные пользователи в Ubuntu обычно входят в эту группу.
  • umask=0002 - подробности смотрите в __man chmod__
  • nofail - если указанный том недоступен в момент загрузки, это не создаст ошибок и загрузка нормально продолжится.
    Внимание: настольная (desktop) версия Ubuntu всё равно выдаст предупреждение и будет ждать ввода пользователя.
  • users - допускает монтирование и размонтирование устройства обычными пользователями, причём, в отличие от user, размонтировать устройство может любой пользователь, не обязательно тот, что его монтировал.

Более подробно о монтировании разделов диска и опций к нему можно узнать из статьи про fstab, а также в статье разделы_и_файловые_системы_linux.

Донастройка системы

Теперь диски стали подключаться автоматически, но так как это делается от имени root, у нас пропала возможность на подключенных дисках давать права на общий доступ, чтобы восстановить эту возможность добавим настройку в Samba:

sudo gedit /etc/samba/smb.conf

добавим в секцию [global]:

usershare owner only = false

Это ОЧЕНЬ ГРУБЫЙ ХАК. Для нормальной работы с пользователями на NTFS дисках - создайте на NTFS разделе файл .NTFS-3G/UserMapping

Ссылки