samba原理-usernames

SAMBA是在Linux服务器上部署共享文件服务,然后在Windows上进行访问。对于访问时用户的验证Linux不同于Windows。

1. Linux用户模式

Linux一般分为以下几种用户模式:

  • 0:关机
  • 1:单用户模式
  • 2:无网络支持的多用户模式
  • 3:有网络支持的多用户模式
  • 4:保留,未使用
  • 5:有网络支持有X-Window支持的多用户模式
  • 6:重新引导系统,即重启

Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务。特注:进入单用户模式,没有开启网络服务,不支持远程连接

Linux 系统中不同的运行级别(Run Level)代表了系统的不同运行状态,例如 Linux 服务器正常运行时处于运行级别3,是能够提供网络服务的多用户模式;而运行级别 1 只允许管理员通过服务器主机的单一控制台进行操作,即“单用户模式”。

2. Linux文件权限

Linux文件的元数据中保存了该文件的权限mod,创建该文件的UID,GID。

[u1@localhost test]# stat file1 
  File: ‘file1’
  Size: 2           Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 134382061   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-09-19 01:38:17.517410401 -0700
Modify: 2017-09-19 01:38:14.854274421 -0700
Change: 2017-09-19 01:38:14.854274421 -0700
 Birth: -
You have new mail in /var/spool/mail/root
[u1@localhost test]#

如上面文件file1的用户具有读写权限,用户组和其他用户具有读权限。同时也应该注意到uid/gid保存在文件的元数据中。如果切换其他用户,并进行写该文件,将报错。

[root@localhost test]# su u1
[u1@localhost test]$ ll
total 4
-rw-r--r-- 1 root root 2 Sep 19 01:38 file1

[u1@localhost test]$ echo "1" > file1
bash: file1: Permission denied
[u1@localhost test]$ 

上述用户u1就是Linux多用户模式中,一个用户。因此如果从网络(windows客户端)访问Linux,那么也需要提供用户名。
但是我们也应该注意到,在Linux本地访问时,已经登录到u1用户状态,u1发起的读写操作将把u1的UID/GID作为请求的一部分与元数据中的要访问文件的UID/GID做比较,做权限鉴定。那么网络来的请求该如何做用户的权限鉴定呢?

3.SAMBA用户鉴权

请求从windows客户端来,Linux服务器上的smbd进程接收请求。由于不同请求中可能包含了不同的用户名,权限,因此smbd需要提供一个转换功能。即将windows 访问请求中的用户转换为uid并保存下来。如windows用户admin1在smaba共享目录中创建了一个文件,那么该文件的元数据中应该保存admin1在smbd中转换出来的uid/gid。

不过进行用户转换功能的组件不是smbb,而是其他的组件,后续将进行逐步说明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值