samba原理-usernames
4170 ワード
SAMBAはLinuxサーバに共有ファイルサービスを導入し、Windowsにアクセスします.アクセス時のユーザーの認証LinuxはWindowsとは異なります.
Linuxは一般的に以下のユーザーモードに分けられます.0:シャットダウン 1:シングルユーザモード 2:ネットワークサポートのないマルチユーザモード 3:ネットワークでサポートされているマルチユーザモード 4:予約、未使用 5:X-Window対応のマルチユーザモード をネットワークでサポート6:システムの再起動、すなわち の再起動
Linuxシステムが正常な状態にある場合、サーバホストが起動(または再起動)した後、システムブートプログラムによって自動的にLinuxシステムをマルチユーザモードに起動させ、正常なネットワークサービスを提供することができる.特注:シングルユーザーモードに入り、ネットワークサービスを起動せず、リモート接続をサポートしない
Linuxシステムの異なる運行レベル(Run Level)はシステムの異なる運行状態を代表し、例えばLinuxサーバーが正常に運行する時運行レベル3にあり、ネットワークサービスを提供できるマルチユーザーモードである.一方、実行レベル1では、管理者がサーバホストの単一コンソール、すなわち「シングルユーザモード」で操作できるようにします.
Linuxファイルのメタデータにファイルの権限modが保存され、ファイルのUID、GIDが作成されます.
上記のファイルfile 1のユーザには読み書き権限があり、ユーザグループや他のユーザには読み書き権限があります.uid/gidがファイルのメタデータに保存されていることにも注意してください.他のユーザーを切り替えてファイルを書くと、エラーが表示されます.
上記ユーザu 1はLinuxマルチユーザモードのうちの1ユーザである.そのため、ネットワーク(windowsクライアント)からLinuxにアクセスする場合は、ユーザー名も必要です.しかし,Linuxローカルアクセス時には既にu 1ユーザ状態に登録されており,u 1が開始する読み書き操作は,u 1のUID/GIDを要求の一部としてメタデータ中のアクセスするファイルのUID/GIDと比較し,権限認証を行う.では、ネットワークからのリクエストはどのようにユーザーの権限鑑定をすればいいのでしょうか.
要求はwindowsクライアントから来て、Linuxサーバーのsmbdプロセスは要求を受信します.異なるリクエストには異なるユーザー名、権限が含まれている可能性があるため、smbdは変換機能を提供する必要があります.Windowsアクセスリクエストのユーザーをuidに変換して保存します.Windowsユーザーadmin 1がsmaba共有ディレクトリにファイルを作成した場合、そのファイルのメタデータには、admin 1がsmbdで変換したuid/gidが保存されます.
ただし,ユーザ変換機能を行うコンポーネントはsmbbではなく,他のコンポーネントであり,後述する.
1.Linuxユーザーモード
Linuxは一般的に以下のユーザーモードに分けられます.
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]#
上記のファイルfile 1のユーザには読み書き権限があり、ユーザグループや他のユーザには読み書き権限があります.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]$
上記ユーザu 1はLinuxマルチユーザモードのうちの1ユーザである.そのため、ネットワーク(windowsクライアント)からLinuxにアクセスする場合は、ユーザー名も必要です.しかし,Linuxローカルアクセス時には既にu 1ユーザ状態に登録されており,u 1が開始する読み書き操作は,u 1のUID/GIDを要求の一部としてメタデータ中のアクセスするファイルのUID/GIDと比較し,権限認証を行う.では、ネットワークからのリクエストはどのようにユーザーの権限鑑定をすればいいのでしょうか.
3.SAMBAユーザー認証
要求はwindowsクライアントから来て、Linuxサーバーのsmbdプロセスは要求を受信します.異なるリクエストには異なるユーザー名、権限が含まれている可能性があるため、smbdは変換機能を提供する必要があります.Windowsアクセスリクエストのユーザーをuidに変換して保存します.Windowsユーザーadmin 1がsmaba共有ディレクトリにファイルを作成した場合、そのファイルのメタデータには、admin 1がsmbdで変換したuid/gidが保存されます.
ただし,ユーザ変換機能を行うコンポーネントはsmbbではなく,他のコンポーネントであり,後述する.