案例一、公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/home/share,共享名为public,此共享目录允许所有员工访问。
1
、主配置文件/etc/samba/smb.conf修改
#======================= Global Settings=====================================
[global]
workgroup = WORKGROUP //
定义工作组,也就是windows中的工作组概念
server string = Justin peng Samba Server Version %v //
定义Samba服务器的简要说明
netbios name = Justin_peng_Samba //
定义windows中显示出来的计算机名称
# --------------------------- Logging Options-----------------------------
log file = /var/log/samba/log.%m //
定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- Standalone Server Options------------------------
security = share //
共享级别,用户不需要账号和密码即可访问
# passdb backend = tdbsam
# -----------------------
文末添加以下------------------------
[public]
comment = Public Stuff
path = /home/share
public = yes
2
、建立共享目录
设置了共享目录/home/share,需要建立该目录,由于要设置匿名用户可以下载或上传共享文件,所以要给/share目录授权为nobody权限。
[root@justin bin]# mkdir /home/share
[root@justin bin]# touch /home/share/{aaa.txt,bbb.txt}
[root@justin bin]# ls /home/share
aaa.txt bbb.txt
[root@justin bin]# chown nobody:nobody /home/share/ -R
[root@justin bin]# ll /home/share/
总用量0
-rw-r--r-- 1 nobody nobody 0 12
月17 13:44 aaa.txt
-rw-r--r-- 1 nobody nobody 0 12
月17 13:44 bbb.txt
[root@justin bin]# /etc/init.d/smb restart
关闭 SMB 服务: [确定]
启动 SMB 服务: [确定]
[root@justin bin]# /etc/init.d/nmb restart
关闭 NMB 服务: [确定]
启动 NMB 服务: [确定]
[root@justin bin]#
3
、测试samba配置文件正确性
[root@justin bin]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
netbios name =JUSTIN_PENG_SAMBA
server string = Justin peng Samba ServerVersion %v
log file =/var/log/samba/log.%m
max log size = 50
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[public]
comment = Public Stuff
path = /home/share
guest ok = Yes
[root@justin bin]#
4
、访问samba共享文件
Server
:RHEL6.3 10.15.72.38
Client
:RHEL6.3 10.15.72.83
Windows 10.15.72.73
在Linux下访问Samba服务器的共享文件
[root@justin ~]# smbclient //10.15.72.38/public
-bash: smbclient: command not found
[root@justin ~]# rpm -qa|grep samba
samba-common-3.6.9-164.el6.i686
samba-winbind-3.6.9-164.el6.i686
samba-winbind-clients-3.6.9-164.el6.i686
[root@justin ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@justin ~]# find /mnt/cdrom/Packages/ -name '*samba*'
/mnt/cdrom/Packages/samba-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-client-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-common-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-winbind-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-winbind-clients-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/sblim-cmpi-samba-1.0-1.el6.i686.rpm
[root@justin ~]# rpm -ivh/mnt/cdrom/Packages/samba-client-3.5.10-125.el6.i686.rpm
warning: /mnt/cdrom/Packages/samba-client-3.5.10-125.el6.i686.rpm: Header V3RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
samba-common = 0:3.5.10-125.el6 isneeded by samba-client-0:3.5.10-125.el6.i686
samba-winbind-clients =0:3.5.10-125.el6 is needed by samba-client-0:3.5.10-125.el6.i686
[root@justin ~]# yum install -y samba-client
Complete!
[root@justin ~]# rpm -qa|grep samba
samba-winbind-3.6.9-167.el6_5.i686
samba-winbind-clients-3.6.9-167.el6_5.i686
samba-client-3.6.9-167.el6_5.i686
samba-common-3.6.9-167.el6_5.i686
[root@justin ~]# smbclient //10.15.72.38/public
Enter root's password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: \> ls
. D 0 Tue Dec 17 13:44:53 2013
.. D 0 Tue Dec 17 13:43:40 2013
aaa.txt 0 Tue Dec 17 13:44:53 2013
bbb.txt 0 Tue Dec 17 13:44:53 2013
62915 blocks of size 131072.58554 blocks available
smb: \> q
[root@justin ~]#
客户端需要安装好samba-client,上面直接挂载用安装盘里软件包安装失败是依赖关系失败,系统安装的依赖包版本高于软件包里的samba-client版本,最后通过yum安装
在windows下访问Samba服务器的共享文件
直接在运行里输入:\\10.15.72.38\public145915755.png
案例二、公司现有多个部门,因工作需要,将IT部的资料存放在samba服务器的/home/it 目录中集中管理,以便IT人员浏览,并且该目录只允许IT部员工访问
1
、创建组和用户
[root@justin bin]# groupadd IT
[root@justin bin]# useradd -g IT -s /sbin/nologin justin1
[root@justin bin]# useradd -g IT -s /sbin/nologin justin2
[root@justin bin]# passwd justin1
更改用户 justin1 的密码 。新的 密码:重新输入新的 密码:
passwd
: 所有的身份验证令牌已经成功更新。
[root@justin bin]# echo "justin123"|passwd --stdin justin2
更改用户 justin2 的密码 。
passwd
: 所有的身份验证令牌已经成功更新。
[root@justin bin]#
由于设置了用户的shell为nologin,即使设置了密码也是无法登陆系统
2
、将justin1、justin2假如samba账户中
[root@justin ~]# smbpasswd -a justin1
New SMB password:
Retype new SMB password:
Added user justin1.
[root@justin ~]# smbpasswd -a justin2
New SMB password:
Retype new SMB password:
Added user justin2.
[root@justin ~]#
smbpasswd
命令的主要选项:
-h
:显示smbpasswd命令的帮助信息
-a
:添加指定的Samba用户帐号
-d
:禁用指定的用户帐号
-e
:启用指定的用户帐号
-x
:删除指定的用户帐号不使用任何命令选项时可以用于修改Samba用户的密码
3
、创建共享封建
[root@justin bin]# mkdir /home/IT
[root@justin bin]# touch /home/IT/{ccc.txt,ddd.txt}
[root@justin bin]# echo "Samba test file1" >/home/IT/ccc.txt
[root@justin bin]# echo "Samba test file2" >/home/IT/ddd.txt
[root@justin bin]#
4
、修改主配置文件/etc/samba/smb.conf
#======================= GlobalSettings =====================================
[global]
workgroup = WORKGROUP //
定义工作组,也就是windows中的工作组概念
server string = Justin peng SambaServer Version %v //
定义Samba服务器的简要说明
netbios name = Justin_peng_Samba //
定义windows中显示出来的计算机名称
# --------------------------- LoggingOptions -----------------------------
log file = /var/log/samba/log.%m //
定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- StandaloneServer Options ------------------------
security = user //
用户级别,由提供服务的Samba服务器负责检查账户和密码
passdb backend = tdbsam
[homes] //
设置用户宿主目录
comment = HomeDirectories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
# -----------------------
文末添加以下------------------------
[public]
comment = Public Stuff
path = /home/share
public = yes
[IT] //IT
组目录,只允许ts组成员访问
comment = IT
path = /home/it
valid users = @IT
[root@justin bin]# /etc/init.d/smbreload
重新载入 smb.conf文件: [确定]
[root@justin bin]# testparm
Load smb config files from/etc/samba/smb.conf
rlimit_max: increasing rlimit_max(1024) to minimum Windows limit (16384)
Processing section"[homes]"
Processing section"[printers]"
Processing section"[public]"
Processing section"[IT]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of yourservice definitions
[global]
netbios name =JUSTIN_PENG_SAMBA
server string = Justin peng SambaServer Version %v
log file =/var/log/samba/log.%m
max log size = 50
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[public]
comment = Public Stuff
path = /home/share
guest ok = Yes
[IT]
comment = IT
path = /home/IT
valid users = @IT
[root@justin bin]#
在windows下访问Samba服务器的共享文件
直接在运行里输入:\\10.15.72.38输入登陆信息
153017298.png
进入后有三个目录,public之前共享的目录,it本实例的共享,justin1登陆用户的主目录,这是主配置文件中[home]选项定
Tips:windows
下查看和清除访问共享信息:
net use
net use \\10.15.72.38\it /del
在Linux下访问Samba服务器的共享文件
[root@justin ~]# smbclient //10.15.72.38/IT -U justin1%justin
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: \> ls
. D 0 Tue Dec 17 16:31:08 2013
.. D 0 Tue Dec 17 16:30:47 2013
aaa.txt 16 Tue Dec 17 16:31:26 2013
bbb.txt 16 Tue Dec 17 16:31:30 2013
62915 blocks of size 131072. 58553 blocksavailable
smb: \> q
[root@justin ~]#
案例三、实现不同的用户访问同一个共享目录具有不同的权限
需求:
1.
公司有5个部门,分别为:人事行政部(HR &
Admin Dept)、财务部(Financial Management Dept)、技术支持部(Technical Support Dept)、项目部(Project Dept)、客服部(Customer Service Dept)。
2.
各部门的文件夹只允许本部门员工有权访问;各部门之间交流性质的文件放到公用文件夹中。
3.
每个部门都有一个管理本部门文件夹的管理员账号和一个只能新建和查看文件的普通用户权限的账号。
4.
公用文件夹中分为存放工具的文件夹和存放各部门共享文件的文件夹。
5.
对于各部门自己的文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。不是本部门用户不能访问本部门文件夹。
6.
对于公用文件夹中的各部门共享文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。本部门用户(包括管理员和普通用户)在访问其他部门共享文件夹时,只能查看不能修改删除新建。对于存放工具的文件夹,只有管理员有权限,其他用户只能访问。
规划:
1.
在/home下创建以下几个文件夹:HR、 FM、TS、PRO、CS和Share。在Share下又有以下几个文件夹:HR、FM、TS、PRO、CS和Tools。
2.
各部门对应的文件夹由各部门自己管理,Tools文件夹由管理员维护。
3. HR
管理员账号:hradmin;普通用户账号:hruser。
FM
管理员账号:fmadmin;普通用户账号:fmuser。
TS
管理员账号:tsadmin;普通用户账号:tsuser。
PRO
管理员账号:proadmin;普通用户账号:prouser。
CS
管理员账号:csadmin;普通用户账号:csuser。
Tools
管理员账号:admin。091850710.png
创建用户并加入到samba账户中:
[root@justin ~]# useradd -s /sbin/nologin hradmin
[root@justin ~]# useradd -g hradmin -s /sbin/nologin hruser
[root@justin ~]# useradd -s /sbin/nologin fmadmin
[root@justin ~]# useradd -g fmadmin -s /sbin/nologin fmuser
[root@justin ~]# useradd -s /sbin/nologin tsadmin
[root@justin ~]# useradd -g tsadmin -s /sbin/nologin tsuser
[root@justin ~]# useradd -s /sbin/nologin proadmin
[root@justin ~]# useradd -g proadmin -s /sbin/nologin prouser
[root@justin ~]# useradd -s /sbin/nologin csadmin
[root@justin ~]# useradd -g csadmin -s /sbin/nologin csuser
[root@justin ~]# useradd -s /sbin/nologin admin
[root@justin ~]# smbpasswd -a hradmin
New SMB password:
Retype new SMB password:
Added user hradmin.
[root@justin ~]# smbpasswd -a hruser
[root@justin ~]# smbpasswd -a fmadmin
[root@justin ~]# smbpasswd -a fmuser
[root@justin ~]# smbpasswd -a tsadmin
[root@justin ~]# smbpasswd -a tsuser
[root@justin ~]# smbpasswd -a proadmin
[root@justin ~]# smbpasswd -a prouser
[root@justin ~]# smbpasswd -a csadmin
[root@justin ~]# smbpasswd -a csuser
[root@justin ~]# smbpasswd -a admin
[root@justin ~]#
创建目录并修改目录归属:
[root@justin ~]# mkdir /home/{HR,FM,TS,PRO,CS,Share/{HR,FM,TS,PRO,CS,Tools}}-p
[root@justin home]# chown hradmin:hradmin HR && chown fmadmin:fmadminFM && chown tsadmin:tsadmin TS && chown proadmin:proadmin PRO&& chown csadmin:csadmin CS && chown admin:admin Share
[root@justin home]# ll -d /home/{HR,FM,TS,PRO,CS,Share}
drwxr-xr-x 2 csadmin csadmin 4096 12
月17 17:19/home/CS
drwxr-xr-x 2 fmadmin fmadmin 4096 12
月17 17:19/home/FM
drwxr-xr-x 2 hradmin hradmin 4096 12
月17 17:19/home/HR
drwxr-xr-x 2 proadmin proadmin 4096 12
月17 17:19/home/PRO
drwxr-xr-x 8 admin admin 4096 12
月17 17:21/home/Share
drwxr-xr-x 2 tsadmin tsadmin 4096 12
月17 17:19/home/TS
[root@justin home]# cd Share/
[root@justin Share]# chown hradmin:hradmin HR && chown fmadmin:fmadminFM && chown tsadmin:tsadmin TS && chown proadmin:proadmin PRO&& chown csadmin:csadmin CS && chown admin:admin Tools
[root@justin Share]# ll -d {HR,FM,TS,PRO,CS,Tools}
drwxr-xr-x 2 csadmin csadmin 4096 12
月17 17:21CS
drwxr-xr-x 2 fmadmin fmadmin 4096 12
月17 17:21FM
drwxr-xr-x 2 hradmin hradmin 4096 12
月17 17:21HR
drwxr-xr-x 2 proadmin proadmin 4096 12
月17 17:21PRO
drwxr-xr-x 2 admin admin 4096 12
月17 17:21Tools
drwxr-xr-x 2 tsadmin tsadmin 4096 12
月17 17:21TS
[root@justin Share]# chmod 1775 CS FM HR PRO TS
[root@justin Share]# ll
总用量24
drwxrwxr-t 2 csadmin csadmin 4096 12
月17 17:21CS
drwxrwxr-t 2 fmadmin fmadmin 4096 12
月17 17:21FM
drwxrwxr-t 2 hradmin hradmin 4096 12
月18 10:02HR
drwxrwxr-t 2 proadmin proadmin 4096 12
月17 17:21PRO
drwxr-xr-x 2 admin admin 4096 12
月17 17:21Tools
drwxrwxr-t 2 tsadmin tsadmin 4096 12
月17 17:21TS
[root@justin Share]# cd ..
[root@justin home]# chmod 1770 HR FM TS PRO CS
[root@justin home]# chmod -R 0775 Share/
[root@justin home]# ll -d FM HR TS PRO CS
drwxrwx--T 2 csadmin csadmin 4096 12
月18 13:51CS
drwxrwx--T 2 fmadmin fmadmin 4096 12
月17 17:19FM
drwxrwx--T 2 hradmin hradmin 4096 12
月18 13:47HR
drwxrwx--T 2 proadmin proadmin 4096 12
月17 17:19PRO
drwxrwx--T 2 tsadmin tsadmin 4096 12
月17 17:19TS
[root@justin home]# ll Share/
总用量24
drwxrwxr-x 2 csadmin csadmin 4096 12
月17 17:21CS
drwxrwxr-x 2 fmadmin fmadmin 4096 12
月17 17:21FM
drwxrwxr-x 2 hradmin hradmin 4096 12
月18 10:02HR
drwxrwxr-x 2 proadmin proadmin 4096 12
月17 17:21PRO
drwxrwxr-x 2 admin admin 4096 12
月17 17:21Tools
drwxrwxr-x 2 tsadmin tsadmin 4096 12
月17 17:21TS
[root@justin home]#
修改Samba主配置文件/etc/samba/smb.conf:
#======================= Global Settings=====================================
[global]
workgroup = WORKGROUP //
定义工作组,也就是windows中的工作组概念
server string = Justin peng Samba Server Version %v //
定义Samba服务器的简要说明
netbios name = Justin_peng_Samba //
定义windows中显示出来的计算机名称
# --------------------------- Logging Options-----------------------------
log file = /var/log/samba/log.%m //
定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- Standalone Server Options------------------------
security = user //
用户级别,由提供服务的Samba服务器负责检查账户和密码
passdb backend = tdbsam
[homes] //
设置用户宿主目录
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
# -----------------------
文末添加以下------------------------
[public]
comment = Public Stuff
path = /home/share
public = yes
[IT] //IT
组目录,只允许ts组成员访问
comment = IT
path = /home/it
valid users = @IT
[root@justin bin]# /etc/init.d/smb reload
重新载入 smb.conf 文件: [确定]
[root@justin bin]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Processing section "[IT]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
netbios name =JUSTIN_PENG_SAMBA
server string = Justin peng SambaServer Version %v
log file =/var/log/samba/log.%m
max log size = 50
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[public]
comment = Public Stuff
path = /home/share
guest ok = Yes
[IT]
comment = IT
path = /home/IT
valid users = @IT
[HR]
comment = This is a directory ofHR.
path = /home/HR/
public = no
admin users = hradmin
valid users = @hradmin
writable = yes ;
是允许这个目录可写,是mask首要条件。
create mask = 0750 ;
表示新建文件的权限,最前面的0是:sticky、suid 和 sgid 位.
directory mask = 0750 ;
表示新建目录即文件夹的权限
[FM]
comment = This is a directory ofFM.
path = /home/FM/
public = no
admin users = fmadmin
valid users = @fmadmin
writable = yes
create mask = 0750
directory mask = 0750
[TS]
comment = This is a directory ofTS.
path = /home/TS/
public = no
admin users = tsadmin
valid users = @tsadmin
writable = yes
create mask = 0750
directory mask = 0750
[PRO]
comment = This is a PROdirectory.
path = /home/PRO/
public = no
admin users = proadmin
valid users = @proadmin
writable = yes
create mask = 0750
directory mask = 0750
[CS]
comment = This is a directory ofCS.
path = /home/CS/
public = no
admin users = csadmin
valid users = @csadmin
writable = yes
create mask = 0750
directory mask = 0750
[Share]
comment = This is a sharedirectory.
path = /home/Share/
public = no
valid users =admin,@hradmin,@fmadmin,@tsadmin,@proadmin,@csadmin
writable = yes
create mask = 0755
directory mask = 0755
[root@justin Share]# /etc/init.d/smb restart
关闭 SMB 服务: [确定]
启动 SMB 服务: [确定]
[root@justin Share]# /etc/init.d/nmb restart
关闭 NMB 服务: [确定]
启动 NMB 服务: [确定]
[root@justin Share]#
验证:
以用户hradmin登陆
095941881.png
进入hr、/share/hr目录后可以进行添加、删除、修改操作,进入非hr目录回弹出登陆筐,只有输入对应账户才可以进入,可以进入share下所有目录,但是除了hr目录外均无法创建新文件,提示无权限,
100606950.png
其他用户登陆经验证与要求一致