热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Samba的认证过程和权限

Samba的认证过程和权限--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
一、综述
Samba通过两个程序:smbd和nmbd向局域网络提供文件服务。其中nmbd是Netbios名字解析程序,通常系统中只运行一个nmbd进程;smbd是真正提供文件服务的程序,通常每有一个客户发出请求,Samba服务器就会启动一个smbd进程。
nmbd和smbd共用一个配置文件:smb.conf。在Debian Etch中,这个文件位于/etc/samba目录下。Samba会自动每隔60s就重读一次这个文件的内容。所以,每次修改这个文件并存盘后,可以等待60s以使新的配置选项生效,也可以使用/etc/init.d/samba restart脚本手工重启进程。在正式使用一个新的进程之前,可以使用testparm来检验文件语法是否正确。

二、认证和权限
Samba的认证过程我理解分成两个步骤。
1.首先Samba将客户端提供的用户名、密码与本地数据库中的记录进行对比,如果符合,则给予客户端访问共享资源的权限。这个过程好像进一个屋子要先拿出正确的钥匙。
2.但是进入了屋子并不意味着就能随意使用屋子里面的所有东西。Samba根据某些规则,决定客户端是否能访问特定文件或使用其他资源(比如打印机)。这里的规则有在smb.conf文件里面定义的,更重要的是基于Linux文件权限系统的。smbd进程会以上一步通过验证的用户具有的权限去访问文件(这就意味这上一步传递给Sambe验证的用户名必须在服务器的/etc/passwd文件里有对应的项目)。

三、认证过程
1.Samba对客户端身份的认证有四种手段:共享级(share-level)、用户级(user-level)、服务器级(server-level)、域认证(domain-level)。后三种手段本质上很相似,区别在于验证发生的位置不同。user-level下,这一过程就发生在Samba服务器上;server-level下则发生在另一台服务器上;domain-level下,由PDC或BDC完成认证。
2.share-level和user-level是最常用的两种认证手段,user-level是Samba配置的默认值。
这两种模式在客户端的区别表现在:share-level模式下客户端不需要输入用户名,只要输入密码就可以了;user-level模式下客户端要同时输入用户名和密码才行。
而在服务器端,这两种模式的区别很小:Samba都要使用用户名、密码组合进行身份验证。user-level下,Samba会把客户端传递来的用户名和密码与本地数据库中的记录进行检验。share-level下,因为客户端没有传递用户名,Samba会使用smb.conf文件中某个资源段提供的用户名,以及编译Samba过程中置入的默认用户名分别与密码进行组合,然后与本地数据库中的记录进行对比,只要有一个组合能通过验证,就让客户端以对应用户名对应用户拥有的权限访问共享资源。假如所有的组合都没有通过验证,则拒绝客户端的访问。
在share-level下有中特殊情况是,假如某个共享资源设置了
guest ok = yes
guest Only= yes
guest account = 某个用户的账户
当客户端连接时,Samba自动把guest account指定账户拥有的权限赋予客户端以访问共享资源,此时,客户端甚至不需要提供密码。

四、密码传输
不管是share-level还是user-level,都可以在smb.conf文件里指定Samba服务器如何解释接收到的客户端发来的密码:密码可以是明文的形式也可以是加密的形式。客户端采用那种方式发送密码则有客户端的操作系统决定,例如,Windows 95只能以明文形式发送密码,Windows XP默认以加密的形式发送密码,但可以在注册表里改动以使其发送明文密码。所以,假如有多种不同版本的客户端,就需要在Samba服务器上同时维护明文形式的密码数据库和加密形式的密码数据库。
在smb.conf文件里面使用encrypt passwords = yes/no来配置Samba如何解释接收到的密码。
当Samba配置成以明文形式解释传递来的密码时,它使用/etc/passwd作为检验的依据;当Samba配置成以加密形式解释传递来的密码时,它使用smbpasswd作为检验的依据(Debian Etch中,这个文件默认位于/etc/samba目录下,但可以在smb.conf文件中指定它的位置。)
(我的想法:Linux用户存储在/etc/passwd或/etc/shadow文件里面的密码也是经过加密的,但是这种加密算法,Windows客户端并不支持。这样,客户端不能在本地用同样的算法先将密码加密然后再通过网络发送,而只能将密码以明文形式传递给Samba服务器,由Samba服务器将其按照/etc/passwd支持的算法将其转换后与/etc/passwd中的记录进行对比。
密码明文传输的危险显而易见,所以Windows改成将密码先加密后在发送给服务器,但问题是Windows加密密码用的算法和/etc/passwd使用的算法不同,所以Samba不能直接将接受到的明文密码与/etc/passwd进行比较。而且Windows使用的是一种单向的算法。这就意味着Samba接收到客户端传递来的加密后的密码是不能从中恢复出密码的明文,在进一步转换后与/etc/passwd进行比较。一句话就是,在加密密码的情况下,/etc/passwd或者/etc/shadow文件不能作为验证的依据了。)
因为smbpasswd文件与/etc/passwd文件是独立的,所以Samba共享资源的用户密码可以和登录密码不同。但是smbpasswd文件里面每个用户都必须在/etc/passwd文件里面有对应的记录,因为一旦通过验证后,Samba将使用这个用户对应的权限赋予客户端以访问相应的资源。

五、权限
当客户端通过了身份认证后,就可以使用Samba提供的各种资源了。smb.conf使用两个选项browsable,writable来控制用户是否能够浏览和写入某个资源。
同时,客户端的读写操作受到Linux权限系统的控制。例如:有某个文件的所有者、组别、权限如下
rwxr-x--- user_a group_1 somefile
有三个用户的用户名和组分别是:
用户名 组名
user_a group_1
user_b group_1
user_c group_2
①当客户端以user_a连接并通过验证后,他既能读该文件,也能写入文件;
②当客户端以user_b连接并通过验证后,他只能读该文件,不能写;
③当客户端以user_c连接并通过验证后,他既不能读该文件,也不能写入文件。
推荐阅读
  • 主流操作系统简介
    主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 阿里云服务器iis设置方法与上千种Linux桌面版本相比,Linux服务器只有可怜的十几种。但想要选对适合你的企业需要的仍然不是件容易的事情,选Linux服务器首先要 ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Kali Linux 简介
    KaliLinux是世界渗透测试行业公认的优秀的网络安全审计工具集合,它可以通过对设备的探测来审计其安全性,而且功能完备,几乎包含了目前所 ... [详细]
author-avatar
鸵鸟家的大pp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有