赞
踩
对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。但是Linux和Windows之间是不能共享的,澳大利亚国立大学的Andrew Tridgell开发SMB,但SMB这个名字不能被注册成商标,因为已有SMB协议了,于是作者给名字上加了两个A,SAMBA。
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
事实上, 就像 NFS 是架构在 RPC Server 上面一样, SAMBA 这个文件系统是架构在 NetBIOS (Network Basic Input/Output System, NetBIOS) 这个通讯协议上面所开发出来的。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
NetBIOS 机器间的沟通,取得对方主机的NetBIOS name 定位该主机所在,利用对方给予权限存取可用资源。
SAMBA 使用下面两个服务来控制上面两步骤
nmbd
这个daemon是用来管理工作组,NetBIOS name等等的解析。主要利用 UDP 协议开启 port 137 138 来负责名称解析的任务。
smbd
这个daemon主要用来管理SAMBA主机分享的目录,档案与打印机等等。主要利用可靠的TCP协议来传输数据,开放端口为139。所以SAMBA每次启动至少都需要有这个daemon,而当我启动了SAMBA之后,主机系统就会启动137,138 这两个UDP 及139这个TCP端口。
两种最常见的局域网的联机模式peer/peer(对等模式)和domain model(主控模式)
使用 peer/peer 的架构的好处是每部计算机均可以独立运作,而不受他人的影响!不过, 缺点就是当整个网域内的所有人员都要进行数据分享时,光是知道所有计算机里面的账号与密码,就会很伤脑筋了! 所以, Peer/Peer 的架构是比较适合 :小型的网域,没有需要常常进行档案数据分享的网络环境,每个使用者都独自拥有该计算机的拥有权
将所有的账号与密码都放置在一部主控计算机 (Primary Domain Controller, PDC) 上面,在我的网域里面,任何人想要使用任何计算机时,都需要在屏幕前方输入账号与密码,然后通通藉由 PDC 服务器的辨识后,才给予适当的权限。也就是说,不同的身份还具有不一样的计算机资源权限。
yum -y install samba samba-common samba-client
samba的主配置文件
/etc/samba/smb.conf
samba的用户别名,比如可以将root用别名administrator、admin代替等(作用:可以只告知samba用户该别名,这样可以保护真实的samba服务器/etc/passwd的用户不泄漏)
/etc/samba/smbusers
samba的IP和域名对应,类似/etc/hosts文件功能
/etc/samba/lmhosts
存放samba用户及密码
/etc/samba/smbpasswd
samba服务需要4个软件包
[root@localhost Server]# rpm -qa |grep samba
samba-common-3.0.28-0.el5.8
samba-client-3.0.28-0.el5.8
samba-3.0.28-0.el5.8
system-config-samba-1.2.39-1.el5.noarch
samba-swat-3.0.28-0.el5.8
samba-common-3.0.28-0.el5.8:提供samba服务器和客户机中都必须使用的公共文件,因此此文件必须在samba服务器和客户端软件包之前安装。
samba-3.0.28-0.el5.8:包括了samba服务器程序的所有文件。
samba-client-3.0.28-0.el5.8:提供了samba客户机的所有文件
system-config-samba-1.2.39-1.el5.noarch:提供图形界面配置管理配置文件,是Xwindow下的图形化配置程式。
samba-swat-3.0.28-0.el5.8以web页面方式配置samba的前端,她们的作用都是设定/etc/samba/smb.
/etc/samba/smb.conf
[global]
#共享所在的工作组,可以是NT域名、工作组名
workgroup = WORKGROUP
#客户端看到的服务器的描述信息
server string = samba server on Centos
#NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了
netbios name = centos_smb
#监听的网卡,可以写网卡名,也可以写该网卡的IP地址
interfaces = lo eth0
#表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。我这里允许192.168.1.0网段里的所有客户端访问samba server。(注释掉表示允许所有IP)
hosts allow = 192.168.1. 0/255.255.255.0
#设置用户访问Samba Server的验证方式,一共有四种验证方式。 share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。 user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 domain:域安全级别,使用主域控制器(PDC)来完成认证。
security=share在新版3.9中已经被废弃了
security = user
#用来定义用户名映射,比如可以将root换成administrator、admin等。要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,以保护Linux的系统账号root。
username map = /etc/samba/smbusers
#是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。
encrypt passwords = true
#passdb backend密码验证后端。目前支持的有三种:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
passdb backend = smbpasswd
#用来定义samba用户的密码文件。smbpasswd文件如果默认不存在,要手工新建。
smb passwd file =/etc/samba/smbpasswd
#日志文件的储存位置和文件名(%m代表客户端主机名)。
log file = /var/log/samba/log.%m
#同一客户最多能打开的文件数目
max open files = 1000
#用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
socket options = TCP_NODELAY
#xxxxx表示共享名
[xxxxx]
#comment是对该共享的描述,可以是任意字符串。
comment = code string
#path用来指定共享目录的路径。
path = /home/songyd/code
#writable用来指定该共享路径是否可写。这里我们允许写入,以满足文件双向共享。
writable = yes
#只允许mysql和jack2个用户对此资源可以写,其他的为read only
writelist = mysql, jack
#browseable用来指定该共享是否可以浏览。
browseable = yes
#available用来指定该共享资源是否可用。
available = yes
#是否允许允许来宾访问
guest ok = no
#设置权限为只读权限
read only = yes
#共享目录允许所有用户访问及上传文件
public = no
#只允许jack sunny访问该共享资源
valid users = jack sunny
完整示例
[global] workgroup = WORKGROUP server string = samba server on Version %v netbios name = centos_smb interfaces = lo eth0 #hosts allow = 192.168.16.0/255.255.255.0 security = user username map = /etc/samba/smbusers encrypt passwords = true passdb backend = smbpasswd smb passwd file =/etc/samba/smbpasswd log file = /var/log/samba/log.%m max open files = 1000 socket options = TCP_NODELAY [webfile] comment = frontend web path = /home/wwwroot/frontend/web browseable = yes writable = yes create mask = 0664 directory mask = 0755 guest ok = no public = no available = yes
[root@master ~]# testparm --help
Usage: [OPTION...] <config-file> [host-name] [host-ip]
-s, --suppress-prompt Suppress prompt for enter
-v, --verbose Show default options too
-l, --skip-logic-checks Skip the global checks
--show-all-parameters Show the parameters, type, possible values
--parameter-name=STRING Limit testparm to a named parameter
--section-name=STRING Limit testparm to a named section
[root@master ~]# testparm Registered MSG_REQ_POOL_USAGE Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[print$]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] printcap name = cups security = USER workgroup = SAMBA idmap config * : backend = tdb cups options = raw [homes] browseable = No comment = Home Directories inherit acls = Yes read only = No valid users = %S %D%w%S [printers] browseable = No comment = All Printers create mask = 0600 path = /var/tmp printable = Yes [print$] comment = Printer Drivers create mask = 0664 directory mask = 0775 force group = @printadmin path = /var/lib/samba/drivers write list = @printadmin root
[root@master ~]# smbpasswd --help smbpasswd: invalid option -- '-' When run by root: smbpasswd [options] [username] otherwise: smbpasswd [options] options: -L local mode (must be first option) -h print this usage message -s use stdin for password prompt -c smb.conf file Use the given path to the smb.conf file -D LEVEL debug level -r MACHINE remote machine -U USER remote username (e.g. SAM/user) extra options when run by root or in local mode: -a add user -d disable user -e enable user -i interdomain trust account -m machine trust account -n set no password -W use stdin ldap admin password -w PASSWORD ldap admin password -x delete user -R ORDER name resolve order
创建用户
smbpasswd -a gege
如果要建立一个samba用户,必须是在/etc/shadow(当前linux系统中)存在的用户。
禁用samba用户
smbpasswd -d gege
启用samba用户
smbpasswd -e gege
用户的密码置空
smbpasswd -n gege
删除samba用户
smbpasswd -x geger
[root@master ~]# smbpasswd -a blueicex
New SMB password:
Retype new SMB password:
Failed to add entry for user blueicex
[root@master samba]# useradd blueicex
[root@master samba]# smbpasswd -a blueicex
New SMB password:
Retype new SMB password:
Added user blueicex.
linux有个和smbpasswd更可靠的用户验证模式,tdbsam用户验证文件存储,系统默认使用tdbsam的安全帐户管理模式,而且smb.conf文件里没有启用smbpasswd认证存储
修改passdb backend = tdbsam为 # passdb backend = tdbsam ,即将tdbsam存储关闭
加入smb passwd file = /etc/samba/smbpasswd 启用用户验证文件存储到smbpasswd文件
**输入完该samba用户密码后,会在/etc/samba/smbpasswd文件生成blueicex用户密码信息,**如果不想让samba用户使用blueicex作为samba用户名访问的话,则可以在/etc/samba/smbusers 设置改用户别名,如下写出了添加blueicex后的smbpasswd文件和smbusers文件信息
[root@master samba]# smbpasswd -a test1
New SMB password:
Retype new SMB password:
Added user test1.
[root@master samba]# smbpasswd -a test2
New SMB password:
Retype new SMB password:
Added user test2.
[root@master samba]# ls
lmhosts smb.conf smb.conf.example smbpasswd
[root@master samba]# cat smbpasswd
test1:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:55C840E857FA61EF2634FB5EFFCB5918:[U ]:LCT-5E67A883:
test2:1005:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:55C840E857FA61EF2634FB5EFFCB5918:[U ]:LCT-5E67A88D:
Notice:★★★★★
samba版本升级了,规则也变化了。现在无论是使用tdb数据库存储密钥还是smbpasswd文本存储密钥都要设定相对应的 passdb backend参数。要用传统的文本方式存储只需这样设定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是绝对路径)>,不要再画蛇添足的写上smb passwd file = /etc/samba/smbpasswd,该参数已经不适用于新版本的samba了。
用户名必须是linux中存在的用户,可以使用useradd命令在系统中添加一个用户,然后再增加一个对应的samba用户,也 就是一个用户名使用的是两套密码。一个是系统用户密码,另一个密码存储在/etc/samba/smbpasswd文件中的samba密码,这样可以防止 系统用户密钥外泄带来的安全隐患。
除了上面的措施外,samba还提供了一个更安全的方法,用户名映射功能,这样做的好处是防止系统内的真实用户名暴露,在smb.conf中增 加username map = /etc/samba/smbuser设定,再手工建立该文件。username map参数详解,比如有一个系统用户名为zyhyt.org,同时我们也设定其为samba的登录名,虽然是两套独立的密码,但依然告诉了用户,我系统内 也存在zyhyt.org这个用户。严格的说这也是违背系统安全规则的,不法人士可能会利用该用户名暴力猜解获得系统内帐户权限。samba提供的用户名 映射功能,只需编辑smbuser文>件,格式为:真实的用户名 = 映射出的用户名(随便自定义);zyhyt.org = nas_guest nas_nobody(可以映射出多个用户名,注意中间的空格)。设定完成后,我们只需将nas_guest告诉用户即可,无须担心真实的 zyhyt.org用户名暴露。
[root@master ~]# cat smbusers
#Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
mysql = sql (samba用户可以使用sql作为samba帐号来访问samba服务器)
[root@master ~]#vim /etc/samba/smb.conf
security = user
guest accout = peter
encrypt passwords = yes
smb passwd file =/etc/samba/smbpasswd
passdb backend = smbpasswd
[root@master ~]# mkdir /home/share
[share]
path = /home/share
writeable = yes
[root@master samba]# pdbedit --help Usage: [OPTION...] -L, --list list all users -v, --verbose be verbose -w, --smbpasswd-style give output in smbpasswd style -u, --user=USER use username -N, --account-desc=STRING set account description -f, --fullname=STRING set full name -h, --homedir=STRING set home directory -D, --drive=STRING set home drive -S, --script=STRING set logon script -p, --profile=STRING set profile path -I, --domain=STRING set a users' domain -U, --user SID=STRING set user SID or RID -M, --machine SID=STRING set machine SID or RID -a, --create create user -r, --modify modify user -m, --machine account is a machine account -x, --delete delete user -b, --backend=STRING use different passdb backend as default backend -i, --import=STRING import user accounts from this backend -e, --export=STRING export user accounts to this backend -g, --group use -i and -e for groups -y, --policies use -i and -e to move account policies between backends --policies-reset restore default policies -P, --account-policy=STRING value of an account policy (like maximum password age) -C, --value=LONG set the account policy to this value -c, --account-control=STRING Values of account control --force-initialized-passwords Force initialization of corrupt password strings in a passdb backend -z, --bad-password-count-reset reset bad password count -Z, --logon-hours-reset reset logon hours --time-format=STRING The time format for time parameters -t, --password-from-stdin get password from standard in -K, --kickoff-time=STRING set the kickoff time --set-nt-hash=STRING set password from nt-hash Help options: -?, --help Show this help message --usage Display brief usage message Common samba options: -d, --debuglevel=DEBUGLEVEL Set debug level -s, --configfile=CONFIGFILE Use alternate configuration file -l, --log-basename=LOGFILEBASE Base name for log files -V, --version Print version --option=name=value Set smb.conf option from command line
新建用户
pdbedit -a username
删除用户
pdbedit -x username
列出用户列表,读取passdb.tdb数据库文件
pdbedit -L
列出用户列表详细信息
pdbedit -Lv
暂停该用户帐号
pdbedit -c “[D]” -u username
恢复该用户帐号
pdbedit -c “[]” -u username
[root@master ~]# smbclient --help Usage: smbclient service <password> -R, --name-resolve=NAME-RESOLVE-ORDER Use these name resolution services only -M, --message=HOST Send message -I, --ip-address=IP Use this IP to connect to -E, --stderr Write messages to stderr instead of stdout -L, --list=HOST Get a list of shares available on a host -m, --max-protocol=LEVEL Set the max protocol level -T, --tar=<c|x>IXFqgbNan Command line tar -D, --directory=DIR Start from directory -c, --command=STRING Execute semicolon separated commands -b, --send-buffer=BYTES Changes the transmit/send buffer -t, --timeout=SECONDS Changes the per-operation timeout -p, --port=PORT Port to connect to -g, --grepable Produce grepable output -q, --quiet Suppress help message -B, --browse Browse SMB servers using DNS Help options: -?, --help Show this help message --usage Display brief usage message Common samba options: -d, --debuglevel=DEBUGLEVEL Set debug level -s, --configfile=CONFIGFILE Use alternate configuration file -l, --log-basename=LOGFILEBASE Base name for log files -V, --version Print version --option=name=value Set smb.conf option from command line Connection options: -O, --socket-options=SOCKETOPTIONS socket options to use -n, --netbiosname=NETBIOSNAME Primary netbios name -W, --workgroup=WORKGROUP Set the workgroup name -i, --scope=SCOPE Use this Netbios scope Authentication options: -U, --user=USERNAME Set the network username -N, --no-pass Don't ask for a password -k, --kerberos Use kerberos (active directory) authentication
[root@master ~]# vim /etc/samba/smb.conf [global] workgroup = SAMBA security = user netbios name = blueicex smb passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [share] comment = share Stuff path = /data public = yes writable = yes
[root@master ~]# systemctl restart smb nmb [root@master ~]# smbclient //127.0.0.1/share Enter SAMBA\root's password: Anonymous login successful Try "help" to get a list of possible commands. smb: \> ls . D 0 Tue Mar 10 10:55:11 2020 .. D 0 Sun Mar 1 19:11:12 2020 yum D 0 Sun Mar 1 01:22:43 2020 wwwroot D 0 Sun Mar 1 11:42:47 2020 wwwlogs D 0 Sun Mar 1 11:42:47 2020 mariadb D 0 Tue Mar 3 11:09:32 2020 data D 0 Tue Mar 10 10:54:24 2020 zookeeper D 0 Tue Mar 10 17:18:13 2020 15718400 blocks of size 1024. 1145760 blocks available smb: \> help ? allinfo altname archive backup blocksize cancel case_sensitive cd chmod chown close del deltree dir du echo exit get getfacl geteas hardlink help history iosize lcd link lock lowercase ls l mask md mget mkdir more mput newer notify open posix posix_encrypt posix_open posix_mkdir posix_rmdir posix_unlink posix_whoami print prompt put pwd q queue quit readlink rd recurse reget rename reput rm rmdir showacls setea setmode scopy stat symlink tar tarmode timeout translate unlock volume vuid wdel logon listconnect showconnect tcon tdis tid utimes logoff .. ! smb: \>
列出某个IP地址所提供的共享文件夹
smbclient -L 198.168.0.1 -U username%password
像ftp客户端一样使用smbclient
smbclient //192.168.0.1/tmp -U username%password
执行smbclient命令成功后,进入smbclient环境,出现提示符:smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。
直接一次性使用smbclient命令
smbclient -c “ls” //192.168.0.1/tmp -U username%password
或
smbclient //192.168.0.1/tmp -U username%password
smb:/>ls
创建一个共享文件夹
smbclient -c “mkdir share1” //192.168.0.1/tmp -U username%password
如果用户共享//192.168.0.1/tmp的方式是只读的,会提示NT_STATUS_ACCESS_DENIED making remote directory /share1
selinux禁止问题
[root@client ~]# smbclient //172.25.254.126/student -U student Enter student's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] smb: \> ls NT_STATUS_ACCESS_DENIED listing \* selinux禁止 smb: \> quit 客户端配置selinux: [root@server ~]# getsebool -a | grep smb smbd_anon_write --> off [root@server ~]# getsebool -a | grep samba samba_create_home_dirs --> off samba_domain_controller --> off samba_enable_home_dirs --> off samba_export_all_ro --> off samba_export_all_rw --> off samba_portmapper --> off samba_run_unconfined --> off samba_share_fusefs --> off samba_share_nfs --> off sanlock_use_samba --> off use_samba_home_dirs --> off virt_sandbox_use_samba --> off virt_use_samba --> off [root@server ~]# setsebool -P samba_enable_home_dirs on [root@server ~]# 客户端访问: [root@client ~]# smbclient //172.25.254.226/student -U student Enter student's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] smb: \> ls . D 0 Thu Jul 10 19:06:52 2014 .. D 0 Fri Jun 1 21:49:35 2018 .bash_logout H 18 Wed Jan 29 07:45:18 2014 .bash_profile H 193 Wed Jan 29 07:45:18 2014 .bashrc H 231 Wed Jan 29 07:45:18 2014 .ssh DH 0 Thu Jul 10 18:19:10 2014 .config DH 0 Thu Jul 10 19:06:53 2014 40913 blocks of size 262144. 28595 blocks available smb: \> quit
#客户端 [root@client bin]# smbclient -L//172.25.254.226/student -U student Enter student's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba Server Version 4.1.1) student Disk Home Directories #硬盘可挂载使用 Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Server Comment --------- ------- Workgroup Master --------- ------- [root@client bin]# mount //172.25.254.126/student/ /mnt/ -o username=student,password=123 [root@client bin]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda1 10473900 3182068 7291832 31% / devtmpfs 469332 0 469332 0% /dev tmpfs 484920 140 484780 1% /dev/shm tmpfs 484920 12800 472120 3% /run tmpfs 484920 0 484920 0% /sys/fs/cgroup /dev/mapper/vg0-vo 483670 2339 451840 1% /home //172.25.254.126/student/ 10473900 3157292 7316608 31% /mnt [root@client bin]# cd /mnt [root@client mnt]# ls ls passwd [root@client mnt]# touch file #服务端Student用户家目录: [root@server student]# ls file ls passwd
[root@centos1 samba]# yum install cifs-utils cifs-utils-devel -y
[root@client ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed May 7 01:22:57 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1 /dev/vg0/vo /home ext4 defaults 0 0 //172.25.254.126/student /mnt cifs defaults,username=student,password=123 0 0 [root@client ~]# mount -a [root@client ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda1 10473900 3182088 7291812 31% / devtmpfs 469332 0 469332 0% /dev tmpfs 484920 140 484780 1% /dev/shm tmpfs 484920 12800 472120 3% /run tmpfs 484920 0 484920 0% /sys/fs/cgroup /dev/mapper/vg0-vo 483670 2339 451840 1% /home //172.25.254.126/student 10473900 3157288 7316612 31% /mnt
[root@client ~]# vim /etc/rc.d/rc.local mount //172.25.254.126/student/ /mnt/ -o username=student,password=123 [root@client ~]# chmod +x /etc/rc.d/rc.local [root@client ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda1 10473900 3182068 7291832 31% / devtmpfs 469332 0 469332 0% /dev tmpfs 484920 140 484780 1% /dev/shm tmpfs 484920 12800 472120 3% /run tmpfs 484920 0 484920 0% /sys/fs/cgroup /dev/mapper/vg0-vo 483670 2339 451840 1% /home [root@client ~]# reboot [root@client ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda1 10473900 3181136 7292764 31% / devtmpfs 469332 0 469332 0% /dev tmpfs 484920 80 484840 1% /dev/shm tmpfs 484920 12752 472168 3% /run tmpfs 484920 0 484920 0% /sys/fs/cgroup /dev/mapper/vg0-vo 483670 2339 451840 1% /home //172.25.254.226/student/ 10473900 3157288 7316612 31% /mnt
[root@server ~]# vim /etc/samba/smb.conf
workgroup = yifan #将域名改为yifan
[root@server ~]# vim /etc/samba/smb.conf
hosts allow =172.25.254.226 #用户白名单
hosts deny =172.25.254.226 #用户黑名单
[root@sever ~]# chcon -t samba_share_t /westos #修改安全安全上下文
或者
[root@sever ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[root@sever ~]# restorecon -RvvF /westos/ #刷新
restorecon reset /westos context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:default_t:s0
[root@sever ~]# chmod 777 /westos/ #给满权限,以被所有用户都可读写
[DIR] | 共享目录名称,可自己设定 |
---|---|
comment=westos dir | 显示指定的共享目录 |
path=/westos | 所要共享的目录 |
browseable=no/yes | 是否显示目录 |
writable=no/yes | 所有用户对目录是否可写 |
write list = +/@staff | 对staff组可写 |
write list = staff | 对staff用户可写 |
admin users =staff | 此目录的超级用户 |
#是否显示目录,该修改不用重启服务,用smbclient -L 地址,不显示设置的目录。
browseable=no|yes
#允许所有用户写
writable = yes|no
#对student用户可写,注意此writable = yes一定要注释掉。
write list = student
#对student组用户可写
write list = @/+student
[root@server ~]# vim /etc/samba/smb.conf # writable = yes write list = @student [root@server ~]# systemctl restart smb [root@sever ~]# id student uid=1000(student) gid=1000(student) groups=1000(student),10(wheel) [root@sever ~]# id westos uid=1001(westos) gid=1001(westos) groups=1001(westos) [root@server ~]# systemctl restart smb [root@client ~]# mount //172.25.254.126/DIR /mnt -o username=westos,password=123 [root@client ~]# cd /mnt/ [root@client mnt]# touch 789 touch: cannot touch ‘789’: Permission denied [root@sever ~]# usermod -G student westos [root@client ~]# mount //172.25.254.126/DIR /mnt -o username=westos,password=123 [root@client ~]# cd /mnt/ [root@client mnt]# touch word
[root@client ~]# smbclient //172.25.254.126/DIR Enter root's password: Anonymous login successful Domain=[YIFAN] OS=[Unix] Server=[Samba 4.1.1] tree connect failed: NT_STATUS_ACCESS_DENIED #访问被拒绝。 [root@server ~]# vim /etc/samba/smb.conf [DIR] comment=westos dir path=/westos browseable=no ; writable=yes write list =+student guest ok = yes #允许guest用户访问 security = user passdb backend = tdbsam map to guest = bad user #将匿名用户映射为guest用户 [root@sever ~]# systemctl restart smb.service [root@client ~]# smbclient //172.25.254.126/DIR Enter root's password: Domain=[YIFAN] OS=[Unix] Server=[Samba 4.1.1] smb: \> ls . D 0 Wed Jun 6 18:07:35 2018 .. D 0 Wed Jun 6 17:33:36 2018 file N 0 Wed Jun 6 17:55:23 2018 hello N 0 Wed Jun 6 17:56:12 2018 123 N 0 Wed Jun 6 17:56:55 2018 456 N 0 Wed Jun 6 17:57:26 2018 256 N 0 Wed Jun 6 17:58:49 2018 word N 0 Wed Jun 6 18:07:35 2018 40913 blocks of size 262144. 26839 blocks available smb: \> quit
win+r
\192.168.**
————Blueicex 2020/3/10 23:42 blueice1980@126.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。