Передача: разрешение на USB-диске запрещено

22

У меня Raspberry Pi работает RaspBMC с WD MyBook, подключенным через USB. Привод автоматически устанавливается на /media/My Book. Я создал папку /media/My Book/downloadsи установил каталог загрузки Trasmission /media/My Book/downloads.

Когда я пытаюсь скачать файл, Transmission сообщает,

Error: Permission denied (/media/My Book/downloads/The.Simpsons.S24E09.720p.HDTV.X264-DIMENSION [PublicHD]/The.Simpsons.S24E09.720p.HD

ls -la дает мне

drwx------ 1 pi       0 Dec 15 16:24 downloads 

Таким образом, я предполагаю, что проблема в том, что передача выполняется от имени другого пользователя piи не может записывать в папку. Однако, когда я выполняю

chmod 777 downloads -R

операции выполняются без ошибок, но разрешения не меняются, они остаются 700 только для владельца.

Что я делаю не так и как я могу включить Transmission для записи в этот каталог?

Игорь Кульман
источник

Ответы:

19

После много чтения и разочарования. Прежде всего, убедитесь, что обычный пользователь имеет права на чтение и запись на USB-накопитель. Правильное исправление «без полномочий root» для доступа к записи на USB-накопитель:

Шаг 1: Остановить передачу демона

sudo service transmission-daemon stop

Шаг 2: Добавить piв группу передачи Debian

sudo usermod -a -G debian-transmission pi 

Шаг 3: изменение пользователя-демона

sudo nano /etc/init.d/transmission-daemon

Изменить USERна pi.

Шаг 4 Измените права папки с файлами конфигурации

sudo chown -R pi /var/lib/transmission-daemon/info/
sudo chmod 755 /var/lib/transmission-daemon/info/settings.json 

Шаг 5. Установите правильные разрешения для загружаемых / неполных папок.

sudo chown -R pi /somewhere/downloads
sudo chown -R pi /somewhere/incomplete

Шаг 5: Запустите демон передачи

sudo service transmission-daemon start

Составлено из:

Biketire
источник
2
Это единственный правильный ответ. Бег как rootне так. Делать это chmod 777неправильно. Установка правильной группы и пользователя - единственный правильный путь.
Кузен Кокаин
Это должен быть принятый ответ.
Пауло Родригес Пинто
1
Может быть, это правильный ответ, но он не работает для меня.
реболек
Я переименовал свое имя пользователя piв другое. Однако, когда я делаю ls -alэто, кажется, мои файлы все еще находятся в piгруппе. С учетом приведенных выше инструкций, я должен изменить каждый экземпляр piна свое новое имя пользователя или обратиться к группе, которая по-прежнему pi? Эти инструкции не работают, когда я меняю каждое piна свое имя пользователя.
Кивон
@Keavon "я должен изменить каждый экземпляр pi на свое новое имя пользователя" Да, также есть ли новый пользователь в группе debian-tranmission?
Biketire
11

Проблема заключалась в том, как был автоматически подключен USB-диск. Я установил его вручную с помощью mount -t ntfs-3g, и он начал работать.

Игорь Кульман
источник
4
То же самое случилось со мной. С автоматически смонтированным жестким диском все разрешения были установлены на 0700, но при его установке sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/HDD/они равны 0777, и передача работает отлично, действительно странно.
Puigcerber
Мой ExFAT был с автоматическим монтированием exfat defaults,auto,umask=000,users,rw 0 0, я изменил это, чтобы монтировать с piидентификаторами пользователей, exfat defaults,uid=1000,gid=1000 0 0и это работало Проверьте этот ответ AskUbuntu: проблема с правами доступа / правами при автоматическом
подключении exfat
10

Я не эксперт по Linux, но вы можете попробовать это, может сработать. Большая часть информации предоставлена http://www.superfecta.ca/?p=44.

sudo service transmission-daemon stop
sudo nano /etc/init.d/transmission-daemon

менять

USER=debian-transmission

в

USER=root
ctrl-x
Y
# hit enter to overwrite
sudo service transmission-daemon start

Я знаю, что запуск от имени root - это большой linux нет, нет (не уверен, что это считается выполнением от имени root), но это сработало для меня, так что я в порядке. Вы можете попробовать USER=piвместо этого, но у меня нет любви там, поэтому я застрял с рутом

Spasmodean
источник
3
Конечно, запуск от имени root работает, это просто угроза безопасности.
Blaisorblade
Просто кое-что добавлю: Linux использует файл / etc / fstab для установки точек монтирования и прав доступа / владельца диска. Итак, у вас есть три варианта: запустить передачу от имени пользователя root, запустить передачу от имени владельца папки, в которой находится диск ( ls -lскажет вам, кому он принадлежит), или изменить файл / etc / fstab, чтобы показать другого владельца (например, debian- коробка передач).
Терри
Я столкнулся с аналогичной проблемой сохранения торрентов на диске NAS, смонтированном в качестве гостя. Я перепробовал все упомянутые решения, но у меня ничего не получалось, поэтому я сдался и запустил трансмиссионный демон от имени root. Мне это не нравится, но это единственное, что работает.
Aalaap
Это неправильно, и такие демоны никогда не должны работать с привилегиями root. Вы должны удалить этот ответ, потому что это повредит настройке других людей.
Кузен Кокаин
5

Я считаю, что ваша проблема в том, что ваша флешка USB отформатирована как NFTS или FAT, файловые системы, которые не поддерживают разрешения для каждого пользователя / группы. Решение состоит в том, чтобы переформатировать как ext4. Если вы сделаете это, у вас будет гораздо меньше лагов, если вы используете свой Pi в качестве медиацентра. Драйверы для Pi намного быстрее, когда вы используете ext4.

hifkanotiks
источник
Значительно быстрее, чем NTFS-3G? Не могли бы вы показать некоторые данные в поддержку этого заявления?
Иосиф
@Joseph Это была в основном проблема с Raspberry Pi 1, так как NTFS довольно сильно загружает процессор. Вот эталон скорости передачи: htpcguides.com/wp-content/uploads/2015/03/…
hifkanotiks
4

Ни один из ответов здесь не сработал для меня, поэтому я пишу новый, ссылаясь на https://pimylifeup.com/raspberry-pi-torrentbox/ который отлично работал для меня и позволил мне запустить передачу как piпользователь для доступа к моему USB-накопителю. Это не является прямым ответом на OP, но этот вопрос очень популярен (первый результат Google) для такого рода проблем, поэтому я поставил его здесь.

Войти:

sudo vi /etc/init.d/transmission-daemon

и найдите USERв верхней части файла и измените на:

USER=pi

Затем нам нужно chownнесколько файлов в нашей области разрешений:

sudo chown -R pi:pi /etc/transmission-daemon
sudo chown -R pi:pi /etc/init.d/transmission-daemon
sudo chown -R pi:pi /var/lib/transmission-daemon

А затем запустите (это действительно важно, иначе демон из сервиса будет работать как debian-transmission)

sudo vi /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

и найти userтам и изменить на:

user=pi

и перезагрузите сервисный блок

sudo systemctl daemon-reload

И, наконец, нам нужно символически связать наш файл настроек с домашним каталогом pi и дать ему разрешения:

sudo mkdir -p /home/pi/.config/transmission-daemon/
sudo ln -s /etc/transmission-daemon/settings.json /home/pi/.config/transmission-daemon/
sudo chown -R pi:pi /home/pi/.config/transmission-daemon/

А затем снова начните передачу:

sudo service transmission-daemon start

и вы сделали. Теперь должно работать.

Sammaye
источник
2

Я думаю, что одна из главных вещей, которую пропускают люди, это то, что вы должны монтировать ваш usb / внешний диск в папку / mnt / myUsbDrive, а НЕ в / media / pi / myUsbDrive.

sudo umount /media/pi/usb_disk
sudo mkdir /mnt/usb_disk
sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /mnt/usb_disk

Я попробовал каждый ответ, данный в этом обсуждении (включая root), сотней разных способов с разными вариантами и не смог получить передачу для сохранения на моем usb SSD-накопителе. Затем при чтении чего-то другого было упомянуто, что не нужно монтировать в / media / pi, поскольку у демонов или других групп может не быть доступа. Поэтому я подключаю USB-диск к / mnt / usb_disk, устанавливаю пути в /etc/transmission-daemon/settings.json в / mnt / usb_disk / downloads, и передача начинает сохраняться на диск.

К вашему сведению, у меня есть user = pi в /etc/init.d/transmission-daemon.

К вашему сведению, я сменил владельца / mnt / usb_disk / downloads на pi и сгруппировал для передачи debian с разрешениями 777.

SolutionHelper
источник
1
sudo chown debian-transmission /downloads

где / downloads - это каталог, в котором вы хотите, чтобы ваши загрузки были (или место монтирования).

это безопаснее, чем использовать root.

это дает «пользователю» права, известные как «передача Debian» на папку

падение
источник
1

Я нашел то же решение, что и Игорь и puigcerber. Мой диск был настроен на автоматическое монтирование, поэтому я отредактировал свой fstab для удаления автомонтирования, а затем использовалsudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/*mymountpoint/

dollerbill
источник
1

В то время как ответ biketire верен, Debian недавно переключился на systemd, и вам необходимо сменить пользователя здесь

sudo nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

и убедитесь, что в разделе

[Service]

у вас есть линия

User=pi
cstich
источник
1

Решение:

После большого чтения и разочарования.

Прежде всего, убедитесь, что обычный пользователь имеет доступ на чтение и запись к USB-накопителю. Правильное исправление «без полномочий root» для доступа к записи на USB-накопитель:

Шаг 1: Остановить передачу демона

sudo service transmission-daemon stop

Шаг 2: Добавьте pi в группу передачи debian

sudo usermod -a -G debian-transmission pi

Шаг 3: изменение пользователя-демона

sudo nano /etc/init.d/transmission-daemon

Измените ПОЛЬЗОВАТЕЛЬ на пи.

sudo nano /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

Измените ПОЛЬЗОВАТЕЛЬ на пи.

Шаг 4: Измените права папки с файлами конфигурации sudo chown -R pi /var/lib/transmission-daemon/info/ sudo chmod 755 /var/lib/transmission-daemon/info/settings.json

Шаг 5. Установите правильные разрешения для загружаемых / неполных папок. sudo chown -R pi /somewhere/downloads sudo chown -R pi /somewhere/incomplete

Шаг 6: Запустите демон передачи

sudo service transmission-daemon start

Саби
источник
1

Я обнаружил, что файловая система была проблемой для меня. К счастью, это был совершенно новый USB-накопитель, поэтому не было проблем с его форматированием.

Я сначала отформатировал жесткий диск в ext4

sudo mkfs.ext4 /dev/<usb disk> -L <diskname>

Затем я установил USB жесткий диск

sudo mount /dev/<usb disk> /mnt/<my mount folder>

После установки я изменил группу для жесткого диска на debian-

sudo chgrp debian-transmission /mnt/rpi_nas/

Наконец, я добавил пользователя pi в группу debian-transmission, и он отлично работал в моем случае использования.

Ник
источник
0

После того, как вы измените пользователя-трансмиссионного пользователя на root, проблема с разрешениями исчезнет с общим ресурсом usb или smb.

sudo nano /etc/init.d/transmission-daemon

затем измените строку пользователя на:

USER = корень

user6220
источник
7
Это риск для безопасности.
Blaisorblade
Это неправильно, и такие демоны никогда не должны работать с привилегиями root. Вы должны удалить этот ответ, потому что это повредит настройке других людей.
Кузен Кокаин
0

Проблема связана с тем, что FAT не распознает нескольких пользователей.

Если вы используете строку в своем файле fstab, такую ​​как / dev / [your dev] / mnt / usb1 vfat по умолчанию, uid = 65534, gid = 65534, dmask = 000, fmask = 111 0 0

он должен монтировать вашу файловую систему с папками 777 и файлами как 666, принадлежащими "nobody", принадлежащим "nogroup"

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

JONH
источник
0

Наконец-то нашел рабочее решение.

Я включил автоматическое совместное использование съемных устройств в настройках XBIAN и вручную добавил диск в share.conf

[mybook]
    path = /media/mybook
    guest ok = yes
    read only = no
    browseable = yes
    writeable = yes
    force user = xbian

Недостаточно просто добавить его в share.conf, автоматическое совместное использование должно быть отключено.

Игорь Кульман
источник
0

У меня была похожая проблема с разрешениями.

Я попытался слепо следовать решению Саби и обнаружил, что оно не работает. Не только это, но я считаю, что это немного излишне.

В моей ситуации я просто упустил из виду тот факт, что Transmission-Daemon был запущен от имени пользователя: debian-transmission .

Следовательно, для того, чтобы дать демону передачи права на запись в папку ( имя_папки ), вам нужно просто выполнить следующие команды:

chgrp -R folder_name
chmod -R 765 folder_name

Это при условии, конечно , что вы правильно настроены settings.json уже

Liang
источник
-1

chmod 777 должен предоставить каждому пользователю все права доступа к файлу или каталогу. Если это не сработает, скорее всего, пользователь, выполняющий эту команду chmod, не владеет каталогом или файлом. Например, если root владеет / media / My Book / и пользователь pi не сможет изменить разрешения для этого файла. Три числа, которые вы передаете команде chmod, влияют на владельца, группу и всех остальных в этом порядке. Таким образом, наиболее распространенными настройками для каталога являются «chmod 755 somedirectory». Это означает, что владелец может читать, записывать и изменять каталог, но группа и все остальные могут только читать файлы и переходить в каталог.

shapr
источник
1
Этот ответ действительно не отвечает на вопрос. Аскер уже пробовал chmodding файл, и он не работал.
Хифканотикс