创建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的文件夹,进入后尝试创建新文件,如果一切正常,那么共享就完成了。