Как использовать 'chmod' на NTFS (или FAT32) разделе?
У меня есть скрипт, который мне нужно выполнить в разделе NTFS. Разрешение сценария установлено на 600.
Я попытался изменить разрешения, запустив chmod 755 script.sh
, который не сообщает о сбое или о чем-либо - но это также не меняет разрешения для файла:
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
$ chmod 755 script.sh
$ stat script.sh
File: `script.sh'
Size: 297070 Blocks: 584 IO Block: 4096 regular file
Device: 811h/2065d Inode: 35515 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx)
Access: 2010-09-30 14:05:16.041621000 -0700
Modify: 2010-09-30 14:05:05.070157000 -0700
Change: 2010-09-30 14:05:05.070475000 -0700
Как видите, оно остается неизменным.
10 ответов
Режим определяется параметрами монтирования раздела (вы не можете изменить его с помощью chmod).
Для "755" для файлов и "777" для каталогов вы должны использовать что-то вроде
sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
Вопреки мнению большинства людей, NTFS - это POSIX-совместимая файловая система, и на NTFS можно использовать разрешения.
Чтобы включить это, вам нужен "Файл сопоставления пользователей" или просто дать permissions
опция при монтировании (когда не требуется совместимость с Windows). Это сопоставляет пользователей linux в вашей системе с внутренними идентификаторами пользователей, такими как NTFS/Windows.
См. Страницу руководства ntfs-3g для получения дополнительной информации и примеров. Если вам нужна дополнительная информация, обратитесь к расширенной документации ntfs-3g о владельцах и разрешениях.
(Обратите внимание, что это не работает на файловых системах FAT.)
¹ Да, он также может хранить имена файлов, которые действительны в Linux/ Unix, но не под Windows, поддерживает символические ссылки и жесткие ссылки и т. Д.
Для разделов NTFS используйте permissions
вариант в фстаб.
Сначала размонтируйте раздел ntfs.
Определите ваш раздел UUID с blkid
sudo blkid
Затем отредактируйте /etc/fstab
# Graphical
gksu gedit /etc/fstab
# Command line
sudo -e /etc/fstab
И добавьте или измените строку для раздела NTFS
# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0
Сделать точку монтирования (при необходимости)
sudo mkdir /media/windows
Теперь смонтируйте раздел
mount /media/windows
Варианты, которые я тебе дал, auto
, будет автоматически монтировать раздел при загрузке и users
позволяет пользователям монтировать и размонтировать.
Затем вы можете использовать chown и chmod в разделе ntfs.
В дополнение к настройке fmask и / или dmask в ответе htorque выше, если вы хотите выполнить сценарии на диске, мне также пришлось установить параметр монтирования "exec".
Таким образом, пример будет:
sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
Вы всегда можете явно вызвать интерпретатор сценария, в этом случае разрешения на выполнение не требуются. Если скрипт использует bash, что можно проверить, посмотрев на первую строку скрипта, просто запустите
bash script.sh
Обратите внимание, что скрипт вызывает другие скрипты или двоичные файлы в том же разделе, это не будет работать. Также обратите внимание, что стратегия не работает с двоичными файлами, в отличие от текстовых файлов сценариев, написанных на Bash Script, Perl, Python и т.п.
Смонтируйте раздел NTFS на USB-накопителе с пользовательскими правами и владельцем
В Linux режим NTFS (и FAT32) определяется параметрами монтирования раздела. Вы не можете изменить это через chmod.
Предположение: USB-накопитель видится как sdb1
измените в соответствии с буквой диска и номером раздела в вашем случае. Общий синтаксис sdxn
, где x
это буква диска и n
номер раздела, как видно, например, sudo lsblk -f
Подготовка
Размонтируйте раздел NTFS.
sudo umount /dev/sdxn # general syntax sudo umount /dev/sdb1 # modify to match your case
Создайте пользовательскую точку монтирования (только если вы хотите новую точку монтирования), например, с
sudo mkdir -p /mnt/sd1
Проверьте ваши идентификаторы
uid
число (обычно 1000, иногда 1001 или 1002 ...)grep ^"$USER" /etc/group
и использовать этот номер, если вы хотите получить право собственности (по умолчанию
root
).
Смонтировать раздел NTFS
Пример 1 (без прав на выполнение файлов, нет доступа для "других"),
sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdxn /mnt/sd1 # general syntax
sudo mount -o rw,user,uid=1000,dmask=007,fmask=117 /dev/sdb1 /mnt/sd1 # modify to match your case
в этом случае вы можете запустить скрипт
this-script
сbash /mnt/sd1/this-script
Пример 2 (с правами на выполнение для файлов, нет доступа для "других"),
sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdxn /mnt/sd1 # general syntax
sudo mount -o rw,user,uid=1000,umask=007,exec /dev/sdb1 /mnt/sd1 # modify to match your case
В этом случае вы можете запустить скрипт
this-script
с/mnt/sd1/this-script
и вы также можете запускать исполняемые программы из этого места (не то, что рекомендуется).
Пример 3 (полные разрешения для всех, что удобно, но не безопасно, когда есть несколько пользователей),
sudo mount -o rw,users,umask=000,exec /dev/sdxn /mnt/sd1 # general
sudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1 # modify to match your case
Все шаги:
устанавливать
ntfs-3g
:sudo apt-get install -y ntfs-3g
Размонтировать раздел NTFS:
sudo umount /mnt/windows
использование
ntfs-3g.usermap
создать свойUserMapping
файл:sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
или же
sudo ntfs-3g.usermap /dev/sdb1
Перемонтировать раздел NTFS для добавления
UserMapping
файл:mount -a sudo mkdir /mnt/windows/.NTFS-3G sudo mv UserMapping /mnt/windows/.NTFS-3G/
Обновите свой
fstab
файл:sudo vim /etc/fstab
Обновить строку монтирования:
- Сделайте резервную копию вашей текущей линии монтирования! Дублируйте строку и прокомментируйте ее, добавив
#
в начале. - Изменить следующее:
UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
- По следующему:
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
(Использованиеntfs-3g
и толькоdefault
опция)
Это должно выглядеть примерно так:
#UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0
- Сделайте резервную копию вашей текущей линии монтирования! Дублируйте строку и прокомментируйте ее, добавив
Наконец, перемонтируйте, используя ваш
fstab
:sudo umount /mnt/windows sudo mount -a
Сделайте это один раз для каждого раздела NTFS!
ВНИМАНИЕ С ОС Windows!
Я проверяю это с Windows 7+ и разрешения влияют на ОС Windows! Я изменяю права доступа моего домашнего каталога в разделе Windows, и когда я снова использовал Windows, я мог видеть, что пользователь сломался!
В соответствии с разделом " Владение и разрешения " документации NTFS-3G, мы можем использовать параметры монтирования для управления доступом к файлам и их созданием. Комбинации очень сложны (см. Две таблицы там). Также я не читаю и получаю все из них. Например, я не знаю, выбран ли POSIX ACL во время компиляции или нет двоичного пакета NTFS-3G. Но лучшее, что я получил, - это использование файла сопоставления пользователей в сочетании с некоторыми вариантами монтирования, чтобы приблизить вероятное сопоставление владения файлами и разрешений между Windows и Linux.
Предупреждение: это только то, что лучше всего подходит для общего доступа к разделу данных NTFS (диск D:
на Windows) между двойной загрузкой Windows 8 и Kubuntu 14.04. Инструкции записаны в тщательной ретроспективе, но не полностью проверены. Это слишком утомительно и утомительно, чтобы повторить всю процедуру снова. Так что следуйте этому на свой страх и риск. Но если вы это сделаете, поделитесь своим опытом. Если вы решите следовать инструкциям, прочитайте их полностью, чтобы получить полную картину, прежде чем действовать. Удачи!
Хорошо, вот и ты! Подробные инструкции состоят из трех частей. Часть 1 должна выполняться в Windows, а часть 2 в Linux. Часть 3 для теста.
Часть 1
В разделе " Сопоставление пользователей " документации NTFS-3G указаны две версии для настройки сопоставления пользователей между Windows и Linux, одна версия Windows и одна версия Linux. По моему опыту, версия для Linux закончилась промахом. Учетная запись Linux не была сопоставлена с моей учетной записью Windows, но под SID появилась некоторая неизвестная учетная запись. В результате возникла путаница, поскольку эта неизвестная учетная запись становится владельцем всех файлов моей учетной записи Windows. В этой ситуации, если у вас нет прав администратора для возврата прав собственности, файлы под вашей учетной записью Windows становятся недоступными. Но даже если вы измените, это все равно неправильное отображение. Это означает, что позже все файлы, которые вы создаете в Linux, будут назначены этой неизвестной учетной записи в Windows, а те, что в Windows, будут назначены пользователю root (если я правильно помню). Таким образом, в Windows вам нужно вернуть право собственности снова, а в Linux сменить владельца. Это не то, что мы ожидаем. После нескольких безнадежных попыток исправить проблему я сдался и перешел к версии для Windows. Это сработало. Подробные инструкции, извлеченные из соответствующего раздела документации NTFS-3G, приведены ниже:
Загрузите инструмент usermap, распакуйте его куда-нибудь (в моем случае, диск
C:
) лучше вне раздела NTFS (в моем случае дискD:
) чтобы поделиться.Откройте командную строку Windows. Перейдите в извлеченный каталог
tools
(по умолчанию)usermap
инструмент. Затем выполните следующую команду:C:\tools> mapuser > UserMapping
Это создает шаблон и перенаправляет его в файл с именем
UserMapping
, Откройте файл с помощью текстового редактора, скажем, Блокнот, вы должны увидеть следующие строки:# Generated by usermap for Windows, v 1.1.5 # For Windows account "Account" in domain "Domain" # Replace "user" and "group" hereafter by matching Linux login user::SID :group:SID
Предположительно, первый
SID
должен быть ваш SID пользователя, а второй - SID вашей группы. Вы можете проверить их соответственно командамиwhoami /user
а такжеwhoami /groups
,После того, как вы убедитесь, что SID верны, следуйте инструкциям в комментарии, то есть измените
user
вuser::SID
линия к вашему имени пользователя иgroup
в:group:SID
строка с названием вашей основной группы в Linux. На Ubuntu они одинаковые. Кроме того, добавьте имя вашей группы Linux также после первого двоеточияuser::SID
линия. Так что линия должна выглядеть примерно такuser:group:SID
, Похоже, что в противном случае файлы, созданные в Windows, будут назначеныuser:root
в линуксеСохраните файл. Переместите его в каталог с именем
.NTFS-3G
(создайте его, если он еще не существует) в разделе NTFS для совместного использования (в моем случае дискD:
).Этот шаг предназначен для тестирования в части 3. В общем разделе NTFS создайте новый каталог и новый файл.
Часть 2
Теперь загрузитесь в Linux. sudo
редактировать файл /etc/fstab
, Добавьте или измените строку для общего раздела NTFS примерно так:
UUID=... /data ntfs defaults,umask=077,utf8 0 0
Необходимо установить umask
(dmask
а также fmask
также может работать, но не проверено). Выберите значение для umask
тебе нравится, хотя я выбрал 077
, Кажется, без этой настройки, полные разрешения будут предоставлены o
Thers для вновь созданных файлов.
Сохраните файл. Сейчас sudo mount
или перемонтировать (sudo umount
а потом sudo mount
) общий раздел NTFS (в моем случае /data
):
$ sudo mount /data
Часть 3
Сейчас (все еще в Linux) cd
до точки монтирования (в моем случае, /data
), ls -l
файлы там. Проверьте, совпадают ли их права доступа и права доступа, указанные вами в UserMapping
файл и umask
Вы установили в /etc/fstab
(соответствие между разрешениями и umask
требуется некоторое вычисление дополнения, см. man (1) umask для получения дополнительной информации). Если они это сделают, поздравляем, половина цели достигнута. Иначе бедный ты. Спросите Ubuntu или Windows.
Затем создайте новый каталог и новый файл. ls -l
проверить их право собственности и разрешения. Владельцем должно быть ваше имя пользователя и основная группа, как обычно. Разрешения должны соответствовать umask
, Теперь перезагрузите компьютер и загрузитесь в Windows. Найдите в общем разделе NTFS каталог и файл, который вы только что создали в Linux. Проверьте их свойства, чтобы увидеть, назначены ли они вашей учетной записи Windows. Если они, поздравляю, вы все сделали. В противном случае невезение. Спросите Windows или Ubuntu.
EOF
Старая ветка, я знаю, но она все еще актуальна, и в ней отсутствует конкретный пример использования, составленный из разных предложений на различных других форумах / темах и протестированный на Ubuntu GNOME 13.04, где я хотел, чтобы внешний диск содержал библиотеку Steam...
Например, если раздел NTFS находится на внешнем USB-диске - это означает, что раздел монтируется на лету при подключении - тогда вы можете использовать следующий метод, чтобы udev монтировал разделы ntfs с правами на выполнение.
Откройте окно терминала и выполните:
$ sudo nano /etc/udev/rules.d/90-usb-disks.rules
Затем вставьте эту строку в то, что должно быть пустым / новым файлом (если нет, то выйдите из nano и повторите команду, начиная имя файла с большего числа, например, 91-...):
ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs-3g"
Затем сохраните и закройте. Отключите диск и затем выполните в терминале:
$ sudo service udev restart
Далее подключите диск обратно и наслаждайтесь:)
Существует вопрос, связанный с USB-устройствами. Этот ответ дает неприятный взлом, если вы хотите автоматически подключить каждое USB-устройство с разрешениями на выполнение.