创建samba文件共享其实也不难,要点就是创建好Linux账户(要和samba账户对应),设置好共享文件夹权限。尤其是权限部分,比较没有Windows那么直观,理解以后并不难,但这里不打算复杂深入的讲解。
我的设置目的基本就一个要求,让ftp这个组的所有成员用户可以在storage这个共享文件夹里拥有读写权限,并且希望所有在storage下创建的新文件夹都继承storage的权限设定。
组:ftp
成员:xin、gong
系统安装时创建的用户为xin,gong用户还不存在,ftp组也还未创建,所以我们先进行成员添加及组的添加。
sudo useradd gong sudo passwd gong 以上指令可以创建用户gong并设置密码,然后我们创建ftp组 sudo groupadd ftp 再将用户xin、gong加入到ftp组中(在Linux下是第二个组secondary group,不更改用户默认组) 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 (是否可写) 保存退出后,重启服务: sudo restart smbd
现在去Windows下->运行->\\192.168.1.XX(Ubuntu的IP地址)
应该能看到storage的文件夹,进入后尝试创建新文件,如果一切正常,那么共享就完成了。