Samba под Debian GNU/Linux

Това, което повечето хора са свикнали да наричат „уиндоуската мрежа“, е всъщност промишленият стандарт SMB/CIFS за компютърна мрежа – един от многото стандарти за мрежи. Начини за общуване чрез него има разработени както за Windows, така и за повечето видове Unix – включително Apple MacOS, BSD Unix и, разбира се, GNU/Linux.

Софтуерът, който реализира тази мрежа под Unix, се нарича Samba – стегнато, стабилно и надеждно парче свободен софтуер. Чудесно е използваемо и на работна машинка. Истинската му мощ обаче блести на сървърите – и по-точно на фирмените (или домашни) файлови сървъри.

В този запис ще покажа простичък начин да си настроите удобно Samba сървър под Debian GNU/Linux. Не търсете сложнотии и тънкости, той е елементарно начало, което начинаещият сисадмин може да копи/пейстне и пригоди за целите си. Ако ви бива достатъчно, за да инсталирате Debian, ще се справите и с това. (Необходимите за инсталиране на Debian умения включват основно писане по клавиатура и четене от екран. Владеете ли тези двете, останалото са подробности.)

И така, имате инсталиран Debian GNU/Linux. (Вероятно на стария компютър, който сте се готвели да изхвърлите – ще е достатъчно добър за целта.) Искате да го пригодите за файлов сървър в… хайде да е малката ви фирма, че да дам все пак и малко цвят. 🙂 Закачили сте му два големи диска, форматирали сте ги, погрижили сте се да са в RAID или пък съдържанието им да се синхронизира периодично по софтуерен път. Закачили сте ги на директорията /var, да кажем, и сте направили в нея поддиректория /var/samba, за файловете. Имате на компютъра връзка към Нета, да можете да инсталирате софтуер от дебианските хранилища. Сега какво правим?

Ако не сте се сетили още при инсталирането да маркирате опцията “File Server”, инсталирате Samba. Влизате на командния ред (внимавайте някой бит или байт да не ви изяде!), ставате root и набирате следната команда:

aptitude install samba

Програмката работи мъничко, пита как ще се казва работната група (примерно WORKGROUP) и имате софтуера. Сега обаче трябва да го настроите.

Да предположим, че във фирмата си имате счетоводен, търговски и транспортен отдели, чиито данни искате да съхранявате на сървъра. Условията са следните:

– До вашите данни трябва да имате достъп само вие
– До данните на счетоводния отдел трябва да имат достъп работещите в счетоводния отдел.
– До данните на търговския отдел трябва да имат достъп всички, но извън търговския отдел този достъп да е само за четене.
– Трябва да има публичен дял, където не само всички служители, но и гостите на фирмата (с преносими компютри или смартфони, свързани към фирмената безжичка) да могат да четат и пишат свободно (за обмяна на данни с тях).

Въпросните разпределения на данни (на жаргона на Samba биват наричани дялове, или shares) се описват в нейния конфигурационен файл – /etc/samba/smb.conf. Стандартният съдържа нелоши и доста подробни примерни начални описания – запазете си го, например като го преименувате на /etc/samba/smb.conf.original. След това направете нов, в който ще опишете своите настройки.

Файлът smb.conf е разделен на секции. Някои от настройките му важат за всички дялове – те се описват в секцията [global]. Всеки дял има своя отделна секция, където се описват неговите настройки.

По-долу давам едно простичко начало. Копи-пейстнете го и променяйте където е необходимо. Ако не знаете за какво служи нещо, а правите реална работна машина, не е добра идея да го променяте.

[global]
workgroup = MY_COMPANY
server string = The company fileserver
security = share
encrypt passwords = yes
max log size = 50
logon script = %U.bat
domain logons = Yes
preferred master = Yes
domain master = Yes
local master = Yes
os level = 35
dns proxy = No
wins support = Yes
netbios name = FILESERVER
guest account = nobody
unix password sync = no
log level = 2

Глобалната секция. Подробно описание на всяка от ключовите думи можете да намерите в документацията на файла smb.conf. (Пробвайте от командния ред man smb.conf. И внимавайте – напада още по-стръвно от битовете и байтовете!)

А сега е ред на дяловете. Първо, естествено, шефският. Тоест, вашите данни:

[Boss]
comment = Top Management
path = /var/samba/Boss
writeable = Yes
browseable = Yes
valid users = boss
directory mask = 0700
force directory mode = 0700
directory mode = 0700
create mode = 0700

Данните ви ще се съхраняват във /var/samba/Boss (не забравяйте да направите поддиректория Boss във /var/samba и да й зададете подходящи условия на достъп). Дялът ще е видим за всички (можете да промените това, като смените browseable = Yes с browseable = No), но само вие ще можете да влезете в него.

Следва дялът за счетоводството:

[Accounting]
comment = Accounting Docs
path = /var/samba/Accounting
writeable = Yes
browseable = Yes
valid users = +SS_Accounting
directory mask = 0770
force directory mode = 0770
directory mode = 0770
create mode = 0770
force group = SS_Accounting

Както виждате, валидни потребители на този дял са всички членове на групата SS_Accounting (съкратено от Samba Share Accounting, за удобство). Пермишъните на файловете в нея позволяват пълно разпореждане за членовете на групата (за разлика от шефския дял, където позволяват само на потребителя). Най-сетне, файловете в тази група задължително се създават с група SS_Accounting, за да е сигурно, че всички членове на групата ще могат да се разпореждат с тях.

Следва дялът за транспортния отдел:

[Logistics]
comment = Logistics Docs
path = /var/samba/Logistics
writeable = Yes
browseable = Yes
valid users = +SS_Logistics
directory mask = 0775
force directory mode = 0775
directory mode = 0775
create mode = 0775
force group = SS_Logistics
guest ok = Yes

Този дял се различана по само две неща от предишния. Едното е, че пермишъните на файловете в него позволяват четене (но не и писане!) и от не-спадащи към групата потребители. А второто е, че е позволен guest потребителят (последният ред).

Guest потребителят е специален потребител на Samba – този, който не се е логнал с име и парола. По-горе в глобалната секция е описано облика на кой потребител на системата ще приеме той – този на nobody, максимално ограниченият потребител със специалната група nogroup. Иначе казано, всеки може да влезе в този дял (като потребителя guest / nobody), но пермишъните на файловете ще му позволят само да чете, не и да пише.

Най-сетне, време е и за публичния дял:

[Public]
comment = Public space
path = /var/samba/Public
writeable = Yes
browseable = Yes
directory mask = 0777
force directory mode = 0777
directory mode = 0777
create mode = 0777
guest ok = Yes

Простичко и директно – всеки може да влиза, пише, брише и каквото друго му скимне.

… Добре. Имаме вече подходящ smb.conf. Записваме го, правим нужните поддиректории във /var/samba, рестартираме Samba и… още не сме в бизнеса. Трябва да създадем групите, в които ще участват потребителите на Samba:

addgroup --force-badname SS_Accounting
addgroup --force-badname SS_Logistics

Параметърът --force-badname е нужен, тъй като обикновено системата не използва групи с подчертавка в името. Тази схема за кръщаване обаче удобно ги отделя от другите системни групи, така че предпочитам да я запазя на цената на горния дребен компромис. 🙂

След това трябва да се погрижим да създадем акаунтите на потребителите.

adduser --ingroup users --disabled-login boss
smbpasswd -a boss

Първата команда ще ви добави като системен юзер, шефе. Не се бойте, че не можете да се логнете пряко в Линукса, няма да ви се налага, за това са сисадмините. 🙂 Въвеждате каквото сметнете за нужно за себе си, и потребителят е създаден. (Без него Samba ще откаже да създаде съответен свой потребител.)

Втората команда ще ви добави като потребител на Samba и ще ви попита за паролата ви (двукратно, защото при набиране нищо не излиза, дори звездички). След нея вече спокойно можете да се логнете с този юзернейм и парола в дяла си.

След това трябва да добавим един по един служителите на фирмата. Например:

adduser --ingroup users --disabled-login ivan
adduser ivan SS_Accounting
smbpasswd -a ivan

Разликата е, че потребителят изрично се добавя в съответната за отдела му група – SS_Accounting. (Би било много лесно направо да бъде създаден в нея, като на първия ред вместо users се напише SS_Accounting. При по-големи сървъри с много дялове и фино разпределение на правата обаче е по-удобно съответните групи да се сложат допълнително, а основната да е обща и да се пази за неща като системен домашен дял.)

Е, сега вече сте в бизнеса. Раздавате на потребителите съответните им имена и пароли и ги пращате да работят. 🙂

(Дребен трик под Windows. Ако не искате персоналът да си забравя постоянно юзерите и паролите, или дори да ги знае, му ги сложете в Network Credentials. Пускате Control Panel, оттам User Accounts, избирате съответния юзер и поглеждате най-горе вляво – ще видите управлението на мрежовите идентификации. Цъквате на него, отваря се прозорче. Добавяте нова мрежова идентификация, въвеждате за сървър Fileserver, вписвате юзера и паролата на човека и имате логин.)

Оттук нататък, системата може да се усложнява още много. Могат да се правят по много и най-различни дялове, с фино управление на правата на всеки потребител къде да може да се логва и какво да може там. Може да се настрои Samba-та да работи и като принтсървър. Можете да сложите „домашен“ дял, който се казва еднакво за всички потребители, но съдържа различен път за всеки от тях. Можете… Абе, много неща можете. Ако не знаете какво и как, питайте Гугъл, на мен надали ще ми стигнат силите и животът да опиша всичко възможно.

Важното е да тръгнете от нещо. 🙂

16 Responses to 'Samba под Debian GNU/Linux'

  1. юлий Says:

    Това ясно, скоро ми се случи в мрежата всичко да е ок, а от вън греда. Малка мрежа с рутерче dhcp Полудях, какви ли не портове отварях и препащах – не ще. Трябва да се чете, копи-пейст от блогове до време.

  2. Дончо Says:

    Добра работа!
    Една любопитна подробност: в Майкрософт дълго време се е смятало за *огромна* грешка стандартизирането на SMB протокола (и съответно правейки възможно създаването на SMB за Линукс) 🙂
    Можеш да предположиш, мисля, ако го нямаше това модулче (иначе доста подценявано от хард-линукс-феновете), колко щеше да е по-бавно проникването на Линукс в корпоративните среди.

  3. Григор Says:

    @юлий: Драсни е-майл, ако искаш, ако мога да измисля нещо, ще ти пиша обратно.

    @Дончо: Звучи ми странно. Доколкото зная, първите версии на Samba са писани на базата на прехванат и дебъгнат трафик по SMB – и не бяха лоши, поне за сравнително малки мрежи. По-късните са на базата на документацията, която Майкрософт бяха осъдени в ЕС да предоставят срещу скромно заплащане. И в двата случая не-стандартизирането на протокола нямаше да помогне особено за опазването му.

    Иначе, проникването на Линукс в корпорациите като файлов сървър щеше да е почти невъзможно, но по всички други линии – уебсървър, DNS, база данни, принт сървър и т.н. – надали щеше да бъде засегнато тежко.

    Най-сетне, сигурно не съм най-хард-линукс-фен, но с много гордост смея да кажа, че изобщо не подценявам въпросното модулче! 🙂

    А колкото до Майкрософт – мисля, че те по традиция смятат за огромна грешка стандартизирането на каквато и да било своя форма на интероперабилност, като се почне от файлови формати, мине се през мрежови протоколи и се свърши с “истинските” API-та за големите си продукти. (Имам познат, програмист за Уиндоус и страстен любител на дебъга – той твърди, че MS Office 2003 и 2007 ползват огромен куп абсолютно недокументирани свързвания към Windows, и че пъргавината и стабилността им се дължи до голяма степен на ползването на въпросните свързвания. Не зная дали е истина, не съм го проверил лично.)

  4. Славо Says:

    Фактът, че трябва да напишеш блог пост, за да ни обясниш как се прави е показателен за пазарния дял на Линукс. Съгласен съм, че това все пак не е нещо с което повечето крайни потребители ще се сблъскат, но за много съвсем нормални сценарии се налагат подобни обяснения, търсене в Гугъл и команден ред. Колкото и да е признак на мързел или ниска интелигентност, повечето хора ги е страх от команден ред.

    След поредната ми преинсталация на Ubuntu прекарах около 1-2 часа да си подкарам драйвери за видео и звук. И това уж най-лесната за използване дистрибуция. Ами ако не бях любопитен и с технологични познания?

  5. JJ Says:

    Много ми е мъчен този Линукс. Винаги има нещо за ровичкане, донастройка, пипане – съпорта е уикита, форуми и прочее – няма кой да питаш, а тези които знаят са претоварени и не им се занимава с глупави въпроси. Последно софтуера който се наложи да пуснем (Zone Minder) беше от типа : абе по принцип работи но …… накрая приятели дописваха и докърпваха докато се получи долу-горе работещо нещо. Та вероятно никак не е лошо нещо Линукса, но може би трябва да си полупрограмист и полусистемен администратор да го подкараш и настроиш като хората.

    Подобни постове са полезни – със SMB би се получило едно чудесно служебно NAS-че. Много често ми се случва по клиентски машини вируси да забият Уин Сървисите, които отговарят за споделянето на файлове и принтери и сториджа да умре. Линукса едва ли би паднал при подобна атака.

  6. Славо Says:

    http://www.webstylr.com/2012/09/24/dear-canonical-please-let-me-pay-for-ubuntu/

  7. Григор Says:

    @Славо: Ако съдим по това колко се пише примерно за Windows, какво трябва да си помислим за неговия пазарен дял? 🙂

    Убунту не ползвам – слагам директно Дебиан. Проблеми с драйвери за видео и звук съм имал в около 10% от случаите, като правило на unstable, и в на практика 0% от случаите на stable. (Единственото изключение, което си спомням, беше видеодрайвер за твърде нов хардуер за stable.)

    А записът от линка съм го чел, и мисля, че човекът е сбъркал нещо фундаментално. А именно, че ако плаща на Каноникал (или на който и да е един определен) за Линукс, Линукса на този определен ще стане много бързо нещо като Уиндоус, ама по-боклучаво и некадърно. (Имам чувството, че подобно нещо започва с Убунту, ако и да е още много в началото.)

    @JJ: Абе то и моята приятелка има доста проблеми, докато пусне стабилно Adobe InDesign не знам коя си най-нова версия, ама не обвиняваше за това Windows или Microsoft. Плюеше си Адобе.

  8. юлий Says:

    @Григор – samba-та е лесна работа, с четене и малко човъркане ще изолирам проблема, а от там е една крачка да го реша (трябва да погледа и дали доставчика не е блокирал някои портове);

    Я по-добре кажете какво ви е мнението за браузер плъгините, които блокират известния им тракинг код в страниците (от рода на donottrackplus, ghostery). Вършат ли работата, за която претендират? Вие ползвате ли такъв софтуер?

  9. Григор Says:

    @юлий: Доста доставчици блокират по някой порт на SMB, и това обикновено е за добро на потребителите им. Ако не си наистина отличен админ, който знае перфектно точно какво прави, не те съветвам да си отваряш мрежата към Нета.

    Браузер плъгините – според мен положението е част от битката между щита и меча. Ползвам някои, с някои неща се справят, с някои не. С времето хващат пропуските си, а тракърите измислят нови трикове.

  10. Божо Says:

    @JJ – а в уиндос да не би да няма нищо за ровичкане, донастройка, пипане?
    Само дето документацията там хич я няма…

  11. Григор Says:

    @Божо: Бе не е да я няма. Да си призная, в поне 90% от случаите съм намерил било на сайта на Майкрософт, било из форуми необходимата ми полезна информация. Не мога да оплюя Уиндоус в това отношение.

  12. Кирил Says:

    Това е една от любимите ми теми в блога ти.
    А да те питам според теб скоро арм процесорите ще могат ли да се използват като пълноценнен домашен сървър?
    Видях, че има вече и четириядрени процесори:
    http://www.techspot.com/news/49373-odroid-x-is-a-quad-core-alternative-to-the-raspberry-pi-for-129.html

  13. Григор Says:

    @Кирил: Че те от немалко време вече могат.

    http://en.wikipedia.org/wiki/Plug_computer
    http://en.wikipedia.org/wiki/FreedomBox

    🙂

  14. юлий Says:

    @Кирил – аз имам една sheevaPlug 1.2 GHz. Тормозя я доста (главно на Debian) и не се оплаквам, но я ползвам персонално. Има тежки уеб приложения, за които е слабичка и като ѝ гледам пиковете на процесорчето ми дожалява. Не е за тази работа.
    Съветвам те ако ще купуваш и не можеш да предвидиш точно нуждите си в момента компютърчето да е с повече от едно ядро – цените паднаха. Ако пък мислиш SheevaPlug-подобно (някои GlobalScale продукт примерно) първо да провериш в еBay, по информация от един познат има почти нови за по 30$, ако пък искаш ново не поръчвай от щатите, вече има магазин в EU.
    Съдейки по моите нужди това, което си дал като линк е много добро. Аз му се точа от юни, но за сега това което имам ми е достатъчно.

  15. Кирил Says:

    @юлий мерси за съветите. За ebay нямаше да се сетя да проверя.
    @Григор, какво става с FreedomBox?

  16. Григор Says:

    @Кирил: Редовно пишат на сайта си докъде са стигнали. 🙂

Leave a Reply