Как я могу создавать и редактировать файлы из общего файлового ресурса Windows в Linux (CentOS)?

У меня есть общий диск Windows, который я смонтировал на своем компьютере с CentOS 7, используя инструкции Red Hat, на которых я хотел бы теперь создавать и редактировать файлы. Однако я должен быть повышен, чтобы создавать и редактировать файлы в любой папке на диске. Я пытался использовать chmod разрешить доступ всем пользователям, но безрезультатно, и даже попытался размонтировать / перемонтировать диск.

Как я могу получить без повышенных прав доступ к диску?

(Я создаю эти файлы с помощью Matlab, и Matlab не может быть запущен через sudoтак что просто оставаться на возвышении не вариант).

Распечатка терминала

[millironx@mymachine ~]$ sudo umount /mnt
[millironx@mymachine ~]$ sudo mount -t cifs -o username=millironx,password=mypassword,domain=AD //files.example.com/shared /mnt
[millironx@mymachine ~]$ cd /mnt/matlab-program
[millironx@mymachine matlab-program]$ touch testfile
touch: cannot touch 'testfile': Permission denied
[millironx@mymachine matlab-program]$ sudo chmod +rwx /mnt/matlab-program
[millironx@mymachine matlab-program]$ touch testfile
touch: cannot touch 'testfile': Permission denied
[millironx@mymachine matlab-program]$ sudo touch testfile
[millironx@mymachine matlab-program]$ ls
testfile
[millironx@mymachine matlab-program]$ rm testfile
rm: remove write-protected regular empty file 'testfile`? y
rm: cannot remove 'testfile': Permission denied
[millironx@mymachine matlab-program]$ sudo rm testfile
[millironx@mymachine matlab-program]$ sudo matlab
sudo: matlab: command not found

1 ответ

Решение

Тебе нужно uid= и возможно gid= опция монтирования Увидеть man 8 mount.cifs:

uid=arg
устанавливает uid, который будет владеть всеми файлами или каталогами в смонтированной файловой системе, когда сервер не предоставляет информацию о владельце. Он может быть указан как имя пользователя или числовой идентификатор пользователя. Если не указан, по умолчанию используется uid 0, mount.cifs helper должен быть версии 1.10 или выше, чтобы поддерживать указание uid в нечисловой форме. См. Раздел "Владение и разрешения для файлов и каталогов" ниже для получения дополнительной информации.

gid=arg
устанавливает gid, которому будут принадлежать все файлы или каталоги в смонтированной файловой системе, когда сервер не предоставляет информацию о владельце. Он может быть указан как имя группы или числовой идентификатор. Если не указано, по умолчанию используется gid 0, mount.cifs helper должен быть версии 1.10 или выше, чтобы поддерживать указание gid в нечисловой форме. См. Раздел "Владение и разрешения для файлов и каталогов" ниже для получения дополнительной информации.

[...]

Владение файлами и каталогами и разрешения
Основной протокол CIFS не предоставляет информацию о владельце Unix или режим для файлов и каталогов. Из-за этого файлы и каталоги, как правило, будут принадлежать любым uid= или же gid= параметры установлены, и для них будут установлены разрешения по умолчанию file_mode а также dir_mode для горы. Попытка изменить эти значения с помощью chmod / chown вернет успех, но не даст никакого эффекта. [...]

В этом разделе также упоминается сценарий, в котором "клиент и сервер согласовывают расширения Unix" и сценарий, в котором "также возможно эмулировать их локально на сервере" и т. Д.

В твоем случае просто uid= а также gid= должно хватить. Обратите внимание, что они определяют пользователя и группу Unix, uid= а также username= различны и в целом могут принимать разные значения.

sudo mount -t cifs -o uid=millironx,gid=users,username=millironx,password=mypassword,domain=AD //files.example.com/shared /mnt

Вы также можете найти этот вопрос полезным.

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