| SMBCACLS(1) | User Commands | SMBCACLS(1) |
نام (NAME)
smbcacls - تنظیم یا دریافت ACLها روی نام فایلها یا دایرکتوریهای NT
خلاصه دستور (SYNOPSIS)
smbcacls {//server/share} {/filename} [-D|--delete=ACL] [-M|--modify=ACL] [-a|--add=ACL] [-S|--set=ACLS] [-C|--chown=USERNAME] [-G|--chgrp=GROUPNAME] [-I|--inherit=STRING] [--recurse] [--propagate-inheritance] [--save=savefile] [--restore=restorefile] [--numeric] [--sddl] [--query-security-info=INT] [--set-security-info=INT] [-t|--test-args] [--domain-sid=SID] [-x|--maximum-access] [-?|--help] [--usage] [-d|--debuglevel=DEBUGLEVEL] [--debug-stdout] [--configfile=CONFIGFILE] [--option=name=value] [-l|--log-basename=LOGFILEBASE] [--leak-report] [--leak-report-full] [-R|--name-resolve=NAME-RESOLVE-ORDER] [-O|--socket-options=SOCKETOPTIONS] [-m|--max-protocol=MAXPROTOCOL] [-n|--netbiosname=NETBIOSNAME] [--netbios-scope=SCOPE] [-W|--workgroup=WORKGROUP] [--realm=REALM] [-U|--user=[DOMAIN/]USERNAME[%PASSWORD]] [-N|--no-pass] [--password=STRING] [--pw-nt-hash] [-A|--authentication-file=FILE] [-P|--machine-pass] [--simple-bind-dn=DN] [--use-kerberos=desired|required|off] [--use-krb5-ccache=CCACHE] [--use-winbind-ccache] [--client-protection=sign|encrypt|off] [-V|--version]
توضیحات (DESCRIPTION)
این ابزار بخشی از مجموعهٔ samba(7) است.
برنامهٔ smbcacls فهرستهای کنترل دسترسی (ACL) ویندوز NT را روی اشتراکهای فایل SMB دستکاری میکند. یک ACL شامل صفر یا چند مدخل کنترل دسترسی (ACE) است که محدودیتهای دسترسی را برای یک کاربر یا گروه خاص مشخص میکنند.
گزینهها (OPTIONS)
گزینههای زیر برای برنامهٔ smbcacls در دسترس هستند. ساختار ACLها در بخش ACL FORMAT شرح داده شده است.
-a|--add acl
-M|--modify acl
-D|--delete acl
-S|--set acl
-C|--chown name
این دستور یک میانبر برای -M OWNER:name است.
-G|--chgrp name
این دستور یک میانبر برای -M GROUP:name است.
-I|--inherit allow|remove|copy
--propagate-inheritance
--save savefile
--restore savefile
--recurse
--numeric
-m|--max-protocol PROTOCOL_NAME
-t|--test-args
--query-security-info FLAGS
--set-security-info FLAGS
--sddl
--domain-sid SID
-x|--maximum-access
-?|--help
--usage
-d|--debuglevel=level
هرچه این مقدار بالاتر باشد، جزئیات بیشتری دربارهٔ فعالیتهای سرور در فایلهای لاگ ثبت خواهد شد. در سطح 0، فقط خطاهای حیاتی و هشدارهای جدی ثبت میشوند. سطح 1 سطحی معقول برای استفادهٔ روزمره است - مقدار کمی اطلاعات دربارهٔ عملیات انجامشده تولید میکند.
سطوح بالاتر از 1 مقادیر قابل توجهی دادههای لاگ تولید میکنند و فقط باید هنگام بررسی یک مشکل استفاده شوند. سطوح بالاتر از 3 تنها برای توسعهدهندگان طراحی شدهاند و حجم عظیمی از دادههای لاگ تولید میکنند که اغلب بسیار مبهم هستند.
توجه داشته باشید که تعیین این پارامتر در اینجا، مقدار پارامتر log level را در فایل /etc/samba/smb.conf لغو کرده و بازنویسی میکند.
--debug-stdout
--option=<name>=<value>
-l|--log-basename=logdirectory
--leak-report
--leak-report-full
-V|--version
-R|--name-resolve=NAME-RESOLVE-ORDER
گزینهها عبارتند از: "lmhosts"، "host"، "wins" و "bcast". آنها موجب تفکیک نامها به شرح زیر میشوند:
ترتیب پیشفرض عبارت است از lmhosts, host, wins, bcast. بدون این پارامتر یا هرگونه مدخل در پارامتر name resolve order در فایل /etc/samba/smb.conf، روشهای تفکیک نام با همین ترتیب امتحان خواهند شد.
-O|--socket-options=SOCKETOPTIONS
-m|--max-protocol=MAXPROTOCOL
توجه داشته باشید که تعیین این پارامتر در اینجا، پارامتر client max protocol را در فایل /etc/samba/smb.conf لغو و جایگزین خواهد کرد.
-n|--netbiosname=NETBIOSNAME
--netbios-scope=SCOPE
-W|--workgroup=WORKGROUP
توجه داشته باشید که تعیین این پارامتر در اینجا، پارامتر workgroup را در فایل /etc/samba/smb.conf لغو و جایگزین خواهد کرد.
-r|--realm=REALM
توجه داشته باشید که تعیین این پارامتر در اینجا، پارامتر realm را در فایل /etc/samba/smb.conf لغو و جایگزین خواهد کرد.
-U|--user=[DOMAIN\]USERNAME[%PASSWORD]
اگر %PASSWORD مشخص نشود، از کاربر درخواست خواهد شد. کلاینت ابتدا متغیر محیطی USER (که مجاز است گذرواژه را نیز به شکل جداشده با یک % در بر داشته باشد) و سپس متغیر LOGNAME (که مجاز به داشتن گذرواژه نیست) را بررسی خواهد کرد و در صورت وجود هر یک، مقدار آن استفاده میشود. اگر این متغیرهای محیطی یافت نشوند، ممکن است نام کاربری موجود در حافظه پنهان اعتبارنامههای Kerberos استفاده شود.
گزینه سوم استفاده از فایل اعتبارنامهها است که حاوی متن خام (plaintext) نام کاربری و گذرواژه باشد. این گزینه عمدتاً برای اسکریپتهایی فراهم شده که در آنها مدیر مایل نیست اعتبارنامهها را در خط فرمان یا از طریق متغیرهای محیطی منتقل کند. در صورت استفاده از این روش، اطمینان حاصل کنید که مجوزهای روی فایل، دسترسی کاربران ناخواسته را محدود میکند. برای جزئیات بیشتر گزینه -A را ببینید. در مورد قرار دادن گذرواژهها در اسکریپتها یا ارسال مقادیر ارائهشده توسط کاربر به خط فرمان احتیاط کنید. از نظر امنیتی بهتر است اجازه دهید ابزار کلاینت Samba در صورت نیاز گذرواژه را بپرسد، یا گذرواژه را یکبار با kinit دریافت کنید.
اگرچه Samba تلاش خواهد کرد گذرواژه را از عنوان فرایند (همانطور که در ps دیده میشود) پاک کند، اما این عمل پس از راهاندازی رخ میدهد و بنابراین مستعد شرایط رقابتی (race condition) است.
-N|--no-pass
مگر اینکه گذرواژهای در خط فرمان مشخص شده باشد یا این پارامتر تعیین شده باشد، کلاینت درخواست گذرواژه خواهد کرد.
اگر گذرواژهای در خط فرمان مشخص شده باشد و این گزینه نیز تعیین شده باشد، گذرواژه موجود در خط فرمان بدون هشدار نادیده گرفته میشود و هیچ گذرواژهای استفاده نخواهد شد.
--password
در مورد قرار دادن گذرواژهها در اسکریپتها یا ارسال مقادیر ارائهشده توسط کاربر به خط فرمان احتیاط کنید. از نظر امنیتی بهتر است اجازه دهید ابزار کلاینت Samba در صورت نیاز گذرواژه را بپرسد، یا گذرواژه را یکبار با kinit دریافت کنید.
اگر --password مشخص نشود، این ابزار متغیر محیطی PASSWD را بررسی میکند و پس از آن به سراغ PASSWD_FD میرود که انتظار میرود شامل شماره یک توصیفگر فایل (FD) باز باشد.
در نهایت، متغیر PASSWD_FILE (شامل مسیر فایلی که باید باز شود) را بررسی خواهد کرد. این فایل تنها باید حاوی گذرواژه باشد. اطمینان حاصل کنید که دسترسیهای فایل، دسترسی کاربران غیرمجاز را محدود کرده باشد!
اگرچه Samba تلاش خواهد کرد گذرواژه را از عنوان فرایند (همانطور که در ps دیده میشود) پاک کند، اما این عمل پس از راهاندازی رخ میدهد و بنابراین مستعد شرایط رقابتی (race condition) است.
--pw-nt-hash
-A|--authentication-file=filename
username = <value> password = <value> domain = <value>
اطمینان حاصل کنید که دسترسیهای فایل، دسترسی کاربران غیرمجاز را محدود کرده باشد!
-P|--machine-pass
--simple-bind-dn=DN
--use-kerberos=desired|required|off
توجه داشته باشید که مشخص کردن این پارامتر در اینجا، پارامتر client use kerberos در فایل /etc/samba/smb.conf را بازنویسی و جایگزین خواهد کرد.
--use-krb5-ccache=CCACHE
این گزینه مقدار --use-kerberos=required را اجباری خواهد کرد.
--use-winbind-ccache
--client-protection=sign|encrypt|off
توجه داشته باشید که مشخص کردن این پارامتر در اینجا، پارامتر client protection در فایل /etc/samba/smb.conf را بازنویسی و جایگزین خواهد کرد.
در صورتی که به کنترل دقیقتری نیاز دارید میتوانید از موارد زیر استفاده کنید: --option=clientsmbencrypt=OPTION، --option=clientipcsigning=OPTION، --option=clientsigning=OPTION.
قالب یک ACL شامل یک یا چند مدخل است که با کاما یا خط جدید از هم جدا شدهاند. هر مدخل ACL یکی از موارد زیر است:
REVISION:<revision number> OWNER:<sid or name> GROUP:<sid or name> ACL:<sid or name>:<type>/<flags>/<mask>
بیتهای کنترلی مربوط به توارث خودکار
نگارش (revision) مربوط به ACL، نگارش درونی ACL در Windows NT را برای توصیفگر امنیت مشخص میکند. اگر مشخص نشود، مقدار پیشفرض آن ۱ است. استفاده از مقادیری غیر از ۱ ممکن است رفتارهای غیرعادی ایجاد کند.
مالک (owner) و گروه (group)، شناسههای SID مالک و گروه را برای شیء مشخص میکنند. اگر یک SID در قالب S-1-x-y-z مشخص شود، از همان استفاده میشود؛ در غیر این صورت، نام مشخصشده با استفاده از کارسازی که فایل یا دایرکتوری در آن قرار دارد حل میشود.
عناصر ACE با پیشوند «ACL:» مشخص میشوند و مجوزهای اعطاشده به یک SID را تعریف میکنند. مقدار SID باز هم میتواند در قالب S-1-x-y-z یا بهصورت یک نام مشخص شود که در این حالت، توسط کارسازی که فایل یا دایرکتوری روی آن قرار دارد حل میشود. مقادیر type، flags و mask نوع دسترسی اعطاشده به SID را تعیین میکنند.
مقدار type میتواند ALLOWED یا DENIED باشد تا دسترسی به SID را مجاز یا منع کند.
فیلد flags مشخص میکند که هنگام انجام توارث، با ACE چگونه رفتار شود. smbcacls هنگامی که با --propagate-inheritance اجرا شود، از این پرچمها استفاده میکند.
پرچمها را میتوان بهصورت مقادیر دهدهی یا شانزدهشانزدهی، یا با نامهای مستعار مربوطه (XX) که با خط عمودی «|» از هم جدا شدهاند، تعیین کرد.
ماسک مقداری است که حق دسترسی اعطاشده به SID را بیان میکند. این مقدار میتواند بهصورت دهدهی یا شانزدهشانزدهی، یا با استفاده از یکی از رشتههای متنی زیر که با مجوزهای فایل NT با همین نام مطابقت دارند، ارائه شود.
مجوزهای ترکیبی زیر میتوانند مشخص شوند:
وراثت (INHERITANCE)
پرچمهای وراثت مختص هر ACE را میتوان در فیلد پرچمهای ACE تعیین کرد. بهطور پیشفرض، ACEهای قابلتوارث، مانند آنهایی که برای وراثت شیء (OI) یا وراثت ظرف (CI) نشانهگذاری شدهاند، به زیرفایلها یا پوشهها انتشار نمییابند. با این حال، با مشخص کردن آرگومان --propagate-inheritance اینگونه ACEها بهطور خودکار بر اساس برخی قواعد وراثت منتشر میشوند.
(OI)(READ) به پوشهٔ والد افزوده شد
+-parent/ (OI)(READ) | +-file.1 (I)(READ) | +-nested/ (OI)(IO)(I)(READ) | +-file.2 (I)(READ)
(CI)(READ) به پوشهٔ والد افزوده شد
+-parent/ (CI)(READ) | +-file.1 | +-nested/ (CI)(I)(READ) | +-file.2
(OI)(CI)(READ) به پوشهٔ والد افزوده شد
+-parent/ (OI)(CI)(READ) | +-file.1 (I)(READ) | +-nested/ (OI)(CI)(I)(READ) | +-file.2 (I)(READ)
(OI)(NP)(READ) به پوشهٔ والد افزوده شد
+-oi_dir/ (OI)(NP)(READ) | +-file.1 (I)(READ) | +-nested/ | +-file.2
(CI)(NP)(READ) به پوشهٔ والد افزوده شد
+-oi_dir/ (CI)(NP)(READ) | +-file.1 | +-nested/ (I)(READ) | +-file.2
+-parent/ (CI)(OI)(NP)(READ) | +-file.1 (I)(READ) | +-nested/ (I)(READ) | +-file.2
فایلها و پوشههای دارای ACLهای محافظتشده، اجازهٔ مجوزهای قابلتوارث (تنظیمشده با -I) را نمیدهند. چنین اشیائی ACEهایی را که با (CI) یا (OI) برای توارث نشانهگذاری شدهاند، دریافت نخواهند کرد.
وضعیت خروج (EXIT STATUS)
برنامهٔ smbcacls وضعیت خروج را بسته به موفقیت یا عدم موفقیت عملیات انجامشده تنظیم میکند. وضعیت خروج میتواند یکی از مقادیر زیر باشد.
اگر عملیات با موفقیت انجام شود، smbcacls وضعیت خروج 0 را برمیگرداند. اگر smbcacls نتواند به سرور مشخصشده متصل شود، یا در دریافت یا تنظیم ACLها خطایی رخ دهد، وضعیت خروج 1 بازگردانده میشود. اگر در تجزیهٔ هر یک از آرگومانهای خط فرمان خطایی رخ دهد، وضعیت خروج 2 بازگردانده میشود.
نسخه (VERSION)
این صفحهٔ راهنما بخشی از نسخهٔ 4.24.6 مجموعهٔ Samba است.
نویسندگان (AUTHORS)
نرمافزار اصلی Samba و ابزارهای مرتبط با آن توسط Andrew Tridgell ساخته شدند. Samba اکنون توسط Samba Team به عنوان یک پروژهٔ متنباز، به شیوهای مشابه توسعهٔ هستهٔ Linux توسعه مییابد.
smbcacls توسط Andrew Tridgell و Tim Potter نوشته شده است.
تبدیل به DocBook برای Samba 2.2 توسط Gerald Carter انجام شد. تبدیل به DocBook XML 4.2 برای Samba 3.0 توسط Alexander Bokovoy انجام گرفت.
| 08/16/2026 | Samba 4.24.6 |