Как использовать '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

видите, это остается неизменным.

145
задан 11 February 2014 в 15:37

10 ответов

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

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

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
86
ответ дан 11 February 2014 в 15:37

Для разделов 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 , автоматически монтируют раздел при загрузке, а пользователи позволяют пользователям монтировать и размонтировать.

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

45
ответ дан 11 February 2014 в 15:37

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

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

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

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

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

97
ответ дан 11 February 2014 в 15:37

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

bash script.sh

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

14
ответ дан 11 February 2014 в 15:37

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

Далее подключите диск обратно и наслаждайтесь :)

7
ответ дан 11 February 2014 в 15:37

Все шаги:

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

     sudo apt-  получить установить -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 -a
    судо mkdir /mnt/windows/.NTFS-3G
    sudo mv UserMapping /mnt/windows/.NTFS-3G/
     
  5. Обновите файл fstab :

     sudo vim / etc / fstab
     

    Обновите строку монтирования :

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

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

    # UUID = 34A0456DA04536A0 / mnt / windows ntfs defaults, uid = 1000, gid = 1000 0 0 UUID = 34A0456DA04536A0 / mnt / windows ntfs-3g по умолчанию 0 0

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

     sudo umount / mnt / windows
    sudo mount -a
     

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

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

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

7
ответ дан 11 February 2014 в 15:37

Помимо установки маски fmask и/или dmask в приведенном выше ответе htorque, если вы хотите выполнять скрипты на диске, мне нужно было также установить опцию "exec" mount.

Итак, пример будет:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
20
ответ дан 11 February 2014 в 15:37

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

1
ответ дан 11 February 2014 в 15:37

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

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

Предположение: USB-накопитель рассматривается как sdb1 , модифицированный, чтобы соответствовать букве диска и номеру раздела в вашем случае . Общий синтаксис: sdxn , где x - это буква диска, а n - это номер раздела, например sudo lsblk -f

Подготовка

  • Отключить раздел NTFS.

     sudo umount / dev / sdxn # общий синтаксис
    sudo umount / dev / sdb1 # измените в соответствии с вашим случаем
     
  • Создайте пользовательскую точку монтирования (только если вам нужна новая точка монтирования), например, с помощью

     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 / этот-скрипт
     

    , и вы также можете запускать исполняемые программы из этого места (не то, чтобы это рекомендовалось).

Пример 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
5
ответ дан 11 February 2014 в 15:37

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

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

  2. Откройте командную строку Windows. Перейдите в извлеченный каталог tools (по умолчанию) инструмента usermap . Затем выполните следующую команду:

     C: \ tools> mapuser> UserMapping
     

    При этом создается шаблон и перенаправляется в файл с именем UserMapping . Откройте файл в текстовом редакторе, скажем, в Блокноте, вы должны увидеть следующие строки:

     # Создано пользовательской картой для Windows, v 1.1.5
     # Для учетной записи Windows "Account" в домене "Domain"
     # Замените здесь и далее "пользователь" и "группу" на соответствие логина Linux
    user :: SID
     : group: SID
     

    Предположительно, первый SID должен быть вашим идентификатором безопасности пользователя, а второй - идентификатором безопасности группы. Вы можете проверить их, соответственно, с помощью команд whoami / user и whoami /groups.

  3. . После того, как вы убедитесь, что SID верны, следуя инструкциям в комментарии, измените пользователь в строке user :: SID к вашему имени пользователя и группа в строке : group: SID к имени вашей основной группы в Linux. В Ubuntu они такие же. Кроме того, добавьте имя вашей группы Linux также после первого двоеточия строки user :: SID . Таким образом, строка должна выглядеть примерно так user: group: SID . Похоже, что, если этого не сделать, файлы, созданные в Windows, будут назначены пользователю : 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 . Похоже, что без этого параметра все права будут предоставлены или им для вновь созданных файлов.

Сохраните файл. Теперь 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 , чтобы проверить их право собственности и разрешения. Владельцем должно быть ваше имя пользователя и основная группа, как обычно. Разрешения должны соответствовать маске . Теперь перезагрузите компьютер и загрузитесь в Windows. Найдите в общем NTFS-разделе каталог и файл, которые вы только что создали в Linux. Проверьте их свойства, чтобы узнать, назначены ли они вашей учетной записи Windows. Если да, поздравляю, все готово. В противном случае - неудача. Спросите Windows или Ubuntu.

EOF

10
ответ дан 11 February 2014 в 15:37

Другие вопросы по тегам:

Похожие вопросы: