我有一个 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。如果未指定,则默认为 uid0
。mount.cifs
帮助程序必须是 1.10 或更高版本才能支持以非数字形式指定 uid。有关更多信息,请参阅下面有关文件和目录所有权和权限的部分。
gid=arg
当服务器不提供所有权信息时,设置将拥有已挂载文件系统上所有文件或目录的 gid。它可以指定为组名或数字 gid。如果未指定,则默认为 gid0
。mount.cifs
帮助程序必须是 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
您可能还会发现这个问题有用。