ඔන්න අද අපි අපේ තොවිලෙ 4 වෙනි කොටසට ආවා. මේකත් බොහොම වැදගත් පාඩමක්. අද අපි ඉගෙනගන්න යන්නෙ Linux access permissions ගැන. Terminal බිය දුරු කරලා CLI එකේ හැකරෙක් වගේ වැඩ දාන්න නම් අනිවාර්යයෙන් මේ ගැනත් ඉගෙනගන්න වෙනවා. එහෙනම් අපි පාඩමට යමු.

Linux System එකක තියෙන files වලට අපිට විවිධ ආකාරයේ permissions දෙන්න පුළුවන්. මෙහෙම ක්‍රමවේදයක් තියෙන්නේ files වලට තියෙන access එක පාලනය කරන්න.

Linux access permissions මෙන්න මේ ආකාරයට හඳුන්වලා තියෙනවා.

  1. Read (r) - File එකේ අන්තර්ගතය බැලීමට පමණක් ඉඩ ලබා දීම.
  2. Write (w) - File එකේ අන්තර්ගතය වෙනස් කිරීමට ඉඩ ලබා දීම.
  3. Execute (x) - File එක run කිරීමට (script එකක්, program එකක් වගේ) ඉඩ ලබා දීම. Directory එකක් නම් ඒකේ වෙනස්කම් සිදු කිරීමට ඉඩ දීම.

මේ permissions ලබා දෙන්නේ කොටස් තුනකට අදාළව. ඒ groups තමයි.

  1. Owner - අදාළ ගොණුවේ හිමිකරුට
  2. Group - හිමිකරු විසින් ඉඩ ලබා දුන් පිරිසකට.
  3. All others - ලෝකෙ හැමෝටම.

වැදගත්ම දෙයක් තමයි, Directory එකක් access කරන්න ඒකට x permission එක, එහෙමත් නැත්නම් executable permission එක දෙන්නම ඕන.

ls -l output එක තේරුම්ගනිමු.

ls -l කියන කමාන්ඩ් එක අපි කලින් ඉගෙනගත්තා. අද අපි බලමු ඒකෙන් එළියට එන output එක තේරුම්ගන්න විදිය.

මුලින්ම තියෙන්නෙ File permissions ගැන විස්තර. ඊළඟට Links ගැන විස්තර (links ගැන ඉස්සරහට කතා කරමු) ඊළඟට groups ගැන විස්තර, ඊළඟට file size එක. ඊළඟට file එක හැදුව දිනය, වෙලාව. අන්තිමට file එකේ නම. අපි මේ රූපසටහන භාවිතයෙන් මේක පැහැදිලි කරගනිමු.

හොඳයි, මේ පාඩමට අපිට අවශ්‍ය වෙන්නෙ ඔය රතු පාට කොටුවකින් දක්වලා තියෙන කොටස.

Note: Permissions වලට ඉස්සරහින් තියෙන ඉරි කෑල්ල එක්ක මේක පටලගන්න එපා. ඒ ඉරි කෑල්ලෙන් කියන්නෙ අදාල එක ෆයිල් එකක්ද, directory එකක්ද කියලා කියන එක. (ෆයිල් ටයිප්ස් තව තියෙනවා. පසුවට ඒවා ඉගෙනගනිමු) ඕක ඉරි කෑල්ලක් නම්, ඒ ෆයිල් එකක්. d අකුරක් නම් ඒක directory එකක්.

Permissions දක්වන කොටසේ තියෙන්නේ අකුරු නවයක් ලියන්න ඉඩ. ඕකෙ මුල් අකුරු තුනෙන් කියවෙන්නෙ owner ට තියෙන permission වල විස්තරය. ඊළඟ අකුරු තුනෙන් group එකට තියෙන permission වල විස්තරය. අන්තිම අකුරු තුනෙන් අනික් හැමෝටම තියෙන permissions වල විස්තරය. අපිට මෙහෙම කිව්වට තේරෙන්නෙ නෑ නිසා, මම පහළින් පාට පාටින් මෙහෙම ඇන්දා. දැන් බලන්නකො තේරෙනවද කියලා.

උඩ පින්තූරෙ තියෙන්නෙ එක්තරා ෆයිල් එකක permissions තියෙන ආකාරය. මේක උදාහරණයක් විතරයි. මේවා ෆයිල් එකෙන් ෆයිල් එකට වෙනස් වෙනවා. මෙතනදි ඉරි කෑල්ලක් තියෙනවා කියන්නෙ අදාළ user ට හෝ group එකට ඒ permission එක නෑ කියන එක. අනිවාර්යයෙන්ම ඔය අකුරු නවය තියෙන්නේ ඔය පිළිවෙලටම තමයි. ඒ වගේම, මුල් අකුරෙන් Read permission එකත්, ඊළඟ අකුරෙන් write permission එකත්, අන්තිම අකුරෙන් execute permission එකත් පෙන්වනවා. මේක ටිකක් තේරුම්ගන්න අමාරුයි නම්, හිමීට ආයෙ කල්පනා කරන්න මේ රූපසටහන බලාගෙන. එතකොට තේරේවි.

තේරුම්ගන්න පහසු වෙන්න අපි උදාහරණ ටිකක් බලමු.

rw------- මේකෙන් කියන්නෙ Owner ට විතරක් read, write permissions තියෙනවා අනික් කාටවත් නෑ කියන එක.

rwxrwxrwx මේකෙන් කියන්නෙ හැමෝටම read, write, execute කරන්න පුළුවන් කියන එක. මේක නිකන් පොදු ෆයිල් එකක් වගේ.

rw-r--r-- හැමෝටම read කරන්න පුළුවන් වුණාට, write කරන්න පුළුවන් owner ට විතරයි.

දැන් නම් අනිවාර්යයෙන් වැඩේ තේරෙන්නම ඕන.

Directory Permissions

Directories වලටත් තියෙන්නේ files වල වගේම ක්‍රමයක් තමයි. හැබැයි මේකෙ පොඩි වෙනස්කම් ටිකක් තියෙනවා.

  • Read - Directory එක ඇතුළත තියෙන contents බලන්න පුළුවන්
  • Write - Directory එක ඇතුළෙ අලුත් files හදන්න සහ files මකන්න පුළුවන්
  • Execute - Directory එක ඇතුළට cd command එක ගහලා යන්න පුළුවන් මේ permission එක තියේ නම් විතරයි.

අපි දැන් Permissions වෙනස් කරමු!

අපි මෙච්චර මේ රවුමක් ගැහුවෙ මේ permissions වෙනස් කරන හැටි කියලා දෙන්නයි. Permissions කියන්නෙ මොනාද නොදැන වෙනස් කරන්න කියලා දෙන්න බෑනෙ. ඒකයි මෙච්චර වටේ යන්න වුණේ. දැන් අපි හරි කාරණාවට බහිමු.

Permissions වෙනස් කරන්නත් ක්‍රම දෙකක් තියෙනවා. එකක්, octal ක්‍රමය, ඒ කිව්වෙ අටේ පාදයේ සංඛ්‍යා ක්‍රමය. අනික සාමාන්‍ය ක්‍රමය. අපි සාමාන්‍ය ක්‍රමය මුලින් බලමු.

සාමාන්‍ය ක්‍රමයට Permissions වෙනස් කරමු.

මෙතනදි මතක තියාගන්න ඕන command එක තමයි chmod කියන කමාන්ඩ් එක.

chmod [ugoa(+/-rwx) dir/file]

Note: මේකෙ වරහන් දැම්මෙ පැහැදිලි වෙන්න, / මේ ඇල ඉරි දැම්මෙ 'හෝ' කියන අර්ථයෙන්. මේවා ඇත්ත code එකේ නෑ.

මෙතනදි, u,g,o සහ a අකුරු වලින් කියන්නෙ

  • u - user/owner
  • g - group
  • o - others (අනික් හැමෝටම)
  • a - all (හැමෝටම)

කියන එක.

+ කියන්නෙ permission දෙන්න කියන එක

- කියන්නෙ permission ඉවත් කරන්න කියන එක.

මෙහෙම කිව්වට මෙලෝ ලබ්බක් තේරෙන්නෙ නැති නිසා පහළ උදාහරණ බලමු.

  1. chmod a+r file.txt මේකෙන් කියන්නෙ a+r කියලනෙ. ඒ කියන්නෙ all, ඔක්කොටම + කියන්නෙ දෙන්න, r කියන්නෙ read permission එක. කෙටියෙන් කිව්වොත් හැමෝටම read permission දෙන්න කියන එක. මෙතනදි permission දෙන්න යන්නෙ file.txt කියන text file එකට. ඒකෙ නම තමයි අන්තිමට තියෙන්නේ.
  2. chmod a-x file.txt මේ කියන්නෙ execute permission එක හැමෝගෙන්ම අයින් කරන්න කියන එක. එතකොට ownerට වත් ආයෙ මේකෙ execute permissions ඉතිරි වෙන්නෑ.
  3. chmod go+rw file.txt මේකෙන් කියවෙන්නෙ Group එකටයි, owner ටයි දෙන්න read සහ write කියන permission දෙක, file.txt කියන ෆයිල් එකට.
  4. chmod u+x myscript.sh මේකෙන් කියන්නෙ user ට, එහෙමත් නැත්නම් owner ට execute permission එක දෙන්න, myscript.sh කියන ෆයිල් එකට.

මං හිතන්නේ.. දැන් ඔයාලට වැඩේ පැහැදිලියි.

Note: අනිවාර්යයෙන් මේවා terminal එකේ try කරන්න. File එකක් හදලා, ඒකට විවිධ permissions දීලා ls -l command එකෙන් ඒවා හරියට වැටිලද කියලා පරීක්ෂා කරලා බලන්න. Practicals නොකර ගොඩ යාමක් නෑ.

Octal ක්‍රමය

ඔන්න ඊළඟ ලස්සන වැඩේ, octal ක්‍රමයට permissions ලබාදීම. මේක ඇත්තටම කලින් එකටත් වඩා ලේසියි, හැබැයි පේන්නෙ හරි අමාරුයි වගේ. මේකට අපි භාවිතා කරන්නේ අටේ පාදයේ සංඛ්‍යා. 0 ඉඳන් 7 දක්වා ඉලක්කම් ටික.

chmod 754 file.txt

මේන්න මේ වගේ තමයි command එක පේන්නෙ. මේකෙන් ඔයාට තාම මුකුත් අදහසක් ගන්න බැරි වුණත් මේකෙන් අර කලින් ක්‍රමයට හරි අමාරුවෙන් දෙන permissions සෙට් එකක්ම එක පේලියෙන් දීලා දාන්න පුළුවන්. පහළ වගුව ටිකක් බලන්නකො, එතකොට තවත් වැඩේ පැහැදිලි වෙයි.

අන්න දැන් වැඩේ පැහැදිලි ඇති. අර උඩ කමාන්ඩ් එකේ තිබුණ 754 සංඛ්‍යාව ගනිමු. ඇත්තටම ඔතන තියෙන්නේ හත්සිය පණස් හතර නෙවෙයි. හත, පහ, හතර කියන ඉලක්කම් තුන. මුල් ඉලක්කමෙන් කියවෙන්නෙ owner ගෙ permissions ගැන. මැද ඉලක්කමෙන් group permissions ගැන. අන්තිම ඉලක්කමෙන් others ඒ කිව්වෙ අනික් හැමෝටම දෙන permissions ගැන.

දැන් අපි ආයෙ 754 ගනිමු. එතකොට මම කිව්ව විදියට,

7 න් කියවෙන්නෙ owner ගෙ permissions ගැන නෙ. දැන් අර වගුව බලන්න. 7 ඉස්සරහින් තියෙන symbolic representation එක මොකක්ද? rwx ඒ කියන්නෙ මෙතනදි owner ට read, write සහ execute permissions ඔක්කොම දෙනවා.

ඊළඟට යමු 5 ට. 5 කියන්නෙ මැද තියෙන ඉලක්කම. මැද ඉලක්කමෙන් කියවෙන්නෙ group permissions ගැන නෙ. 5 ඉස්සරහින් තියෙන්නේ r-x කියලා ඒ කියන්නෙ group එකට දෙන්නෙ read සහ execute කියන permissions විතරයි.

අන්තිම ඉලක්කම 4. අන්තිම ඉලක්කමෙන් කියවෙන්නෙ අනික් අයට දෙන permissions ගැන. 4 ඉස්සරහින් තියෙන්නේ r-- කියලා. ඒ කියන්නෙ අනික් හැමෝටම මේ ෆයිල් එක කියවන්න විතරක් permission දෙනවා කියලා.

Note: අර වගුවෙ binary values දුන්නෙ මට වැරදිලා නෙවෙයි. ටිකක් ඒ වගුව අධ්‍යනය කරන්න. එතකොට තේරෙයි ඔය වගුව කට පාඩම් කරගන්න ඕන නෑ කියලා. හොඳට බලලා වැඩේ අවබෝධ කරගන්න.

හොඳයි, පාඩම ඉවර වෙන්න දැන් ළඟයි.

chown

මේ කමාන්ඩ් එකෙන් පුළුවන් file එකක හෝ directory එකක owner වෙනස් කරන්න. (ඕන ෆයිල් ගොඩක එකපාරටත් පුළුවන්)

තනි ෆයිල් එකක් - chown username file.txt

ෆයිල්ස් කීපයක් - chown username file1.txt file2.txt file3.txt

chgrp

මේ කමාන්ඩ් එකෙන් පුළුවන් file එකක් හෝ directory එකක් අයත් group එක වෙනස් කරන්න. මේකත් කලින් chown වගේ files, directories ගොඩකට එකපාරට දෙන්නත් පුළුවන්.

chgrp groupname file.txt


හොඳයි, දීර්ඝ පාඩමක් සරලව ඉවර කළා කියලා හිතනවා. මම හිතන්නෙ මේ හොඳටම ප්‍රමාණවත් වෙයි උවමනාවක් උනන්දුවක් සහ ආසාවක් තියෙන කෙනෙක්ට. අපි තවත් Terminal තොවිලයක් අරන් එන්නම්. ඔබට ජය!