مقدمه
Samba یکی از محبوبترین نرمافزارها برای اشتراکگذاری فایلها در شبکههای مختلط است، یعنی شبکههایی که شامل سیستمهای ویندوز و لینوکس هستند. Samba از پروتکل SMB (Server Message Block) برای دسترسی به منابع و فایلهای به اشتراک گذاشتهشده استفاده میکند. این نرمافزار به سیستمهای ویندوزی اجازه میدهد که به پوشهها و فایلهای موجود در سیستمهای لینوکسی و یونیکس دسترسی پیدا کنند و بالعکس.
در این مقاله کانفیگ سرور، نصب و پیکربندی Samba برای سیستمهای لینوکس و ویندوز بهطور جداگانه و دقیق بررسی میشود. علاوه بر این، تنظیمات پیشرفته مانند امنیت، بهینهسازی عملکرد و کنترل دسترسی نیز پوشش داده میشود.
پیشنیازها و محیط نصب
- سیستمعامل لینوکس: این مقاله برای سیستمهای AlmaLinux و Ubuntu نوشته شده است.
- دسترسی به حساب کاربری root: باید بتوانید پکیجها را نصب کرده و فایلهای پیکربندی را ویرایش کنید.
- شبکه: مطمئن شوید که سرور لینوکس و دستگاههای مشتری به یک شبکه متصل هستند.
مرحله اول: نصب Samba بر روی لینوکس
ابتدا باید Samba را بر روی سرور لینوکسی خود نصب کنید. برای نصب Samba از دستورهای زیر استفاده میکنیم:
برای AlmaLinux (یا CentOS/RHEL):
sudo dnf install samba samba-client samba-common -y
برای Ubuntu:
sudo apt update
sudo apt install samba -y
این دستورها تمامی پکیجهای مورد نیاز برای Samba را نصب میکنند.
مرحله دوم: پیکربندی فایل smb.conf
فایل پیکربندی اصلی Samba، که به نام smb.conf شناخته میشود، در مسیر /etc/samba/smb.conf قرار دارد. پس از نصب Samba، باید این فایل را برای تنظیمات دلخواه خود و پیکربندی پوشههای به اشتراک گذاشتهشده و سایر گزینهها و امنیتها ویرایش کنید.
ویرایش فایل smb.conf
برای ویرایش فایل پیکربندی، از ویرایشگر متن مورد نظر خود استفاده کنید. در اینجا از nano استفاده میکنیم:
sudo nano /etc/samba/smb.conf
این فایل شامل تنظیمات مختلفی است که نحوه کار Samba را تعیین میکند. در ابتدا، بخش [global] را پیکربندی میکنیم که تنظیمات کلی Samba را کنترل میکند.
تنظیمات پایه در بخش global
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = linux-server security = user map to guest = bad user dns proxy = no
توضیحات تنظیمات
🔹 workgroup → نام گروه کاری شبکه که Samba به آن تعلق دارد. در شبکههای ویندوزی باید با WORKGROUP همخوانی داشته باشد.
🔹 server string → توضیحاتی در مورد سرور Samba که هنگام نمایش در شبکه دیده میشود. %v نسخه Samba را نشان میدهد.
🔹 netbios name → نامی که سرور Samba در شبکه نمایش داده میشود (در اینجا linux-server).
🔹 security → سطح امنیتی Samba را مشخص میکند. مقدار user یعنی هر کاربر باید نام کاربری و رمز عبور معتبر داشته باشد.
🔹 map to guest → اگر کاربر نام کاربری اشتباهی وارد کند، بهصورت مهمان (Guest) دسترسی خواهد داشت.
🔹 dns proxy → وقتی مقدار no باشد، Samba درخواستهای DNS را مدیریت نمیکند.
مرحله سوم: ایجاد پوشههای به اشتراک گذاشتهشده
حالا باید پوشههایی را که میخواهید به اشتراک بگذارید، مشخص کنید. برای مثال، فرض کنید میخواهید پوشهای به نام /srv/samba/shared را به اشتراک بگذارید.
افزودن پوشه به اشتراک گذاشتهشده
در انتهای فایل smb.conf، این تنظیمات را اضافه کنید:
[shared] path = /srv/samba/shared browsable = yes writable = yes guest ok = yes create mask = 0777 directory mask = 0777
توضیحات تنظیمات
🔹 path → مسیر پوشهای که قرار است به اشتراک گذاشته شود. در اینجا /srv/samba/shared مشخص شده است.
🔹 browsable → اگر مقدار yes باشد، این پوشه در شبکه قابل مشاهده خواهد بود.
🔹 writable → مقدار yes به کاربران اجازه میدهد که در این پوشه فایل ایجاد یا ویرایش کنند.
🔹 guest ok → مقدار yes یعنی کاربران بدون نام کاربری و رمز عبور میتوانند به این پوشه دسترسی داشته باشند.
🔹 create mask → سطح دسترسی پیشفرض برای فایلهای جدید را مشخص میکند (0777 یعنی تمام کاربران میتوانند فایلها را بخوانند، بنویسند و اجرا کنند).
🔹 directory mask → سطح دسترسی پیشفرض برای پوشههای جدید را مشخص میکند (0777 یعنی همه کاربران میتوانند پوشهها را ببینند، ایجاد کنند و تغییر دهند).
این تنظیمات به Samba میگویند که پوشه /srv/samba/shared را به اشتراک بگذارد، قابل مشاهده و قابل نوشتن باشد و اجازه دسترسی مهمان نیز فعال باشد.
ایجاد پوشه و تنظیم دسترسیها
حالا باید پوشه به اشتراک گذاشتهشده را ایجاد کرده و دسترسیهای مناسب را برای آن تنظیم کنید:
sudo mkdir -p /srv/samba/shared
sudo chmod -R 0777 /srv/samba/shared
این دستورات پوشه /srv/samba/shared را ایجاد کرده و اجازه دسترسی خواندن و نوشتن را به تمام کاربران میدهد.
مرحله چهارم: افزودن کاربران به Samba
برای اینکه کاربران بتوانند از Samba استفاده کنند، باید آنها را به Samba اضافه کنید.
افزودن کاربر به Samba
دستور زیر کاربر user1 را به Samba اضافه میکند:
sudo smbpasswd -a user1
این دستور از شما میخواهد که رمز عبور جدیدی برای این کاربر وارد کنید. پس از وارد کردن رمز عبور، کاربر به Samba اضافه میشود.
فعال کردن کاربر در Samba
برای فعال کردن کاربر در Samba، دستور زیر را اجرا کنید:
sudo smbpasswd -e user1
این دستور کاربر را فعال میکند تا به اشتراکهای فایل در Samba دسترسی داشته باشد.
مرحله پنجم: راهاندازی مجدد سرویس Samba
پس از پیکربندی و افزودن کاربران، باید سرویس Samba را راهاندازی مجدد کنید تا تغییرات اعمال شوند:
sudo systemctl restart smb nmb
این دستور سرویسهای Samba را راهاندازی مجدد کرده و پیکربندیهای جدید را بارگذاری میکند.
مرحله ششم: دسترسی به اشتراکهای Samba
حالا که Samba نصب و پیکربندی شد، میتوانید از سیستمهای ویندوز و لینوکس به اشتراکهای خود دسترسی پیدا کنید.
دستگاههای ویندوزی
برای دسترسی به اشتراک Samba از ویندوز، آدرس زیر را در آدرس بار فایل اکسپلورر وارد کنید:
\\your-server-ip\shared
دستگاههای لینوکسی
برای دسترسی به اشتراک Samba از لینوکس، از دستور smbclient استفاده کنید:
smbclient //your-server-ip/shared -U user1
این دستور از شما رمز عبور user1 را میخواهد و سپس به اشتراکهای فایل دسترسی خواهید داشت.
مرحله هفتم: تنظیمات پیشرفته Samba
در این بخش، به برخی از تنظیمات پیشرفته و امنیتی برای بهینهسازی Samba پرداخته میشود.
محدود کردن دسترسی به IP خاص
برای امنیت بیشتر، میتوانید دسترسی به منابع Samba را به یک رنج خاص از IPها محدود کنید. در فایل smb.conf، میتوانید از گزینه hosts allow برای محدود کردن دسترسی استفاده کنید:
hosts allow = 192.168.1.0/24
این تنظیمات فقط به سیستمهایی با IP در رنج 192.168.1.0/24 اجازه دسترسی میدهد.
فعال کردن رمزنگاری در Samba
برای رمزنگاری دادهها در Samba، گزینه smb encrypt را فعال کنید:
smb encrypt = required
این تنظیم باعث میشود که تمامی ارتباطات بین مشتری و سرور Samba به صورت رمزنگاریشده انجام شود.
تنظیمات فایروال
برای اینکه دستگاههای دیگر بتوانند به اشتراکهای Samba دسترسی داشته باشند، باید پورتهای مربوطه را در فایروال باز کنید. در فایروال firewalld از دستور زیر استفاده کنید:
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
نکات امنیتی برای پیکربندی Samba خواهیم پرداخت، بهویژه در مورد:
- پیکربندی اشتراکهای خاص با سطوح دسترسی مختلف
- استفاده از LDAP برای مدیریت کاربران
- تنظیمات دقیق برای دسترسی از طریق ویندوز و لینوکس
- پیکربندی قویتر امنیت و رمزنگاری
- بهینهسازی عملکرد Samba
پیکربندی اشتراکهای خاص با سطوح دسترسی مختلف
برای اینکه بتوانید اشتراکهای مختلف با سطوح دسترسی متفاوت به کاربران مختلف بدهید، باید تنظیمات valid users, write list, و read only را در فایل smb.conf اضافه کنید. به عنوان مثال، ممکن است بخواهید فقط برخی از کاربران بتوانند فایلها را در یک پوشه خاص ویرایش کنند، در حالی که بقیه فقط دسترسی خواندن داشته باشند.
تنظیمات اشتراک خاص
فرض کنید میخواهید پوشهای به نام confidential را به اشتراک بگذارید، ولی فقط به برخی از کاربران اجازه ویرایش بدهید:
[confidential]
path = /srv/samba/confidential
valid users = user1, user2
write list = user1
read only = yes
guest ok = no
create mask = 0700
directory mask = 0700
valid users: فقط کاربرانuser1وuser2میتوانند به اشتراک دسترسی پیدا کنند.write list: فقطuser1میتواند فایلها را ویرایش کند.read only: دسترسی خواندن برای کاربران مجاز فعال است.guest ok: دسترسی مهمان غیرفعال است.create maskوdirectory mask: بهطور پیشفرض فقطuser1میتواند فایلها و پوشهها را در این دایرکتوری ایجاد کند.
دسترسی به اشتراک از طرف کاربران مختلف
- کاربران
user1وuser2میتوانند به اشتراک دسترسی پیدا کنند. - کاربر
user1امکان ویرایش فایلها را دارد. - سایر کاربران به این اشتراک دسترسی نخواهند داشت.
استفاده از LDAP برای مدیریت کاربران
در شبکههای بزرگ، مدیریت کاربران بهصورت دستی میتواند دشوار باشد. به همین دلیل، بسیاری از سازمانها از LDAP (Lightweight Directory Access Protocol) برای مدیریت متمرکز کاربران استفاده میکنند. Samba میتواند به LDAP متصل شود تا کاربران و گروههای کاربران را از یک منبع واحد مدیریت کند.
نصب و پیکربندی LDAP
برای استفاده از LDAP با Samba، ابتدا باید سرور LDAP (مانند OpenLDAP یا Microsoft Active Directory) نصب و پیکربندی شده باشد. پس از آن، باید Samba را برای استفاده از LDAP پیکربندی کنید.
برای پیکربندی Samba با LDAP، در فایل smb.conf این تنظیمات را اضافه کنید:
[global]
passdb backend = ldapsam:ldap://your-ldap-server
ldap suffix = dc=example,dc=com
ldap admin dn = cn=admin,dc=example,dc=com
ldap user suffix = ou=users
ldap group suffix = ou=groups
passdb backend: به Samba میگوید که از LDAP برای ذخیرهسازی اطلاعات کاربران استفاده کند.ldap suffix: مسیر اصلی LDAP.ldap admin dn: نام کاربری با دسترسی ادمین در LDAP.ldap user suffixوldap group suffix: موقعیت کاربرها و گروهها در LDAP.
این تنظیمات باعث میشود که Samba بهطور مستقیم از LDAP برای شناسایی کاربران و گروهها استفاده کند.
تنظیمات دقیق برای دسترسی از طریق ویندوز و لینوکس
دسترسی به اشتراک از ویندوز
برای اتصال به یک اشتراک Samba از ویندوز، مسیر اشتراک را به این صورت وارد کنید:
\\your-server-ip\shared
در صورتی که از نام کاربری و رمز عبور برای دسترسی به اشتراکها استفاده میکنید، پس از وارد کردن آدرس، ویندوز از شما درخواست نام کاربری و رمز عبور میکند. نام کاربری و رمز عبور باید با آنچه که در Samba تعریف کردهاید مطابقت داشته باشد.
دسترسی به اشتراک از لینوکس با استفاده از Mount
در لینوکس، میتوانید از دستور mount برای اتصال به اشتراکهای Samba استفاده کنید. ابتدا باید پکیج cifs-utils را نصب کنید تا بتوانید به اشتراکهای SMB/CIFS متصل شوید.
sudo apt install cifs-utils -y
سپس از دستور زیر برای اتصال به اشتراک استفاده کنید:
sudo mount -t cifs //your-server-ip/shared /mnt/samba -o user=user1,pass=yourpassword
این دستور اشتراک shared را از سرور Samba به دایرکتوری /mnt/samba وصل میکند.
پیکربندی قویتر امنیت و رمزنگاری
برای افزایش امنیت و رمزنگاری در Samba، میتوانید از پروتکلهای مختلفی استفاده کنید. در اینجا چند گزینه امنیتی برای فعال کردن رمزنگاری و افزایش امنیت شبکه آورده شده است.
فعال کردن رمزنگاری SMB3
برای فعال کردن رمزنگاری SMB3 در Samba، تنظیمات زیر را در فایل smb.conf قرار دهید:
[global]
smb encrypt = required
server min protocol = SMB3
client min protocol = SMB3
smb encrypt: این گزینه اطمینان حاصل میکند که تمامی ارتباطات از طریق Samba رمزنگاری شوند.server min protocolوclient min protocol: از نسخههای قدیمیتر SMB مانند SMB1 که مشکلات امنیتی دارند جلوگیری میکند و فقط از SMB3 به بالا استفاده میکند.
استفاده از SSL برای رمزنگاری کانال ارتباطی
برای امنیت بیشتر، میتوانید از SSL برای رمزنگاری کانالهای ارتباطی بین سرور Samba و مشتریان استفاده کنید. برای این کار، ابتدا باید گواهینامه SSL ایجاد کرده و آن را در پیکربندی Samba تعریف کنید.
بهینهسازی عملکرد Samba
برای اینکه عملکرد Samba در شبکههای بزرگ و شلوغ بهبود یابد، میتوان برخی از تنظیمات را برای بهینهسازی شبکه و حافظه پیکربندی کرد.
فعال کردن کش برای بهبود عملکرد
[global]
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
read raw = yes
write raw = yes
max xmit = 65535
deadtime = 15
socket options: این گزینهها به Samba اجازه میدهند که از شبکه بهینهتر استفاده کند.read rawوwrite raw: فعال کردن این گزینهها باعث افزایش سرعت خواندن و نوشتن میشود.max xmit: تعیین حداکثر اندازه بستههای داده که ارسال میشوند.deadtime: زمان حداکثری که Samba قبل از بستن اتصال منتظر میماند.
فعال کردن Threaded I/O برای بهبود عملکرد
[global]
aio read size = 16384
aio write size = 16384
این تنظیمات باعث میشود که Samba بتواند خواندن و نوشتن را بهصورت همزمان (Asynchronous I/O) انجام دهد و عملکرد شبکه را بهبود بخشد.
نتیجهگیری
در این مقاله، نصب و پیکربندی Samba بهصورت جامع و حرفهای از مراحل پایه تا پیشرفته توضیح داده شد. از نصب اولیه تا پیکربندی امنیتی و بهینهسازیهای عملکردی، شما قادر خواهید بود Samba را در محیطهای شبکهای مختلف بهطور کامل راهاندازی کنید. از آنجا که Samba ابزاری بسیار قدرتمند و انعطافپذیر است، میتوانید آن را برای انواع نیازهای مختلف در شبکههای خانگی و سازمانی بهکار گیرید.
اگر نیاز به تنظیمات یا ویژگیهای خاص دیگری دارید، لطفاً بگویید تا راهنمایی دقیقتری انجام دهم.




