如何在 Linux(CentOS)上从 Windows 文件共享创建和编辑文件?

如何在 Linux(CentOS)上从 Windows 文件共享创建和编辑文件?

我有一个 Windows 共享驱动器,我已使用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=mount 选项。请参阅man 8 mount.cifs

uid=arg
当服务器不提供所有权信息时,设置将拥有已挂载文件系统上所有文件或目录的 uid。它可以指定为用户名或数字 uid。如果未指定,则默认为 uid 0mount.cifs帮助程序必须是 1.10 或更高版本才能支持以非数字形式指定 uid。有关更多信息,请参阅下面有关文件和目录所有权和权限的部分。

gid=arg
当服务器不提供所有权信息时,设置将拥有已挂载文件系统上所有文件或目录的 gid。它可以指定为组名或数字 gid。如果未指定,则默认为 gid 0mount.cifs帮助程序必须是 1.10 或更高版本才能支持以非数字形式指定 gid。有关更多信息,请参阅下面有关文件和目录所有权和权限的部分。

[…]

文件和目录所有权和权限
核心 CIFS 协议不提供文件和目录的 unix 所有权信息或模式。因此,文件和目录通常看起来归uid=或选项设置的任何值所有,并且权限设置为默认值和挂载gid=权限。尝试通过/更改这些值将返回成功,但没有任何效果。[…]file_modedir_modechmodchown

本节还提到了“客户端和服务器协商 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

您可能还会发现这个问题有用。

相关内容