Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос про linux. почему cp ~/a.txt /sdcard/a.txt "permission denied" а dd if=~/a.txt of=/sdcard/a.txt работает?

механический зомби-годзилла из космоса Мудрец (15075), открыт 1 неделю назад
4 ответа
Wraith Crystal Ученик (190) 1 неделю назад
Ну,
Это потому, что при текущих правах доступа никто не может переместить этот файл. (Кроме root, потому что root не следует тем же правилам).
Вам нужно либо изменить владельца файла (chown), либо добавить другого пользователя в группу 'root' и chmod, чтобы группа могла работать с каталогом, либо разрешить всем остальным запускать файл.
Поэтому быстрое решение будет следующим

chmod -R o+rwx udp_folder2

Это даст всем возможность читать, писать и выполнять в этой директории.
Также... если вы пытаетесь скопировать 'udp_folder2' в тот же каталог, что и сейчас, вам также потребуется разрешение 'w' на этот каталог. Например:
/foo/udp_folder2 - вам понадобится 'w' на /foo, чтобы скопировать этот каталог в /foo.
Я рекомендую изучить права доступа к файлам в Linux: Учебник по разрешениям файлов в Linux
бабуин гибонович Оракул (50195) 1 неделю назад
Команда `cp` может не работать из-за особенностей работы с файловыми системами в Linux, особенно когда дело касается монтированных устройств, таких как `/sdcard`.

Вот несколько возможных причин, почему `cp` не работает, а `dd` работает:

1. **Разные способы доступа к устройству**: Команда `cp` использует стандартные системные вызовы для копирования файлов, которые могут иметь ограничения на работу с определенными типами файловых систем или устройствами. В то время как `dd` работает на уровне байтов и может выполнять операции ввода-вывода напрямую, обходя многие ограничения файловой системы.

2. **Права доступа**: Монтирование `/sdcard` может быть выполнено с различными параметрами, которые запрещают обычным пользователям запись или изменяют режимы доступа к файлам. Например, карта памяти может быть смонтирована с параметром `noexec`, `nosuid`, `nodev` или другими, которые могут влиять на стандартные команды копирования. `dd` же работает на более низком уровне и может обходить эти ограничения.

3. **Типы файловых систем**: Файловая система на `/sdcard` может быть отличной от файловой системы на вашем основном диске (например, FAT32, exFAT и т.д.). Эти файловые системы могут иметь ограничения или специфические настройки монтирования, которые влияют на команды уровня файловой системы, такие как `cp`.

4. **SELinux**: Если у вас включен SELinux, он может накладывать дополнительные ограничения на операции с файлами. `cp` может быть заблокирован политиками SELinux, тогда как `dd` может работать, поскольку он напрямую читает и записывает данные.

Для того чтобы убедиться в причине ошибки, вы можете попробовать следующие шаги:

1. Проверьте права на запись в `/sdcard`:
```bash
ls -l /sdcard
```

2. Проверьте параметры монтирования устройства:
```bash
mount | grep /sdcard
```

3. Попробуйте использовать `cp` с `sudo`:
```bash
sudo cp ~/a.txt /sdcard/a.txt
```

4. Если SELinux включен, проверьте его статус:
```bash
getenforce
```

В зависимости от результатов этих проверок, вы сможете понять, какая именно причина вызывает проблему и как её можно решить.
Troll Killer Искусственный Интеллект (254704) 1 неделю назад
Про форум linux не слышал никогда? Неее а чё это
Я поварУченик (24) 1 неделю назад
Какая версия Windows у вас (т.е. 20H2 или же 22H2)?
Troll Killer Искусственный Интеллект (254704) Я повар, Windows 10 последняя
Виндузятник Гуру (3512) 1 неделю назад
|DWLXSqkldewklwdklwmwdsmq,\sqmdswqkl расскажи что я написал.
Похожие вопросы