挂载 cifs 网络驱动器:写权限和 chown

Vin*_*ent 144 linux permissions mount chown cifs

我可以访问 cifs 网络驱动器。当我将它安装在我的 OSX 机器下时,我可以读取和写入它。

当我在 ubuntu 中安装驱动器时,使用:

sudo mount -t cifs -o username=${USER},password=${PASSWORD} //server-address/folder /mount/path/on/ubuntu
Run Code Online (Sandbox Code Playgroud)

我无法写入网络驱动器,但可以从中读取。我检查了挂载文件夹的权限和所有者,它们看起来像:

4.0K drwxr-xr-x  4 root root    0 Nov 12  2010 Mounted_folder
Run Code Online (Sandbox Code Playgroud)

我无法更改所有者,因为我收到错误消息:

chown: changing ownership of `/Volumes/Mounted_folder': Not a directory
Run Code Online (Sandbox Code Playgroud)

当我深入网络驱动器并更改那里的所有权时,我收到错误消息,即我无权更改文件夹的所有者。

我应该怎么做才能激活我的写权限?

Huy*_*ens 215

您以 root 身份挂载 CIFS 共享(因为您使用了sudo),因此您无法以普通用户身份进行编写。如果您的 Linux 发行版及其内核足够新,您可以以普通用户身份挂载网络共享(但在用户拥有的文件夹下),您将拥有正确的凭据来写入文件(例如,将共享文件夹挂载在您的主目录,例如$HOME/netshare/。显然,您需要在安装之前创建文件夹)。

另一种方法是指定安装的网络共享应该使用的用户和组 ID,这将允许该特定用户和潜在的组写入共享。添加下列选项到您的安装uid=<user>,gid=<group>和替换<user>,并<group>通过自己的用户和默认组,您可以用自动寻分别id命令。

sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=$(id -u),gid=$(id -g) //server-address/folder /mount/path/on/ubuntu
Run Code Online (Sandbox Code Playgroud)

如果服务器正在发送所有权信息,您可能需要添加forceuidforcegid选项。

sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=$(id -u),gid=$(id -g),forceuid,forcegid, //server-address/folder /mount/path/on/ubuntu
Run Code Online (Sandbox Code Playgroud)

  • @71GA `username` 是用于身份验证的远程登录。`uid` 是您想要打盹所有文件/文件夹的本地用户 ID。因此用户名与 uid 分离,用户名是远程用户登录,而 uid 是您的本地用户 ID。请注意,如果您的服务器是 Samba 并且您在客户端和服务器上都使用 LDAP 或其他集中帐户,则情况可能相同:-)。 (7认同)
  • 它对我有用!但我们应该补充一点,如果共享文件夹位于具有登录域的 PC 中,则应添加选项“域”。像这样的东西: `sudo mount -t cifs -o username=${USER},password=${PASSWORD},dom=${DOMAIN}, uid=&lt;user&gt;,gid=&lt;group&gt; //服务器地址/文件夹 /mount/path/on/ubuntu` 事实上,域可以放在“用户名”选项中,但请记住,您必须使用“/”而不是“\”,例如“username=DOMAIN/user.name”。 (2认同)
  • 这正是我所需要的。我在 /etc/fstab 中有一个条目可以在启动时自动挂载网络驱动器。我无法写入挂载,所以我添加了 ,uid=&lt;myUserID&gt; 作为如下所示的行:`//192.168.1.7/public /colmustang cifs username=&lt;uname&gt;,password=&lt;upassword&gt;,uid=&lt;我的用户 ID&gt; 0 0` (2认同)

小智 32

我成功测试了以下命令:

sudo mount -t cifs -o username=[username],password=[password],uid=1001,gid=1001 //172.16.148.2/dfsgob01 /home/ususario/Documentos/benz-win
Run Code Online (Sandbox Code Playgroud)

  • 使用“id -u &lt;user&gt;”和“id -g &lt;user&gt;”分别获取uid和gid。 (30认同)
  • 请注意,您可以直接使用“man mount.cifs”中记录的用户名 (7认同)
  • 为避免在命令旁边写密码,只需在调用期间省略密码选项 - 然后提示将要求输入密码,以便可以不可见地输入。 (3认同)