web-dev-qa-db-ja.com

tdbバックエンドを使用してsambaのユーザーのエントリを変更できませんでした

私はsambaを備えたDebianサーバーを持っています。ユーザーアカウントを管理できなくなりました。それらを追加、変更、または削除することはできません。

これは、samba3.6.6を使用したDebianwheezyです。 LDAPはなく、データベースバックエンドはtdbです。私は通常smbpasswdでユーザーを管理していましたが、機能しなくなりました。

新しいユーザーを作成しようとすると:

smbpasswd -a blabla
New SMB password: ****
Retype new SMB password: ****
Failed to add entry for user blabla.

Pdbeditまたはsmbpasswdを使用してユーザーを削除しようとしても機能せず、同じエラーが返されます。

# pdbedit -L olduser
olduser:1314:OldName

# smbpasswd -x olduser
Failed to delete entry for user olduser.

Tdbtoolを使ってみました

# tdbtool /var/lib/samba/passdb.tdb check
Database integrity is OK and has 570 records.

キーの長さをチェックし、tdbtoolキーのすべての出力をチェックして、1つのエントリに必要なキーとは異なるキーがあるかどうかを確認する小さなPerlスクリプトを作成しましたが、間違いはありません。

key 9 bytes: USER_old

私は立ち往生しています、どんなヒントもいただければ幸いです、ありがとう。

2
Francesc Guasch

ついに私はsambaメーリングリストで答えを得ました:

https://lists.samba.org/archive/samba/2015-March/189740.html

これは、sambaがPDCモードで実行され、ユーザーが/ etc/passwdにない場合に発生します。

削除しようとしたユーザーがpasswdにないので、追加してから、smbpasswd -xで再度削除し、passwdからも削除しました。

問題が解決しました。

2
Francesc Guasch

また、tdbsamをバックエンドとして使用してsambaからユーザーを削除することもできませんでした。 'Sudo pdbedit -L'を使用すると、データベース内のすべてのユーザーが表示されました。私はlubuntu18.04を使用しているので、passdb.tdbファイルの場所を探す必要があるかもしれません。

次の手順は、ユーザーを手動で削除する方法と、ユーザーを再入力する方法を示しています。これは、ユーザーのパスワードを変更できなかったために行う必要がありました。次の例では、問題のあるユーザーは「xxxx」です。

ターミナルウィンドウを開き、su Sudo -s cd tdbdump /var/lib/samba/private/passdb.tdb>xx.txtとして一連のコマンド/ツールを実行する準備をします。

リーフパッド、gedit、またはお気に入りのエディターを使用してxx.txtを開き、「xxxx」のすべてのエントリを探します(状況に応じてユーザーを置き換えます)。探しているのは、ユーザーが参照されているすべてのレコードのKey()エントリです。 Sambaの停止:service nmbd stop service smbd stop then:tdbtool#「tdb>」プロンプトが表示されます

ユーザーを削除する準備としてtdbtoolで使用するコマンド:repackを確認してください

上記の「tdbdump」の結果から、「xxxx」の次のエントリが見つかりましたが、通常は隣り合っていません:{key(13)= "RID_00000540\00" data(5)= "xxxx\00 "} .. .. {key(10)=" USER_xxxx\00 "}

ユーザーを削除するには、「tdbtool」で、次のように「delete {key}」コマンドを使用します。deleteUSER_xxxxdeleteRID_00000584\00

完了したら、sambaサービスを再起動します。smbdstartservice nmbd start

これで、ユーザーはsambaから削除されます。また、「userdel」を使用してLinuxからユーザーを削除する必要がある場合もあります。

0
Jakester