Возможный дубликат:
Ubuntu отобрал разрешения у моего раздела данных
Я переформатировал раздел NTFS в моей системе с помощью ext4 потому что я хочу использовать его в моей текущей установке Ubuntu, а не в Windows. Я добавил запись в / etc / fstab
, чтобы смонтировать его при запуске. Точка монтирования - / home / username / bin
. Я сменил владельца / home / username / bin
и всех его подкаталогов на свою обычную учетную запись и ее группу пользователей. Наконец, я установил все разрешения на 755.
Мой / etc / fstab
выглядит следующим образом:
proc /proc proc nodev,noexec,nosuid 0 0
UUID=[uuid] / ext4 errors=remount-ro 0 1
UUID=[uuid] /data vfat utf8,umask=007,gid=46 0 1
UUID=[uuid] /home ext4 defaults 0 2
UUID=[uuid] /home/username/bin ext4 rw,suid,dev,exec,auto,user,async 0 2
UUID=[uuid] none swap sw 0 0
Моя проблема теперь в том, что, хотя я могу читать и записывать файлы в этом новом разделе, Я не могу запускать расположенные там приложения / программы. Как обычный пользователь, я всегда получаю сообщение об ошибке «Отказано в разрешении».Как root (с sudo
) ничего не происходит, а это означает, что я немедленно возвращаюсь в командную строку оболочки. Приложения должны выдавать текстовый вывод или открывать окна. Некоторые из этих приложений представляют собой двоичные файлы, некоторые - сценарии. Пробую запускать их с помощью ./ program
. Если я скопирую их обратно в свою домашнюю папку, я смогу запустить их без проблем.
На самом деле, я месяцами хранил эти приложения в другом подкаталоге / home / username / apps
моей домашней папки и запускал их оттуда без каких-либо проблем.
Как я могу это исправить? Что я делаю неправильно? :)
Я решил это. Проблема заключалась в опциях монтирования в /etc/fstab
. Изменение их на defaults
(что эквивалентно изменению с user
на nouser
) решает проблему, теперь все работает как положено.
Игнорировать этот - оригинальный пост подразумевал NTFS, но это не так.
Когда вы монтируете раздел NTFS, в отличие от ext3 или ext4, он монтируется с разрешениями, установленными только для пользователя, где группа и другие вообще не имеют разрешения (rwx ------). Установка разрешений с помощью chmod или установка владельца с помощью chown только изменит разрешения для каталога, но не для чего-либо в этом каталоге.
Решение состоит в том, чтобы указать правильные параметры в /etc/fstab/
. Вот те, которые я успешно использую, чтобы сделать себя владельцем (замените 0000000000000000 на правильный UUID и измените LOGIN_NAME на свое имя для входа):
UUID=0000000000000000 /home/LOGIN_NAME/bin ntfs-3g auto,users,uid=LOGIN_NAME,gid=LOGIN_NAME,utf8,dmask=002,fmask=113 0 0
Все это должно быть включено одна строка в fstab.
Причиной этого является то, что разрешения NTFS выполняются не так, как собственные разрешения Linux, поэтому для использования Linux необходимо указать определенные переводы.
Конец Игнорировать это -------------
РЕДАКТИРОВАТЬ:
Извините за неверное направление . [+1112]
Полагаю, вы можете это исправить, изменив владельца каталога ~ / bin после первого монтирования . В командной оболочке bash введите команду sudo chown LOGIN_NAME:LOGIN_NAME /home/LOGIN_NAME/bin
, конечно же, сменив LOGIN_NAME на свое имя.
Я проверил это с помощью USB-накопителя, и он отлично вмонтировался в мой каталог bin. Единственное отличие заключалось в том, что я использовал только опцию «auto» в fstab.
Вы пытались смонтировать этот раздел ext4 где-нибудь за пределами вашего домашнего каталога? Например, настройте его запись в / etc / fstab примерно так:
UUID=[uuid] /ext4bins ext4 rw,suid,dev,exec,auto,user,async 0 2
Если вы можете смонтировать его в другом месте и выполнить файлы и приложения, тогда вы можете сделать второй шаг, чтобы получить поведение Вы хотели, который может выполнять приложения из ~ / bin, создав символическую ссылку, например, так:
ln -s /ext4bins /home/[username]/bin
Замените [username] на ваше собственное имя пользователя, очевидно. Это сделает смонтированный раздел в / ext4bins монтируемым в / home / [имя пользователя] / bin, и, пока файлы доступны для / ext4bins, вы также сможете выполнять их через ~ / bin. Например,
/ext4bins/myscript.sh
будет работать так же, как
~/bin/myscript.sh
Вам необходимо установить разрешение на выполнение. В Nautilus (файловом браузере) щелкните правой кнопкой мыши файл программы и выберите вкладку «Разрешения». Установите флажок «Разрешить выполнение файла как программы». Из терминала вы также можете сделать:
sudo chmod +x /path/to/myfile
Также убедитесь, что вы не указываете noexec
для раздела в fstab, так как это отключит выполнение для всего раздела.
У меня были похожие проблемы: я не смог выполнить сценарии оболочки, хранящиеся в NTFS, даже с sudo, даже после редактирования fstab, как описано выше.
Оказывается, я никогда не создавал каталог точек монтирования. Я размонтировал раздел, сделал каталог точки монтирования для раздела:
mkdir /media/Windoze7
, а затем снова смонтировал.
sudo mount -a
Вы можете получить доступ к файлам во вновь созданном разделе ext4, но не можете запускать программы. При этом вы получаете сообщение об ошибке «Отказано в доступе». Это предполагает две возможности, как reverendj1 предложил :
Файлы могут не иметь разрешения на выполнение . Чтобы дать файлу разрешения на выполнение из командной строки, выполните:
chmod +x filename
Если вы просто хотите дать разрешения на выполнение владельцу файла:
chmod u+x filename
Чтобы дать файл выполнить разрешения в Nautilus (браузер файлов), щелкните правой кнопкой мыши файл и выберите Свойства . Откройте вкладку Разрешения . Установите флажок Разрешить выполнение файла как программы и нажмите Закрыть .
Перегородка может быть смонтирована с помощью noexec
. Чтобы проверить это, запустите mount
и посмотрите, есть ли noexec
рядом с соответствующей записью. Поскольку вы монтируете из /etc/fstab
, вы можете удалить noexec
там.
Кроме того, обратите внимание, что:
Обычно, хотя и не всегда, исполняемые файлы должны храниться в обычных местах: /bin
, /sbin
, /usr/bin
, /usr/sbin
/usr/local/bin
, /usr/local/sbin
, /opt/bin
, ~/bin
. Вы уверены, что действительно хотите исполняемые файлы на этом диске. Вы можете отредактировать свой вопрос , чтобы предоставить больше информации о том, чего вы хотите достичь.
Чтобы запустить программу из командной строки, которая находится в текущем каталоге, указав ее относительный путь, вы должны поставить перед ней ./
:
./program
Если вы запускаете файл .desktop
, а не приложение, то:
Вы не должны пытаться запустить его так, как если бы он сам являлся сценарием или программой, но вместо этого , например, :
xdg-open application.desktop
Если это исполняемые файлы Windows, которые вы запускаете с Wine, им фактически не нужно устанавливать исполняемый бит. Если они этого не делают, вы можете щелкнуть их правой кнопкой мыши и открыть их с помощью Wine Windows Program Loader или запустить их из командной строки следующим образом:
wine program.exe
(я вижу, что это дает очень похожий совет к предыдущему ответу, поэтому я решил сделать это community-wiki .)