Здавалася б, што можа быць прасцей, чым дадаць карыстальніка на сэрвэры? Надрукаваў у кансолі каманду adduser
, адказаў на пару пытанняў пра паролі і іншай інфармацыі, і вось, можна заходзіць з атрыманым лагінам і паролем, размяшчаць файлы і г.д.
Затым, ўручную, даводзіцца ствараць тэчкі. Напрыклад, адну для сайта. Іншую - для часовых файлаў, каб не кідаць іх у агульны / tmp ў мэтах абароны. Яшчэ адну - для сесій, калі не наладжана кэшаванне ў Redis . А яшчэ ж трэба скапіяваць патрэбныя файлы налад, тыпу публічнага ssh ключа для аўтэнтыфікацыі .
Усё гэта становіцца не занадта зручным працэсам, калі карыстальнікаў ствараць даводзіцца часта, калі не пастаянна. На шчасце, многае мы можам наладзіць, уключаючы першасныя параметры пры стварэнні (размяшчэнне хатняй тэчкі, групу), так і другасныя - неабходныя папкі, файлы налад.
Першасныя налады, якія вызначаюцца пры выкарыстанні каманды adduser
, бяруцца з файла /etc/adduser.conf.
Змяняны хатнюю тэчку
Першапачаткова хатнія папкі ўсіх карыстальнікаў размяшчаюцца ў раздзеле / home. Але мы можам загадзя перавызначыць месцазнаходжанне, выкарыстоўваючы любую іншую тэчку, напрыклад / var / www. Для гэтага адрэдагуем параметр DHOME
.
DHOME = / var / www
Варта звярнуць увагу на параметр SKEL=/etc/skel
. Ён вызначае, адкуль будуць скапіяваныя файлы налад і тэчкі для кожнага канкрэтнага карыстальніка. Напэўна вы бачылі ў папках карыстальнікаў свайго сервера файлы .profile, .bashrc. Яны як раз скапіяваныя з гэтай крыніцы. :)
Дадаваць карыстальнікаў у адзіную групу
З параметрамі па-змаўчанню для кожнага карыстальніка ствараецца асобная аднайменная група. Але для вэб-сервера можна дадаваць розных карыстальнікаў у адну групу, каб лепш кіраваць палітыкай бяспекі.
Калі ствараецца юзэр для размяшчэння сайтаў, права на рэдагаванне / выдаленне файлаў павінна належаць толькі яму. Вэб-сервер, няхай гэта будзе nginx або apache, павінны запускацца ад імя іншага карыстальніка, якому даступна толькі чытанне файлаў. Астатнія ж карыстальнікі ніякіх правоў мець не павінны.
Дадаючы ўсіх юзэраў у адну групу, мы, затым, можам выставіць правы для гэтай групы толькі на чытанне. І запусціць вэб-сервер ад імя гэтай групы. Ўсяк лепш, чым дадаваць карыстальніка вэб-сервера ў групы карыстальнікаў, дзе размяшчаюцца сайты.
Усім гуртам стане гурт карыстальніка www-data. Ён спецыяльна створаны для запуску вэб-сервераў, мае максімальна абмежаваныя правы і не можа карыстацца шелл-ым.
У файле adduser.conf нам трэба спачатку адключыць стварэнне аднайменнай групы пры стварэнні карыстальніка.
USERGROUPS = no
А, затым, пазначыць ID групы www-data.
USERS_GID = 33
Як правіла, ідэнтыфікатар роўны 33. Але варта пераправерыць камандай, якая запускаецца ад root: id www-data
.
І апошні параметр, змяняны у гэтым канфігурацыйным файле:
DIR_MODE = 0710
Ён вызначае правы на хатнюю тэчку карыстальніка / var / www / username. Тут мы дазваляем ўсе дзеянні ўладальніку файлаў, толькі выкананне для групы і не даем ніякіх правоў ўсім астатнім.
Правы для канкрэтнага карыстальніка і дадатковыя файлы
Цяпер нам трэба працягваць выдачу карэктных правоў, але ўжо ў рамках аднаго карыстача. Каб пры стварэнні файлаў і тэчак ім адразу прысвойваліся правільныя правы, адрэдагуем адпаведным чынам параметр umask
ў файлах .bashrc і .profile.
umask 027
Для тэчак гэтыя правы літаральнага выкарыстаньня 0750, што дазваляе любыя дзеянні з файламі для ўладальніка, чытанне і выкананне для групы.
А для файлаў 0640: чытанне / змяненне для ўладальніка і толькі чытанне для групы. Рэкамендую самастойна вывучыць артыкул аб правах доступу ў Linux.
Таксама не забываем ў каталогу / etc / skel абнавіць правы на існуючыя файлы і тэчкі камандай chmod.
У завяршэнне ствараем дадатковыя папкі: для сайтаў, часовых файлаў, сесій і г.д. Файл authorized_keys з вашым публічным ключом да ssh трэба размясціць у тэчцы .ssh карыстальніка. У выніку структура будзе выглядаць прыкладна так:
/ Etc / skel -.ssh / --authorized_keys -sessions / -tmp / -www / -.bashrc -.profile
Усё гэта будзе скапіявана ў хатні каталог карыстальніка пры яго стварэнні.