Как использовать 'chmod' в разделе NTFS (или FAT32)?

112

У меня есть сценарий, который мне нужно выполнить на разделе 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

Как вы можете видеть, он остается неизменным.

    
задан Nathan Osman 06.11.2010 в 23:12
источник

10 ответов

70

Режим определяется настройками монтирования раздела (вы не можете изменить его с помощью chmod).

Для '755' в файлах и '777' в каталогах вы будете использовать что-то вроде

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
    
ответ дан htorque 06.11.2010 в 23:35
источник
72

В отличие от большинства людей, NTFS - это файловая система, совместимая с POSIX¹, и можно использовать разрешения для NTFS .

Чтобы включить это, вам понадобится «Файл сопоставления пользователя» или просто укажите параметр permissions при установке (если не требуется совместимость с Windows). Это отображает пользователей linux в вашей системе с идентификаторами пользователей, такими как NTFS / Windows, которые используют их внутри.

Для получения дополнительной информации см. справочную страницу ntfs-3g Примеры. Если вам нужна дополнительная информация, см. Документацию ntfs-3g о правах собственности и разрешениях .

(Обратите внимание, что это не работает в файловых системах FAT.)

¹ Да, он также может хранить имена файлов, которые действительны в linux / unix, но не под Windows, поддерживает символические ссылки и amp; hardlinks и т. д.

    
ответ дан JanC 02.11.2011 в 16:57
источник
33

Для разделов NTFS используйте параметр permissions в fstab.

Сначала отключите раздел 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 позволяет пользователям монтировать и umount.

Затем вы можете использовать chown и chmod в разделе ntfs.

    
ответ дан Panther 28.12.2011 в 16:31
источник
20

В дополнение к настройке fmask и / или dmask в ответе htorque выше, если вы хотите выполнить сценарии на диске, мне также нужно установить параметр монтирования «exec».

Таким образом, пример будет выглядеть следующим образом:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
    
ответ дан dbrews 14.12.2010 в 08:26
источник
13

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

bash script.sh

Обратите внимание, что сценарий вызывает другие скрипты или двоичные файлы в одном разделе, это не сработает. Также обратите внимание, что стратегия не работает с двоичными файлами, а не с текстовыми файлами сценариев, написанными в Bash Script, Perl, Python и т. П.

    
ответ дан loevborg 14.12.2010 в 10:00
источник
8

В разделе Права и разрешения раздела NTFS-3G документацию, мы можем использовать опции монтирования для управления файлом доступ и создание . Комбинации очень сложны (см. Две таблицы там). Также я не читаю и не получаю все. Например, я не знаю, выбраны ли ACL POSIX во время компиляции или нет бинарного пакета NTFS-3G. Но лучшее, что я выбрал, - это использовать файл сопоставления пользователей в сочетании с некоторым монтированием варианты для аппроксимации правдоподобного сопоставления прав собственности на файлы и разрешений между Windows и Linux.

Предупреждение . Это только то, что лучше всего подходит для обмена файлами NTFS (диск D: в Windows) между двумя загрузочными Windows 8 и Kubuntu 14.04. Инструкции записываются при тщательной ретроспекции, но не полностью проверены. Слишком утомительно и утомительно повторять всю процедуру. Поэтому следуйте этому на свой страх и риск. Но если вы это сделаете, расскажите о своем опыте. Если вы решите следовать инструкциям, пожалуйста, прочитайте его полностью, чтобы иметь полную картину до фактического действия. Удачи!

Хорошо, вот иди! Подробные инструкции состоят из трех частей. Часть 1 должна выполняться в Windows, а вторая часть - в Linux. Часть 3 предназначена для тестирования.

Часть 1

В разделе User Mapping документации NTFS-3G указаны две версии: настроить сопоставление пользователей между Windows и Linux, одну версию Windows и одну версию Linux. Мой опыт состоял в том, что версия Linux закончилась с miss . Учетная запись Linux была not сопоставлена ​​с моей учетной записью Windows, но какая-то учетная запись unknown появилась под SID . Результатом стал беспорядок, поскольку эта неизвестная учетная запись берет на себя все файлы моей учетной записи Windows. В этой ситуации, если у вас нет административной привилегии, чтобы вернуть ваше владение, файлы под вашей учетной записью Windows становятся недоступными. Но даже если вы управляете, это неправильное сопоставление still . Это означает, что позже все файлы, созданные вами в Linux, будут назначены этой неизвестной учетной записи в Windows, а те, которые в Windows, будут назначены для root в Linux (если я правильно помню). Таким образом, в Windows вам нужно снова взять на себя право собственности и на Linux изменить право собственности. Это не то, чего мы ожидаем. После нескольких безнадежных попыток решить проблему я сдался и перешел к версии Windows. Это сработало. Подробные инструкции, извлеченные из соответствующего раздела документации NTFS-3G, следуют:

  1. Загрузите инструмент usermap , извлеките его где-нибудь (в моем случае, диск C: ), лучше за пределами раздела NTFS (в моем случае диск D: ) для совместного использования.

  2. Откройте командную строку 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 .

  3. После того, как вы убедитесь, что SID верны, следуя инструкциям в комментарии, то есть измените user в строке user::SID на свое имя пользователя и group в строке :group:SID , чтобы ваше основное имя группы в Linux. На Ubuntu они одинаковы. Кроме того, добавьте свое имя группы Linux также после первого двоеточия строки user::SID . Таким образом, строка должна выглядеть примерно как user:group:SID . Похоже, что если не делать этого, файлы, созданные в Windows, будут назначены user:root в Linux.

  4. Сохраните файл. Переместите его в каталог с именем .NTFS-3G (создайте его, если он еще не существует) в разделяемом разделе NTFS (в моем случае диск D: ).

  5. Этот шаг предназначен для тестирования в части 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 или remount ( 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

    
ответ дан reflectionalist 22.08.2014 в 22:35
источник
5

Старый поток, я знаю, но по-прежнему актуальный и пропущенный конкретный вопрос использования, составленный из разных предложений на других форумах / потоках и протестированных на Ubuntu GNOME 13.04, где мне нужен внешний диск для хранения библиотеки Steam ...

Если раздел NTFS находится на внешнем USB-накопителе, например, что означает, что раздел монтируется «на лету» при подключении, то вы можете использовать следующий метод для создания разделов udev mount 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

Затем подключите диск и наслаждайтесь:)

    
ответ дан user17254 14.09.2013 в 23:51
источник
2

Все шаги:

  1. Установите ntfs-3g :

    sudo apt-get install -y ntfs-3g
    
  2. Отключить раздел NTFS :

    sudo umount /mnt/windows
    
  3. Используйте ntfs-3g.usermap для создания файла UserMapping :

    sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS
    

    или

    sudo ntfs-3g.usermap /dev/sdb1
    
  4. Remount NTFS для добавления UserMapping файла:

    mount -a
    sudo mkdir /mnt/windows/.NTFS-3G
    sudo mv UserMapping /mnt/windows/.NTFS-3G/
    
  5. Обновите файл fstab :

    sudo vim /etc/fstab
    

    Обновить строку mount :

    1. Резервное копирование текущей линии монтирования! Дублируйте строку и прокомментируйте ее, добавив сначала # .
    2. Изменить следующее: UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0
    3. К следующему: UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 (Используйте ntfs-3g и только default )

    Он должен выглядеть примерно так:

    #UUID=34A0456DA04536A0 /mnt/windows ntfs defaults,uid=1000,gid=1000 0 0 % Co_de%

  6. Наконец, перемонтируйте с помощью UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0 :

    sudo umount /mnt/windows
    sudo mount -a
    

Сделайте это один раз для каждого раздела NTFS , который у вас есть!

ПРЕДУПРЕЖДЕНИЕ С ОС WINDOWS!

Я проверяю его с помощью Windows 7 + , и разрешения влияют на ОС Windows! Я меняю разрешения моего домашнего каталога на разделе Windows, и когда я снова использовал Windows, я мог видеть, что пользователь был сломан!

    
ответ дан Eduardo Cuomo 26.02.2017 в 14:49
источник
1

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

    
ответ дан lumbric 28.12.2011 в 15:06
источник
1

Смонтируйте раздел 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 вашего userID (обычно 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
    
ответ дан sudodus 15.09.2017 в 11:02
источник

Ознакомьтесь с другими вопросами по меткам