Linux 下 SMB/CIFS 的挂载和权限管理
Linux 下 SMB/CIFS 的挂载和权限管理
2022年7月12日
目录
摘要
在使用 NAS 的情况下, 我们经常会把一个磁盘或是一个目录,通过 SMB 的方式进行共享。 如果我们使用的是带有 GUI 的 macOS, Linux 或是 Windows 我们都可以非常简单的使用系统自带的文件管理器将共享目录挂载为一个本地磁盘,然而在服务器端,特别是没有安装 GUI 图形界面的服务器端,我们只能够通过命令行的方式挂载和管理网络驱动器。 由于 SMB 等 CIFS 并不支持 Linux 的权限管理, 在挂载完成之后,我们时常会遇到很多权限管理所带来的问题,这些问题可以通过修改挂载选项来解决。
实现
如果在具体的使用场景中,我们仅仅需要挂载一个目录,且仅供自己使用,则并不需要进行复杂的权限管理。但是一旦涉及到敏感的操作,或是想要挂载 SMB 目录后,供自己和其他用户一起使用,那么就需要在挂载时修改一些选项,从而达成目的。
挂载
Linux 原生自带的一个名为mount
的命令, 并且可以通过使用mount -t
来指定挂载的文件系统的类型, 因此,简单的 SMB 挂载,我们只需要使用以下命令即可完成:
sudo mount -t cifs <//hostname/host-dir> </target-dir> -o username=<smb-username>,password=<smb-password>
通过以上方式挂载的 SMB 共享目录, 有且仅有当前帐户的所有者,具有完整的读写权限, 当前用户所在的用户组以及其他用户都只有读取的权限,不可写入和删除任何文件目录。 如果只是自己使用的话,这样简单地挂载就已经足够使用了。
如果想要实现开机自动挂在这个目录的话,我们可以修改/etc
目录下的fstab
文件,在其最后追加:
<//hostname/host-dir> </target-dir> cifs username=<smb-username>,password=<smb-password>,file_mode=0777,dir_mode=0777
即可在每次重新启动过后,自动挂载 SMB 共享目录。
权限管理
在某些情况下,我们是使用 root 用户挂载的 SMB 共享文件夹,但是同时,我们也需要让其他用户能够完整的访问到这个文件夹, 此时,我们就是要在挂载的时候,加上几个其他的额外参数实现开放其他用户的读写权限,命令如下:
sudo mount -t cifs <//hostname/host-dir> </target-dir> -o username=<smb-username>,password=<smb-password>,file_mode=0777,dir_mode=0777
按照以上方式挂载的网络共享目录,所有用户都想拥有完整的读写权限。
注意事项
如果按照第二种方式挂载的话,由于权限过于开放,请一定要注意文件安全,不要在这个共享文件夹上储存极其重要的文件或是私密文件。
另外,使用 CIFS 文件系统时,一旦挂载过后,就不再可以修改目录的所有者和所有用户组, 如需修改只能重新挂载。