الإجابة على السؤال الإجابة المختصرة هي: لا يمكنك فعل ذلك باستخدام الأمر القياسي "useradd" . يُنشئ useradd حسابًا محليًا على جهاز Linux فقط؛ ولا يُنشئ حسابًا في نطاق Windows. لإنشاء مستخدم في النطاق، يجب استخدام أداة خاصة بـ Windows (مثل dsadd ، net user ، أو PowerShell) أو عميل LDAP/AD عبر المنصات المختلفة يتواصل مع وحدة تحكم النطاق. فيما يلي دليل عملي خطوة بخطوة يوضح كيفية القيام بذلك من جهاز Linux باستخدام أداة Windows DSAdd المرفقة مع Windows Server (أو جهاز عميل Windows) والوصول إليها عبر SMB/CIFS. نفس الفكرة تعمل مع PowerShell أو أدوات AD الأخرى – والشيء الرئيسي هو أن الأمر يجب أن يعمل على مضيف Windows الذي تم تثبيت أدوات AD عليه. 1. لماذا لا يعمل الأمر useradd الأمر ماذا يفعل أين يعمل useradd <name> ينشئ حسابًا محليًا على نظام Linux Linux / Unix dsadd user <distinguishedName> … ينشئ حسابًا في Active Directory Windows (يتطلب أدوات AD) net user <name> … /add ينشئ حسابًا في Windows Windows New-ADUser … ينشئ حسابًا في Active Directory PowerShell على Windows لا يملك useradd أي معرفة بوحدة تحكم النطاق، أو مخطط LDAP، أو مملكة Kerberos، لذا لا يمكنه إنشاء حساب نطاق. 2. المتطلبات المسبقة العنصر لماذا هو مطلوب كيف تحصل عليه جهاز Windows (سيرفر أو محطة عمل) يكون عضوًا في النطاق ويحتوي على Active Directory Administrative Center أو Remote Server Administration Tools (RSAT) المثبتة. أدوات AD ( dsadd ، net ، PowerShell) موجودة فقط على Windows. قم بتثبيت RSAT على عميل Windows 10/11 أو استخدم Windows Server. عميل SMB/CIFS على Linux (مثل smbclient ، cifs-utils ). للتواصل مع تنفيذ Windows عبر الشبكة. sudo apt install smbclient cifs-utils (Debian/Ubuntu). بيانات اعتماد النطاق (اسم المستخدم/كلمة المرور) التي تملك صلاحية إنشاء المستخدمين. المصادقة مع وحدة تحكم النطاق. استخدم حسابًا يكون عضوًا في مجموعة Domain Admins أو يملك حقوقًا مفوضًا. معرفة وحدة التنظيم المستهدفة (OU) حيث سيتم إنشاء المستخدم. يحدد الاسم التمييزي (DN). dsquery ou -limit 0 أو ابحث عنه في ADUC. 3. الطريقة 1 – استخدام dsadd عبر SMB 3.1 إعداد المضيف Windows تفعيل SMB/CIFS على جهاز Windows (عادةً ما يكون مفعلًا افتراضيًا). إنشاء مجلد مشترك (مثل C:\\DSAddShare ) ومنح حساب النطاق صلاحية قراءة . نسخ ملف dsadd.exe إلى هذا المجلد (موجود في C:\\Windows\\System32 ). Copy-Item 'C:\\Windows\\System32\\dsadd.exe' -Destination '\\\\WIN10-PC\\DSAddShare\\dsadd.exe' 3.2 استدعاء dsadd من Linux # المتغيرات WIN_HOST="WIN10-PC" SHARE="DSAddShare" USER="newuser" PASS="P@ssw0rd!" OU="OU=Users,DC=example,DC=com" # بناء الاسم التمييزي DN="CN=${USER},${OU}" # بناء سلسلة الأمر CMD="dsadd user \"${DN}\" -samid ${USER} -pwd ${PASS} -memberof \"CN=Domain Users,${OU}\"" # التنفيذ عبر smbclient smbclient //${WIN_HOST}/${SHARE} -U "example\\\\Administrator%AdminPass" -c "call ${CMD}" التفسير يتصل smbclient بمشاركة Windows كعضو في إدارة النطاق. يُنفذ الأمر call تنفيذ ملف dsadd على المضيف Windows مع الحجج المقدمة. ينشئ dsadd المستخدم في وحدة التنظيم المحددة مع اسم حساب SAM وكلمة المرور المحددين. 3.3 التحقق # على Windows dsquery user -samid newuser يجب أن ترى المستخدم الذي تم إنشاؤه حديثًا. 4. الطريقة 2 – استخدام PowerShell Remoting (WinRM) إذا تفضل PowerShell، يمكنك استخدام WinRM لتنفيذ سكريبت عن بُعد. 4.1 تفعيل WinRM على المضيف Windows Enable-PSRemoting -Force Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*' 4.2 من Linux، استخدم winrm (مكتبة Python) أو ansible لتنفيذ السكريبت # تثبيت حزمة Python winrm pip install pywinrm # سكريبت Python (create_user.py) import winrm session = winrm.Session('http://WIN10-PC:5985/wsman', auth=('Administrator', 'AdminPass')) script = """ $User = 'newuser' $Password = ConvertTo-SecureString 'P@ssw0rd!' -AsPlainText -Force $Params = @{ Name = $User SamAccountName = $User AccountPassword = $Password Enabled = $true Path = 'OU=Users,DC=example,DC=com' } New-ADUser @Params """ r = session.run_ps(script) print(r.std_out.decode()) قم بتشغيل السكريبت: python create_user.py سيتم إنشاء المستخدم في AD. 5. الطريقة 3 – استخدام LDAP مباشرة من Linux إذا تفضل عدم إشراك مضيف Windows، يمكنك استخدام عميل LDAP مثل ldapadd أو ldapmodify . تحتاج إلى منفذ LDAP لوحدة تحكم النطاق (389 أو 636) ومستخدم يملك الصلاحيات الصحيحة. # إنشاء ملف LDIF (newuser.ldif) dn: CN=newuser,OU=Users,DC=example,DC=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: newuser sn: User givenName: New displayName: New User userPrincipalName: newuser@example.com sAMAccountName: newuser userPassword:: <base64‑encoded password> ldapadd -x -D "CN=Administrator,CN=Users,DC=example,DC=com" -W -f newuser.ldif ملاحظة: يستخدم LDAP على Windows تنسيقًا خاصًا لكلمة المرور؛ يجب ترميز كلمة المرور كـ UTF‑16LE ثم ترميزها كـ base64. نهج ldapadd أكثر تعقيدًا وعرضة للأخطاء، لذا تُفضل عادةً الطرق القائمة على Windows. 6. الملخص الهدف النهج الموصى به السبب إنشاء مستخدم نطاق من Linux استخدم مضيف Windows مع أدوات AD (dsadd، PowerShell) واستدعها من Linux عبر SMB أو WinRM لا يمكن لـ useradd التواصل مع AD؛ أدوات Windows هي الطريقة الرسمية المدعومة. تجنب مضيف Windows استخدم LDAP ( ldapadd ، ldapmodify ) يعمل لكنه يتطلب معالجة دقيقة لكلمة المرور ومعرفة المخطط.