samba原理-usernames

来源:互联网 发布:数控编程兼职 编辑:程序博客网 时间:2024/05/16 23:37

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 fileDevice: fd00h/64768d    Inode: 134382061   Links: 1Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)Access: 2017-09-19 01:38:17.517410401 -0700Modify: 2017-09-19 01:38:14.854274421 -0700Change: 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]$ lltotal 4-rw-r--r-- 1 root root 2 Sep 19 01:38 file1[u1@localhost test]$ echo "1" > file1bash: 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,而是其他的组件,后续将进行逐步说明。

原创粉丝点击