пятница, 3 октября 2008 г.

Linux. Работаем с NTFS или Куда делись мои жесткие диски

Проблема довольно распространенная. Вы устанавливаете дистрибутив, загружаете, а он не видит ваши NTFS-диски. Делаете то же самое в другом дистрибутиве - там все отлично.
Как вариант - можно остаться работать в том дистрибутиве, где они видны. Но гораздо правильнее будет попытаться подключить их вручную, чем менять дистрибутив.

На каждом дистрибутиве насколько я заметил есть свои заморочки. Заключаются они в параметрах, которые надо указывать. Но более менее суть одна и подойдет к любому дистрибутиву. К тому же некоторые вещи можно либо прочесть в справке, либо дополнительно спросить на форумах.

NTFS на чтение

Для начала просто откроем нужные разделы на чтение.
Информация о монтируемых в системе дисках лежит в файле "/etc/fstab"
Вот что, например, написано в моём:

/dev/hda6 / ext3 noatime 1 1
none /proc proc defaults 0 0
/dev/hda7 swap swap defaults 0 0

hda6 - основной Linux раздел
hda7 - Linux swap-раздел

Для того чтобы добавить свои NTFS диски необходимо указать:
Что -- Куда -- Тип файловой системы -- Параметры -- 0 0

Здесь "0 0" в конце это тоже параметры, но их можно оставить нулями.
Итак, у меня есть NTFS-раздел hda1. Чтобы добавить его в файл надо написать такую строку:

/dev/hda1 /mnt/win_c ntfs umask=0022,nls=utf8,ro 0 0

Итак, мы монтируем "hda1" в папку "/mnt/win_c" с параметрами "umask=0022,nls=utf8,ro".
umask=0022 - маска доступа к файлам и каталогам. Разрешает всем доступ только на чтение и выполнение, кроме root'a (впрочем неважно, все равно диск на чтение, и даже root ничего не запишет)
nls=utf8 - кодировка, чтобы нормально отображались файлы с русскими буквами в названии. Если с этим возникли проблемы можете указать вместо "nls=utf8" параметр "locale=ru_RU.UTF-8"
ro - ReadOnly, т.е. доступ только на чтение

Важно отметить, что параметры, которые вы задаете, это параметры команды mount, и подробнее о них вы соответственно можете узнать из "man mount"

NTFS на запись

Для того чтобы открыть доступ к NTFS на запись необходимо установить в систему пакет ntfs-3g, который позволит вам записывать информацию на NTFS.
В файл "/etc/fstab" в этом случае необходимо будет добавить такую строку:

/dev/hda1 /mnt/win_c ntfs-3g defaults,umask=0,locale=ru_RU.UTF-8 0 0

Итак. Вместо "ntfs" указали "ntfs-3g".
Параметр "umask=0" разрешает делать с NTFS-диском всё что угодно всем желающим. Не очень верно с точки зрения безопасности, и у многих вместо "umask=0" присутствуют 2 таких параметра: "umask=007,gid=46". В любом случае, один из вариантов, скорее всего должен сработать.

Таким образом после перезагрузки системы Linux должна увидеть и подхватить NTFS-диски на запись или чтение, в зависимости от того, что вы указали в файле.
Если что-то не работает - экспериментируйте с параметрами!

P.S. (добавлено спустя много месяцев):
На самом деле всё проще. Сейчас у меня Дебиан и строка параметров как для NTFS-диска на чтение, так и для NTFS-диска на запись - одинаковая:
defaults,umask=007,gid=46,nls=utf8

- umask разрешает всё владельцу (root надо полагать) и группе; остальным доступ запрещён, ибо нефиг
- группа выставляется номер 46; заметьте, это не имя, а номер. Всех пользователей, которым вы хотите предоставить доступ к NTFS дискам нужно не забыть включить в эту группу в файле "/etc/group". Например, командой:
useradd -G groupname username

Если вам помогла эта статья - оставьте комментарий! Они доступны даже не зарегистрированным пользователям.

За помощь в вопросе спасибо GrayCat, Noki.


2 комментария:

Pavel Odintsov комментирует...

А между тем, теперь почти во всех дистрах диски не hd*, а sd*.

Фимпус комментирует...

купить семена адениума

Взрослые адениумы и саженцы