Почему я не могу изменить права доступа к файлам? [dубликат]

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

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

121
задан 11 February 2014 в 17:37

18 ответов

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

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

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
74
ответ дан 18 July 2018 в 07:38

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

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

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever
75
ответ дан 24 July 2018 в 18:50

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

1
ответ дан 18 July 2018 в 07:38

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

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

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
20
ответ дан 18 July 2018 в 07:38

Все шаги:

Установить 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 добавить файл 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 [ ! d1]

Сделайте это один раз для каждого раздела NTFS!

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

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

2
ответ дан 18 July 2018 в 07:38

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

bash script.sh

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

13
ответ дан 18 July 2018 в 07:38

Для разделов 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.

33
ответ дан 18 July 2018 в 07:38

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

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

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

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

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

76
ответ дан 18 July 2018 в 07:38

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

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

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

sdb1 [ ! d10] Отключите раздел 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

, чтобы соответствовать букве диска и номеру раздела в вашем случае (без разрешения на выполнение для файлов, без доступа к «другим») ),

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 Отключите раздел NTFS. sudo umount /dev/sdxn # general syntax sudo umount /dev/sdb1 # modify to match your case

Пример 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

Отключите раздел NTFS. [ ! d14] /mnt/sd1/this-script , и вы также можете запускать исполняемые программы из этого места (не рекомендуется).

В этом случае вы можете запустить скрипт this-script с помощью

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
1
ответ дан 18 July 2018 в 07:38

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

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

5
ответ дан 18 July 2018 в 07:38

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

1
ответ дан 24 July 2018 в 18:50

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

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

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever
20
ответ дан 24 July 2018 в 18:50

Все шаги:

Установить 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 добавить файл 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 [ ! d1]

Сделайте это один раз для каждого раздела NTFS!

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

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

2
ответ дан 24 July 2018 в 18:50

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

bash script.sh

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

13
ответ дан 24 July 2018 в 18:50
  • 1
    +1 - Я никогда не думал об этом так. – Nathan Osman 15 December 2010 в 00:58
  • 2
    Для выполнения двоичных файлов используйте /lib64/ld-linux-x86-64.so.2 ./program.bin для 64-битных программ и /lib/ld-linux.so.2 ./program.bin для 32-разрядных. – Lekensteyn 14 April 2012 в 00:52

Для разделов 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.

33
ответ дан 24 July 2018 в 18:50
  • 1
    Как хранятся эти разрешения? В ADS? Другие метаданные? – hexafraction 5 November 2012 в 01:47
  • 2
    Как насчет fat32? У меня есть карта micro sd, которая защищена от записи и я не могу получить доступ, отформатируйте ее. – Waqas 8 November 2013 в 23:27
  • 3
    @RanaMuhammadWaqas - это старый вопрос, но вы также можете установить его с различными параметрами. Трудно понять, в чем ваша проблема, возможно, определить ваше оборудование и задать отдельный вопрос. – Panther 8 November 2013 в 23:28
  • 4
    @ bodhi.zazen users подразумевает noexec , nosuid и nodev . нет? Как пользователи могут монтировать / umount с установленным noexec? – Khurshid Alam 23 June 2015 в 16:32
  • 5
    @EduardoCuomo - Опубликовать комментарий в ответе о том, что он не работает, вряд ли поможет вам. Какая файловая система? Предлагаю вам открыть вопрос. Вам нужно идентифицировать файловую систему и опубликовать запись fstab – Panther 27 February 2017 в 22:28

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

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

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

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

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

78
ответ дан 24 July 2018 в 18:50
  • 1
    здесь - хорошая документация. короче: sudo ntfs-3g.usermap /dev/disk/by-label/MY-NTFS, а затем sudo mv UserMapping /media/MY-NTFS/.NTFS-3G/ – flying sheep 7 January 2013 в 05:40
  • 2
    Таким образом, это позволит вам произвольно устанавливать разрешения, такие как chmod 655 /some/file на разделе NTFS, смонтированном в Linux? Я пытаюсь понять, как объединить мой домашний раздел с linux в c: \ Users. Будет ли использование usermap позволять мне сохранить все разрешения? Я планировал установить каталог c: \ Users в / home в linux. – trusktr 13 February 2014 в 13:22
  • 3
    это должен быть принятый ответ. – petermolnar 22 July 2015 в 17:28
  • 4
    Позвольте мне еще раз подчеркнуть ваше замечание: «когда не требуется совместимость с Windows». ref: askubuntu.com/questions/92863/… – Eliptical view 13 September 2016 в 04:15
  • 5
    ntfs-3g manpage ссылка сломана – ctrl-alt-delor 29 September 2016 в 23:17

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

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

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

sdb1 [ ! d10] Отключите раздел 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

, чтобы соответствовать букве диска и номеру раздела в вашем случае (без разрешения на выполнение для файлов, без доступа к «другим») ),

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 Отключите раздел NTFS. sudo umount /dev/sdxn # general syntax sudo umount /dev/sdb1 # modify to match your case

Пример 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

Отключите раздел NTFS. [ ! d14] /mnt/sd1/this-script , и вы также можете запускать исполняемые программы из этого места (не рекомендуется).

В этом случае вы можете запустить скрипт this-script с помощью

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
1
ответ дан 24 July 2018 в 18:50
  • 1
    /media$ sudo mkdir -p sdb1 /media$ sudo mount -o rw,users,umask=000,exec /dev/sdb1 ./sdb1/ mount: block device /dev/sdb1 is write-protected, mounting read-only – alhelal 29 November 2017 в 20:02
  • 2
    @alhelal, я боюсь, что аппаратное обеспечение вашего USB-накопителя стало доступно только для чтения или «заблокировано сетью». Но также может возникнуть проблема с файловой системой, и если файловая система повреждена, вы можете исправить ее, восстановив ее в Windows либо с помощью GUI-метода, либо с помощью командной строки chkdsk /f X: в соответствии с этой ссылкой ubuntuforums.org/… - Если вам еще не повезло, сделайте резервную копию данных и попробуйте в соответствии с askubuntu.com/questions/144852/… – sudodus 29 November 2017 в 21:21

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

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

5
ответ дан 24 July 2018 в 18:50

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

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