创建samba文件共享其实也不难,要点就是创建好Linux账户(要和samba账户对应),设置好共享文件夹权限。尤其是权限部分,比较没有Windows那么直观,理解以后并不难,但这里不打算复杂深入的讲解。
我的设置目的基本就一个要求,让ftp这个组的所有成员用户可以在storage这个共享文件夹里拥有读写权限,并且希望所有在storage下创建的新文件夹都继承storage的权限设定。
组:ftp
成员:xin、gong
系统安装时创建的用户为xin,gong用户还不存在,ftp组也还未创建,所以我们先进行成员添加及组的添加。
sudo useradd gong -m -s /bin/bash
sudo passwd gong
# 以上指令可以创建用户gong并设置密码,然后我们创建ftp组
sudo groupadd ftp
# 再将用户xin、gong加入到ftp组中
sudo usermod -a -G ftp xin
sudo usermod -a -G ftp gong
# 通过id xin这个指令可以查看是否添加组成功。
有了用户,有了组,现在要给/storage这个文件夹设置相应的权限,并为samba设置相应的用户
# 去根目录下执行ls -l,可以看到:
drwxr-xr-x 3 root root 4096 Sep 4 12:20 storage
# 这说明storage这个文件夹当前所有人为root,所有组为root。
# 所有人不需要更改,把组改为ftp,并让所有ftp组的成员都具备读写权。
sudo chown :ftp /storage
sudo chmod 775 /storage # 如果不想其他账户看到,用770的权限也可以
# 执行ls -l查看结果:
drwxrwxr-x 3 root ftp 4096 Sep 4 12:20 storage
# 添加samba用户:
sudo smbpasswd -a xin
sudo smbpasswd -a gong
执行上述指令时,每添加一用户就会自动要求为该用户设置samba密码。这个密码与登录Ubuntu系统的密码可以不同,它是Windows访问共享文件夹时需要的账户和密码。为了方便,通常你可以设置一个匹配Windows账户的samba用户和密码,这样Windows打开共享文件夹时就不需要输入口令了。
另外,samba添加的用户一定要存在,就是必须先用useradd添加一个对应的Linux登录账户,否则会出错。
到这一步,其实还差点。之前说过了,要让storage共享文件夹下创建的新文件夹集成母文件夹权限,不然就会出现xin创建的文件gong不能访问(当然你需要这样的效果也可以)。要实现这个目的,需要再执行一行指令:
sudo chmod g+s /storage
到这一步就完成了权限的配置了。最后再照着下面的指令更改/etc/samba/smb.conf的内容:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak #备份配置文件
sudo nano /etc/samba/smb.conf
# 用编辑器打开smb.conf后,默认设置什么都不用改,直接跳到最末端,新建以下内容:
[storage]
comment = Ubuntu File Server # 对共享文件夹的描述
path = /storage # 共享文件夹路径
available = yes # 是否可用
valid users = @ftp # @ftp指ftp这个组,如果是用户则不需@,多个用户用空格隔开
read only = no # 是否只读
browsable = yes # no的话打开共享路径时将看不到文件夹,只能通过输入路径访问
writable = yes # 是否可写
hide unreadable = yes # 此项为可选,如没有,将看到一个名为lost+found的文件夹
# 保存退出后,重启服务:
sudo restart smbd
现在去Windows下->运行->\\192.168.1.XX(Ubuntu的IP地址)
应该能看到storage的文件夹,进入后尝试创建新文件,如果一切正常,那么共享就完成了。