見出し画像

394.1 ユーザアカウントとグループアカウントの管理

主題394:Sambaのユーザとグループの管理
394.1 ユーザアカウントとグループアカウントの管理

LinuC300の試験範囲である主題390~397まであるうちの「主題394:Sambaのユーザとグループの管理」から「394.1 ユーザアカウントとグループアカウントの管理」についてのまとめ

  • 重要度:4

  • 説明:
    混在環境においてユーザアカウントとグループアカウントを管理できること。

  • 主要な知識範囲:
    - ユーザアカウントとグループアカウントを管理する
    - ユーザ名のマッピングおよびグループ名のマッピングを理解する
    - ユーザアカウントの管理ツールに関する知識
    - smbpasswdプログラムの使用
    - ファイルおよびディレクトリオブジェクトの所有者の強制的な設定

  • 重要なファイル、用語、ユーティリティ:
    - pdbedit
    - smb.conf
    - samba-tool userと、そのサブコマンド
    - samba-tool groupと、そのサブコマンド
    - smbpasswd
    - /etc/passwd
    - /etc/group
    - force user、force group
    - idmap


(補足)
Sambaユーザーは事前に作成されています。
(別記事 Appendix (準備その4)ユーザーを作成する 参照)


ユーザアカウントとグループアカウントを管理する

~アカウントに関する基礎知識~
Sambaの共有リソースにアクセスするためには、SambaユーザーとLinuxユーザーが必要になる。

  • Sambaユーザー:
    ユーザー/グループ情報は専用のデータベース(=SAM:Security Account Manager)にWindows形式で格納されている。
    Sambaの共有リソースにアクセスするWindowsクライアントの認証に使われる。

  • Linuxユーザー:
    ユーザー/グループ情報は/etc/passwd、/etc/shadow、/etc/groupにLinux形式で格納されている。
    Linuxのファイルシステムへのアクセス制御に使われる。
    Sambaの設定で読み取りや書き込みの設定をしても、最終的にはファイルシステムにアクセスする際にはLinuxユーザーでアクセスすることになるので、Sambaで公開しようとしているリソースに対して所有者、所有グループ、パーミッションといったLinuxユーザーに対するアクセス権の設定が適切である必要がある。


ユーザ名のマッピングおよびグループ名のマッピングを理解する

Sambaが動いているLinuxサーバーのユーザー名とWindowsクライアントのユーザー名はそれぞれ異なる特徴を持っているので、必要に応じてこれらを対応付け(マッピング)する必要がある。

Windowsのユーザー名:
- 大文字、小文字を区別しない
- 日本語が使われている可能性がある
- ユーザー名にスペースが入っている場合がある

Linuxのユーザー名:
- 大文字、小文字は区別される
- 英数字のみ
- ユーザー名にスペースは入らない

~ユーザーのマッピングの設定~

  • username map =
    Linuxのユーザーとクライアントのユーザー名の対応を記述したファイルをフルパスで指定する。

~ユーザマップファイルの記述ルール~
- Linuxユーザーとクライアントのユーザー名の対応を1行ごとに記述
- 上から下へ順番に評価される。
- 各行は Linuxユーザー = クライアントユーザー と記述する。
- 対応は 1:1でも良いし、1:Nでも良い。
- 右辺@マークを付けてグループ名を指定できる。
- 行頭に!をつけるとその行で合致したら次の行から下は評価されない。
- 行頭に # をつけるとコメント行として無視される

★ ユーザマップファイルの記述例 ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# cat /usr/local/samba/lib/usernamemap.conf
#
# Linux User = "Client User1" "Client User2" "Client User3" ...
#
root = administrator  <-- administrator を root に対応づける
sys = @system   <-- syytemグループに所属するユーザーは全員sysユーザーに対応づける
user00 = USER00 test00 "TEST user00" "ユーザー00"   <-- 4つのクライアントをuser00に対応づける
!user01 = USER01 test01 "TEST user01" "ユーザー01"  <-- 行頭に ! があるのでここで合致した場合次の行から下は評価されない
guest = *   <-- 前段で合致しなければ全てguestに対応づける
[root@rocky9-samba31 ~]#

ユーザアカウントの管理ツールに関する知識(1)

~Linuxのユーザー情報とグループ情報~

ユーザ情報
/etc/passwd、/etc/shadow
useradd、usermod、userdel などのコマンドで管理する。
(LinuC102試験の範囲なので説明は割愛する)

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# id user00
uid=1000(user00) gid=1000(user00) groups=1000(user00)
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /etc/passwd
user00:x:1000:1000::/home/user00:/bin/bash
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /etc/shadow
user00:!!:19512:0:99999:7:::
[root@rocky9-samba31 ~]#

グループ情報
/etc/group

groupadd、groupmod、groupdel などのコマンドで管理する。
(LinuC102試験の範囲なので説明は割愛する)

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# id user00
uid=1000(user00) gid=1000(user00) groups=1000(user00)
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /etc/group
user00:x:1000:
[root@rocky9-samba31 ~]#

~Sambaのユーザー情報とグループ情報~
ユーザー/グループ情報はpassdb backendパラメータで設定されたSAMデータベースに格納されている。(既定値 tdbsam)
データベースの保存先ディレクトリはprivate dirパラメータで指定されている。(既定値 ${prefix}/private)
管理コマンドは smbpasswd と pdbedit と samba-tool がある。


ユーザアカウントの管理ツールに関する知識(2):pdbedit

-a, --create:
Sambaユーザーを追加する。
-uでユーザー名を指定する必要がある。
Sambaユーザーがすでに存在している場合はパスワードを再設定する。
一般ユーザーでパスワードを変更する場合はsmbpasswdを使用する。

user00を追加する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -a user00
new password: ********** <--- パスワードを入力
retype new password: ********** <--- パスワードを再入力
Unix username:        user00
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-2347257257-1029847378-1678431391-1001
Primary Group SID:    S-1-5-21-2347257257-1029847378-1678431391-513
Full Name:
Home Directory:       \\rocky9-samba31\user00
HomeDir Drive:
Logon Script:
Profile Path:         \\rocky9-samba31\user00\profile
Domain:               ROCKY9-SAMBA31
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    月, 05  6月 2023 00:33:59 JST
Password can change:  月, 05  6月 2023 00:33:59 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@rocky9-samba31 ~]#
user00が存在していればパスワードが変更される ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L -u user00
user00:1000:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -a user00
new password: ********** <--- パスワードを入力
retype new password: ********** <--- パスワードを再入力
Unix username:        user00
   :
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    月, 19  6月 2023 23:44:45 JST  <--- 時刻が更新されている
Password can change:  月, 19  6月 2023 23:44:45 JST
   :
[root@rocky9-samba31 ~]#
★ 一般ユーザーではpdbeditコマンドでパスワードの変更はできない ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# su - user00
[user00@rocky9-samba31 ~]$
[user00@rocky9-samba31 ~]$ pdbedit -a user00
new password: ******** <--- 新しいパスワード
retype new password: ******** <--- 新しいパスワード再入力
tdbsam_open: Failed to open/create TDB passwd [/usr/local/samba/private/passdb.tdb]
tdbsam_getsampwnam: failed to open /usr/local/samba/private/passdb.tdb!
tdbsam_open: Failed to open/create TDB passwd [/usr/local/samba/private/passdb.tdb]
tdbsam_new_rid: failed to open /usr/local/samba/private/passdb.tdb!
Failed to add entry for user user00.
[user00@rocky9-samba31 ~]$

★ 一般ユーザーでパスワードを変更するにはsmbpasswdコマンドを使う ★
[user00@rocky9-samba31 ~]$
[user00@rocky9-samba31 ~]$ smbpasswd
Old SMB password: ******** <--- 古いパスワード
New SMB password: ******** <--- 新しいパスワード
Retype new SMB password: ******** <--- 新しいパスワード再入力
Password changed for user user00
[user00@rocky9-samba31 ~]$

-r, --modify:
登録済みのSambaユーザーの情報変更する。
-uでユーザー名を指定する必要がある。

user00を無効化(Account FlagsDに変更)する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -r -u user00 -c"[D ]"
Unix username:        user00
NT username:
Account Flags:        [DU         ]  <-- [U   ] から [DU  ] に変わった
User SID:             S-1-5-21-1007088009-2786104260-4232857870-3000
Primary Group SID:    S-1-5-21-1007088009-2786104260-4232857870-513
   :
[root@rocky9-samba31 ~]#

-x, --delete:
登録済みのSambaユーザーを削除する。
-uでユーザー名を指定する必要がある。

★ user03を削除する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L
user00:1000:
user01:1001:
user02:1002:
user03:1003:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -x -u user03
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L
user00:1000:
user01:1001:
user02:1002:
[root@rocky9-samba31 ~]#

-L, --list:
登録済みのSambaユーザー一覧を表示する。
-uで特定のSambaユーザーを指定することもできる。

[root@rocky9-samba31 ~]# 
[root@rocky9-samba31 ~]# pdbedit -L
user01:1001:
user03:1003:
user00:1000:
user02:1002:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L -u user00
user00:1000:
[root@rocky9-samba31 ~]#

-w, --smbpasswd-style:
-Lと併用して登録済みのSambaユーザー一覧をsmbpasswd形式で表示する。
-uで特定のSambaユーザーを指定することもできる。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L -w
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3F9F8BF549B40C59CACD6F80620FB4D5:[U          ]:LCT-648F2953:
user01:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:B2641AEA8EB4C00EDE89CD2B7C78F6FB:[U          ]:LCT-648F2872:
user02:1002:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:8E2D88571AAA9BB30188A99834E619A2:[U          ]:LCT-648F287D:
user03:1003:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:67BBEC696A82DC182CAE409589F896ED:[U          ]:LCT-648F29AB:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L -w -u user00
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3F9F8BF549B40C59CACD6F80620FB4D5:[U          ]:LCT-648F2953:
[root@rocky9-samba31 ~]#

-v, --verbose:
-Lと併用して登録済みのSambaユーザーの詳細情報を表示する。
-uで特定のSambaユーザーを指定することもできる。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L -v -u user00
Unix username:        user00
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1007088009-2786104260-4232857870-3000
Primary Group SID:    S-1-5-21-1007088009-2786104260-4232857870-513
Full Name:
Home Directory:       \\rocky9-samba31\user00
HomeDir Drive:
Logon Script:
Profile Path:         \\rocky9-samba31\user00\profile
Domain:               ROCKY9-SAMBA31
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    月, 19  6月 2023 00:57:07 JST
Password can change:  月, 19  6月 2023 00:57:07 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@rocky9-samba31 ~]#

-e passdb-backend, --export=passdb-backend:
指定したユーザーデータベースにSambaユーザーをエクスポートする。

★ tdbsam形式のデータベースからsmbpasswd形式にエクスポートする ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -e smbpasswd:/root/samba-user.smbpasswd
startsmbfilepwent_internal: file /root/samba-user.smbpasswd did not exist. File successfully created.
Importing account for user01...ok
Importing account for user00...ok
Importing account for user02...ok
Importing account for user03...ok
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -l /root/samba-user.smbpasswd
-rw------- 1 root root 424  619 23:21 /root/samba-user.smbpasswd
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# cat /root/samba-user.smbpasswd
user01:1001:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:B2641AEA8EB4C00EDE89CD2B7C78F6FB:[U          ]:LCT-648F2872:
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3F9F8BF549B40C59CACD6F80620FB4D5:[U          ]:LCT-648F2953:
user02:1002:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:8E2D88571AAA9BB30188A99834E619A2:[U          ]:LCT-648F287D:
user03:1003:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:67BBEC696A82DC182CAE409589F896ED:[U          ]:LCT-648F29AB:
[root@rocky9-samba31 ~]#

-i passdb-backend, --import=passdb-backend:
指定したユーザーデータベースからSambaユーザーをインポートする。

★ 空のtdbsamファイルにsmbpasswd形式のバックアップからリストアする ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -i smbpasswd:/root/samba-user.smbpasswd
Importing account for user01...ok
Importing account for user00...ok
Importing account for user02...ok
Importing account for user03...ok
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -L
user01:1001:
user00:1000:
user02:1002:
user03:1003:
[root@rocky9-samba31 ~]#

-t, --password-from-stdin:
標準入力(stdin)を使ってパスワードを設定する。
スクリプトを使って設定する際に使える。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# pdbedit -Lv -u user00
Unix username:        user00
   :
Logoff time:          木, 07  22036 00:06:39 JST
Kickoff time:         木, 07  22036 00:06:39 JST
Password last set:    月, 19  62023 00:57:07 JST
Password can change:  月, 19  62023 00:57:07 JST
   : 
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# echo -e "password00\npassword00" | pdbedit -a -u user00 -t
Unix username:        user00
   :
Logoff time:          木, 07  22036 00:06:39 JST
Kickoff time:         木, 07  22036 00:06:39 JST
Password last set:    火, 20  62023 23:02:46 JST  <--- 時刻が更新されている
Password can change:  火, 20  62023 23:02:46 JST
   :
[root@rocky9-samba31 ~]#

ユーザアカウントの管理ツールに関する知識(3):samba-tool

samba-toolコマンドはActiveDirectory環境のSambaを管理するためのツールで、Samba4で使える。
Samba3にこのコマンドがないのはActiveDirectoryドメインに対応していないからではないか??

~samba-tool user コマンド~

  • samba-tool user add(create) USERNAME [password]
    ActiveDirectoryにアカウントを追加する。
    ※createは互換性を保つための別名

  • samba-tool user delete USERNAME [options]
    アカウントを削除する。

  • samba-tool user PASSWORD [options]
    パスワードを変更する。

  • samba-tool user edit USERNAME
    アカウントの設定を変更する。

  • samba-tool user disable USERNAME
    アカウントを無効化する。

  • samba-tool user enable USERNAME
    アカウントを有効化する。

  • samba-tool user list
    ユーザー一覧を表示する。

~samba-tool group コマンド~

  • samba-tool group add(create) GROUPNAME [password]
    ActiveDirectoryにグループを追加する。
    ※createは互換性を保つための別名

  • group addmembers GROUPNAME MEMBERS [options]
    グループにユーザーを追加する。

  • samba-tool group delete GROUPNAME [options]
    グループを削除する。

  • samba-tool group edit GROUPNAME
    グループの設定を変更する。

  • samba-tool group list
    グループ一覧を表示する。

  • samba-tool group listmembers GROUPNAME [options]
    グループのメンバー一覧を表示する。

(補足)
ActiveDirectory環境でないSambaで samba-tool user add を実行すると、sam.ldbファイルがないというエラーになってしまう。
sam.ldbはActiveDirectoryドメインを構成する際に生成されるデータベースのようです。

[root@rocky9-samba41 ~]#
[root@rocky9-samba41 ~]# samba-tool user add user02
New Password:
Retype Password:
ltdb: tdb(/var/lib/samba/private/sam.ldb): tdb_open_ex: could not open file /var/lib/samba/private/sam.ldb: No such file or directory

Unable to open tdb '/var/lib/samba/private/sam.ldb': No such file or directory
Failed to connect to 'tdb:///var/lib/samba/private/sam.ldb' with backend 'tdb': Unable to open tdb '/var/lib/samba/private/sam.ldb': No such file or directory
ERROR(ldb): Failed to add user 'user02':  - Unable to open tdb '/var/lib/samba/private/sam.ldb': No such file or directory
[root@rocky9-samba41 ~]#

smbpasswdプログラムの使用

smbpasswdコマンドでSambaユーザーの追加、変更、削除ができる。
passdb backend の種類に関わらず操作できる。

(別記事 Appendix smbpasswdコマンド 参照)

~(準備)ユーザーデータベースをsmbpasswdに変更する~
※smbpasswdコマンドでtdbsamに格納されているユーザー情報を編集することができるが、ここではあえてsmbpasswdファイルに変更しています。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# testparm -s
  :
[global]
      :
        passdb backend = smbpasswd   <--- tdbsamから変更する
      :
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbcontrol smbd reload-config   <--- smbdの設定を再読み込み
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ls -la /usr/local/samba/private
合計 5
drwxr-xr-x  2 root root     5  618 23:13 .
drwxr-xr-x 10 root root    10  613 23:26 ..
-rw-------  1 root root 36864  618 23:01 passdb.tdb
-rw-------  1 root root 24576  613 23:38 secrets.tdb
-rw-------  1 root root     0  618 23:19 smbpasswd   <--- ファイルが作成される 
[root@rocky9-samba31 ~]#

警告!! SMB/CIFS の認証プロトコルはチャレンジ/レスポンス方式で あるため、パスワードハッシュさえ知っていれば、 誰でもネットワーク上でそのユーザーになりすますことができる。 このため、これらのハッシュは 暗号化されていないテキスト と同等のものであり、root 以外には 絶対に 漏らしてはならない。これらのパスワードを保護するため、 smbpasswd ファイルは、root だけが読みとりや実行アクセス可能な ディレクトリに置き、ファイル自身は root だけに読み書き アクセス権を与えるべきである。

Samba4- smbpasswd(5) 日本語訳

-a:Sambaユーザーを追加する。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbpasswd -a user00
New SMB password: ********
Retype new SMB password: ********
Added user user00.
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3F9F8BF549B40C59CACD6F80620FB4D5:[U          ]:LCT-648F1E7E:
[root@rocky9-samba31 ~]#

オプションなし:パスワードを変更する
WindowsNTハッシュ(4番目のフィールド)と、更新時刻(6番目のフィールド)が変化している。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3F9F8BF549B40C59CACD6F80620FB4D5:[U          ]:LCT-648F1E7E:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbpasswd user00
New SMB password: ********
Retype new SMB password: ********
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:90387A0F00360DFDF0E66F0071B595DA:[U          ]:LCT-648F1EE4:
[root@rocky9-samba31 ~]#

-d:ユーザーを無効化する
Account Flags(5番目のフィールド)が "[DU         ]" になる。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbpasswd -d user00
Disabled user user00.
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:90387A0F00360DFDF0E66F0071B595DA:[DU         ]:LCT-648F1EE4:
[root@rocky9-samba31 ~]#

-e:ユーザーを有効化する~
Account Flags(5番目のフィールド)が "[U          ]" になる。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbpasswd -e user00
Enabled user user00.
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:90387A0F00360DFDF0E66F0071B595DA:[U          ]:LCT-648F1EE4:
[root@rocky9-samba31 ~]#

-x:ユーザーを削除する~
smbpasswdファイルから削除される

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# smbpasswd -x user00
Deleted user user00.
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
[root@rocky9-samba31 ~]#

-s:標準入力(stdin)からパスワードを設定する。
WindowsNTハッシュ(4番目のフィールド)と、更新時刻(6番目のフィールド)が変化している。

[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:3F9F8BF549B40C59CACD6F80620FB4D5:[U          ]:LCT-6491B70B:
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# echo -e "password99\npassword99" | smbpasswd -s user00
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# grep user00 /usr/local/samba/private/smbpasswd
user00:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:0B57FBA6F9831221F82536B21AF71F49:[U          ]:LCT-6491B71F:
[root@rocky9-samba31 ~]#

(補足) smbpasswdファイルのフォーマット

  • user00:
    ユーザー名

  • 1000:
    uid、Linuxサーバーにあるユーザーのuidと一致する必要あり

  • XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
    ユーザーのパスワードから生成されたLANMANハッシュであり、32桁の 16進数でエンコードされている。

  • 3F9F8BF549B40C59CACD6F80620FB4D5:
    ユーザーのパスワードから生成されたWindowsNTハッシュであり、32桁の16進数でエンコードされて いる。

  • [U           ]:
    Account Flags
    - U:一般のユーザー
    - N:パスワードを持っていないユーザー
    - D:無効化されたユーザー
    - X:パスワードが 満了していないユーザー
    - W:Workstation Trustアカウント(ドメインコントローラー機能で使用)

  • LCT-648F1E7E:
    アカウントが更新されたUNIX時間(LCT:Last Change Time)の16進表記。
    648F16FA = 1687101054 = 2023/06/19 00:10:54

(補足)アクセス制限設定時の注意
一般ユーザーがsmbpasswdコマンドを使う場合は、Sambaサーバー上であってもsmbpasswdとsmbdはクライアント/サーバーという関係で通信するためsmbdが起動していて通信が可能な状態である必要がある。
また、Sambaサーバーの設定でhosts allow(allow hosts)やhosts deny(deny hosts)でネットワークレベルのアクセス制限をする場合はローカルホスト(127.0.0.1 または localhost)との通信を許可しておくことを忘てはいけない。

★ smbを停止する ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ss -antl
State    Recv-Q   Send-Q     Local Address:Port     Peer Address:Port  Process
LISTEN   0        50               0.0.0.0:139           0.0.0.0:*
LISTEN   0        50               0.0.0.0:445           0.0.0.0:*
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# systemctl stop smb
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# ss -antl
State    Recv-Q   Send-Q     Local Address:Port     Peer Address:Port  Process
[root@rocky9-samba31 ~]#

★ smbdが停止していると一般ユーザーからsmbpasswdコマンドによるパスワード変更ができない ★
[root@rocky9-samba31 ~]#
[root@rocky9-samba31 ~]# su - user00  <--- 一般ユーザーに切り替える
[user00@rocky9-samba31 ~]$
[user00@rocky9-samba31 ~]$ smbpasswd
Old SMB password: ********
New SMB password: ********
Retype new SMB password: ********
Unable to connect to SMB server on machine 127.0.0.1. Error was : NT_STATUS_CONNECTION_REFUSED.
[user00@rocky9-samba31 ~]$



ファイルおよびディレクトリオブジェクトの所有者の強制的な設定

  • force group(group) =
    共有フォルダにアクセスするユーザーの所属グループを指定されたグループ名にする。

  • force user =
    共有フォルダにアクセスするユーザー名を指定されたユーザー名にする。


参考文献

この記事が気に入ったらサポートをしてみませんか?