| IDMAP_SCRIPT(8) | System Administration tools | IDMAP_SCRIPT(8) |
نام (NAME)
idmap_script - بکاند idmap_script مربوط به Samba برای Winbind
توضیحات (DESCRIPTION)
پلاگین idmap_script جایگزینی برای بکاند idmap_tdb2 است که توسط winbindd جهت ذخیره جدولهای نگاشت SID/uid/gid در محیطهای خوشهای به همراه Samba و CTDB به کار میرود. این بکاند فقطخواندنی است و از یک اسکریپت برای انجام نگاشت استفاده میکند.
این بکاند بر پایه بکاند idmap_tdb2 توسعه یافته است و نگاشتهای SID/uid/gid را در یک TDB ذخیره نمیکند، زیرا winbind_cache tdb پس از ارائه نگاشتها، آنها را در خود ذخیره خواهد کرد.
گزینههای نگاشت شناسه (IDMAP OPTIONS)
range = low - high
script
اسکریپت نگاشت شناسه (IDMAP SCRIPT)
بکاند نگاشت شناسه script از یک برنامه خارجی برای انجام نگاشتهای شناسه از طریق گزینه /etc/samba/smb.conf با عنوان idmap config * : script یا شکل قدیمی و منسوخشده آن idmap : script پشتیبانی میکند.
این اسکریپت باید گزینههای خط فرمان زیر را بپذیرد.
SIDTOID S-1-xxxx IDTOSID UID xxxx IDTOSID GID xxxx IDTOSID XID xxxx
و باید یکی از پاسخهای زیر را به عنوان یک خط متن منفرد برگرداند.
UID:yyyy GID:yyyy XID:yyyy SID:ssss ERR:yyyy
شناسه XID نشان میدهد که شناسه بازگرداندهشده باید هم یک UID و هم یک GID باشد. به این معنی که یک ID_TYPE_BOTH را درخواست میکند، اما در نهایت بر عهده اسکریپت است که آیا میتواند به این درخواست پاسخ دهد یا خیر. اسکریپت میتواند فقط یک نگاشت UID یا GID را برگرداند.
مثالها (EXAMPLES)
این مثال نحوه استفاده از script را به عنوان بکاند پیشفرض idmap با کمک یک برنامه خارجی از طریق پارامتر script نشان میدهد:
[global] idmap config * : backend = script idmap config * : range = 1000000-2000000 idmap config * : script = /usr/local/samba/bin/idmap_script.sh
این نمونه یک اسکریپت ساده را برای انجام بخشی از این وظیفه نشان میدهد:
#!/bin/sh # # Uncomment this if you want some logging #echo $@ >> /tmp/idmap.sh.log if [ "$1" == "SIDTOID" ] then # Note. The number returned has to be within the range defined #echo "Sending UID:1000005" >> /tmp/idmap.sh.log echo "UID:1000005" exit 0 else #echo "Sending ERR: No idea what to do" >> /tmp/idmap.sh.log echo "ERR: No idea what to do" exit 1 fi
بدیهی است که این اسکریپت کافی نیست، زیرا احتمالاً باید از wbinfo برای تعیین اینکه آیا یک SID ورودی متعلق به یک کاربر یا گروه است استفاده کند و سپس نگاشت را در یک جدول جستجو کرده یا از سازوکار دیگری برای نگاشت SIDها به UIDها و غیره بهره ببرد.
لطفاً توجه داشته باشید که این اسکریپت با متغیر محیطی _NO_WINBINDD با مقدار 1 فراخوانی میشود. این کار از فراخوانیهای بازگشتی به winbind از درون اسکریپت، هم از طریق فراخوانیهای صریح به wbinfo و هم از طریق فراخوانیهای ضمنی توسط nss_winbind جلوگیری میکند. برای نمونه، فراخوانی ls -l میتواند چنین بازگشت بیپایانی را ایجاد کند.
فراخوانی wbinfo -n و wbinfo -s از داخل یک اسکریپت idmap ایمن است. برای انجام این کار، اسکریپت باید متغیر محیطی _NO_WINBINDD را دقیقاً پیش از فراخوانی wbinfo لغو (unset) کرده و بلافاصله پس از بازگشت wbinfo مجدداً آن را روی 1 تنظیم کند تا در برابر بازگشت بیپایان محافظت شود.
نویسنده (AUTHOR)
نرمافزار اصلی Samba و ابزارهای مرتبط توسط Andrew Tridgell ساخته شدهاند. Samba اکنون توسط Samba Team به عنوان پروژهای متنباز و مشابه شیوه توسعه هسته لینوکس توسعه داده میشود.
| 08/16/2026 | Samba 4.24.6 |