最近内网搞了个 Linux 当办公机,于是内网之间文件共享就成了问题。最近刚好搞了一下有一点小心得共享一下。
Windows 的文件共享方式我就不累述了,百度上有很多教程,无脑照做就行了。唯一需要注意的就是用户权限。
如果你是用微软账号登陆的话,需要去找一下你的实际用户名是什么,有的时候不支持账号直接登录,需要使用用户名。因为很多时候微软账号不等于用户名。
Linux 使用 Windows 共享
Linux 使用的方法就是挂载。把 Windows 的文件夹挂载到自己的目录里。这有一点需要注意的是,挂载目标的目录必须实际存在,不能写一个不存在的目录让 Linux 自己去生成。挂载不是快捷方式,没办法那么用。
所以第一步就是创建一个目标文件夹,命令很简单。
mkdir /home/user/filename //我这里使用的例子是在自己的个人文件夹里创建了一个文件夹
这一步搞完我们就可以开始挂载了。命令如下:
mount -t cifs '//IP/Path' '/home/user/filename' -o username=username,password=password
地址用单引号包裹可以兼容地址里的空格。这里还有有一点需要注意的是 Windows 的路径使用的是反斜杠 “\”,在 Linux 中反斜杠一般都用来转义,所以 Windows 地址里所有的反斜杠用到 Linux 里的时候要改成正斜杠。其他就没有什么需要注意的内容了。
这个挂载,是一次性,关机重启就失效了,如果想长期有效需要把它加入开机启动的挂载项里。
vim /etc/fstab
//最末尾加入一行
'//IP/Path' '/home/user/fliename' cifs defaults,username=username,password=password 0 2
有关于 fstab 的讲解点这里。
Samba
Samba 是个很有意思的程序。首先它使用的用户必须在系统里有实际用户,这样操作权限也比较容易理解。但是当你设置公共文件夹的时候就复杂一点了。 首先我们先准备用户。
groupadd samba //创建samba组,方便管理权限,当然也可以不需要或者是使用别的组。
useradd -g samba -s /sbin/nologin username //创建一个无法用shell登录的用户,此用户不需要密码。你也可以按照实际情况选择。
这样需要用的用户名就创建完了,接下来讲重点。
Samba 的登录用户名和密码是通过一个单独的数据库管理的,具体原理可以参见百度,遍地都是。Samba 会有自己单独的密码策略,这样做安全性会有所提高。
smbpasswd -a username //添加一个新的samba用户
New SMB password: //输入要设置的密码
Retype new SMB password: //再次输入,注意Samba是有一定强度的密码策略的,可能要多试几次。
到这里用户基本就搞定了。
记下来需要编辑一下 Samba 的配置文件,做一个共享文件夹,配置模板百度全网有很多,我这里只用我自用的举例。
vim /etc/samba/smb.conf
//在最末尾加入以下文本块
[filename]
path = /usr/filename
available = yes
valid users = username
read only = no
browsable = yes
public = yes
writable = yes
create mask = 0775 //这里标明了用户权限
directory mask = 0775
不光 Samba 进行了权限限制,Linux 自身的权限限制也会生效,按需设置即可,唯一需要注意的是子文件夹的访问权限是 r-x。4 和 6 都无法进入子文件夹,必须用 5 或者 7。建议 775。 最后就是标准化的流程了,启动服务加入开机自启动。
systemctl start smbd
systemctl enable smbd
有的时候配置完了,可以正常登陆并看到文件夹但是无法访问可能是红帽派的 Linux 启用了 selinux 的缘故,如果不会修改的话,直接关掉比较好。
Over,enjoy it!