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

У меня есть сценарий, который мне нужно выполнить на разделе NTFS. Разрешение скрипта установлено на 600.

Я попытался изменить разрешения, выполнив chmod 755 script.sh, который не сообщает о сбое или что - то в этом роде , но он также не изменяет разрешения для файла:

$ stat script.sh  File: `script.sh'  Size: 297070      Blocks: 584        IO Block: 4096   regular fileDevice: 811h/2065d  Inode: 35515       Links: 1Access: (0600/-rw-------)  Uid: ( 1000/  xxxxxx)   Gid: ( 1000/  xxxxxx)Access: 2010-09-30 14:05:16.041621000 -0700Modify: 2010-09-30 14:05:05.070157000 -0700Change: 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 fileDevice: 811h/2065d  Inode: 35515       Links: 1Access: (0600/-rw-------)  Uid: ( 1000/  xxxxxx)   Gid: ( 1000/  xxxxxx)Access: 2010-09-30 14:05:16.041621000 -0700Modify: 2010-09-30 14:05:05.070157000 -0700Change: 2010-09-30 14:05:05.070475000 -0700

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

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

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

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

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

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

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

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

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

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

Сначала размонтируйте раздел ntfs.

Идентифицируйте UUID вашего раздела с помощью blkid

sudo blkid

Затем отредактируйте /etc/fstab

# Graphical gksu gedit /etc/fstab# Command linesudo -e /etc/fstab

И добавьте или отредактируйте строку для раздела ntfs

# change the "UUID" to your partition UUIDUUID=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 script.sh

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

Согласно Права собственности и разрешения раздел документации NTFS-3G, мы можем использовать параметры монтирования для управления файлом доступ и создание. Комбинации очень сложны (см. Две таблицы там). Кроме того, я не читаю и не получаю их все. Например, я не знаю, выбран ли POSIX ACLs во время компиляции или нет двоичного пакета 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, но некоторые неизвестный учетная запись появилась под Сид. В результате получился беспорядок, так как эта неизвестная учетная запись становится владельцем всех файлов моей учетной записи Windows. В этой ситуации, если у вас нет прав администратора, чтобы вернуть себе права собственности, файлы под вашей учетной записью Windows становятся недоступными. Но даже если у вас чесотка, это все еще неправильное отображение. Это означает, что позже любые файлы, которые вы создаете в Linux, будут назначены этой неизвестной учетной записи в Windows, а файлы в Windows будут назначены root в Linux (если я правильно помню). Таким образом, в Windows вам нужно снова стать владельцем, а в Linux сменить владельца. Это не то, чего мы ожидаем. После нескольких безнадежных попыток устранить проблему я сдался и обратился к версии Windows. Это сработало. Ниже приведены подробные инструкции, извлеченные из соответствующего раздела документации NTFS-3G.:

  1. Загрузите карта пользователя инструмент, извлеките его куда-нибудь (в моем случае диск 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 loginuser::SID:group: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. Похоже, что без этой настройки полные разрешения будут предоставлены others для вновь созданных файлов.

Сохраните файл. Сейчас sudo mount или перемонтировать (sudo umount и затем sudo mount) общий раздел NTFS (в моем случае /data):

$ sudo mount /data

Часть 3

Сейчас (все еще в Linux) cd к точке монтирования (в моем случае, /data), ls -l файлы там. Проверьте, соответствуют ли их права собственности и разрешения соответственно тем, которые вы указали в UserMapping файл и umask вы сидите в /etc/fstab (соответствие между разрешениями и umask требуется некоторый расчет дополнения, см. мужчина (1) умаск для получения дополнительной информации). Если они это сделают, поздравляю, половина цели достигнута. В противном случае, бедный ты. Спросите Ubuntu или Windows.

Затем создайте новый каталог и новый файл. ls -l чтобы проверить их права собственности и разрешения. Владельцем должно быть ваше имя пользователя и основная группа, как обычно. Разрешения должны соответствовать umask. Теперь перезагрузите компьютер и загрузитесь в Windows. Найдите в общем разделе NTFS каталог и файл, которые вы только что создали в Linux. Проверьте их свойства, чтобы узнать, назначены ли они вашей учетной записи Windows. Если это так, поздравляю, вы все закончили. В противном случае - неудача. Спросите Windows или Ubuntu.

EOF

Все шаги:

  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. Перемонтировать NTFS раздел для добавления UserMapping файл:

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

    sudo vim /etc/fstab

    Обновление монтировать линия:

    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 0UUID=34A0456DA04536A0 /mnt/windows ntfs-3g defaults 0 0

  6. Наконец, перемонтируйте устройство с помощью вашего fstab:

    sudo umount /mnt/windowssudo mount -a

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

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

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

Старая тема, я знаю, но все еще актуальна и в ней отсутствует конкретный совет по использованию, составленный из различных предложений на различных других форумах / темах и протестированный на 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

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

Убедитесь, что Быстрый запуск отключен

Если Windows использует быстрый запуск, она находится в полу-гибернации, а ее файловая система "грязная", и Linux монтирует ее только для чтения, чтобы избежать повреждения. Любой перезагрузите Windows (вместо выключения) или отключить Быстрый запуск (настройка в Windows), и Linux готов смонтировать файловую систему Windows с доступом на запись.

Смонтируйте раздел NTFS на USB-накопителе с пользовательскими разрешениями и владельцем

В Linux режим NTFS (а также FAT32 и exFAT) определяется разделом варианты крепления. Вы не можете изменить его с помощью 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 syntaxsudo 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 syntaxsudo 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  # generalsudo mount -o rw,users,umask=000,exec /dev/sdb1 /mnt/sd1  # modify to match your case

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

Можно найти лучшее решение here Эти два вопроса должны быть связаны!