لینکس میں اجازتیں (chown، chmod، SUID، GUID، سٹکی بٹ، ACL، umask)

سب کو سلام. یہ کتاب RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 اور EX300 کے ایک مضمون کا ترجمہ ہے۔

دھکا: مجھے امید ہے کہ یہ مضمون نہ صرف ابتدائی افراد کے لیے مفید ہوگا، بلکہ مزید تجربہ کار منتظمین کو اپنے علم کو ہموار کرنے میں بھی مدد ملے گی۔

تو، چلتے ہیں.

لینکس میں اجازتیں (chown، chmod، SUID، GUID، سٹکی بٹ، ACL، umask)

لینکس میں فائلوں تک رسائی کے لیے، اجازتیں استعمال کی جاتی ہیں۔ یہ اجازتیں تین اشیاء کو تفویض کی گئی ہیں: فائل کا مالک، گروپ کا مالک، اور ایک اور آبجیکٹ (یعنی باقی سب)۔ اس مضمون میں، آپ اجازتوں کو لاگو کرنے کا طریقہ سیکھیں گے۔

یہ مضمون بنیادی تصورات کے جائزہ کے ساتھ شروع ہوتا ہے، اس کے بعد خصوصی اجازتوں اور رسائی کنٹرول فہرستوں (ACLs) پر بحث ہوتی ہے۔ اس مضمون کے آخر میں، ہم umask کے ذریعے پہلے سے طے شدہ اجازتوں کو ترتیب دینے کے ساتھ ساتھ توسیع شدہ صارف کی صفات کے انتظام کا احاطہ کرتے ہیں۔

فائل کی ملکیت کا انتظام

اجازتوں پر بحث کرنے سے پہلے، آپ کو فائل اور ڈائریکٹری کے مالک کے کردار سے آگاہ ہونا چاہیے۔ فائلوں اور ڈائریکٹریوں کی ملکیت اجازتوں سے نمٹنے کے لیے بہت ضروری ہے۔ اس سیکشن میں، آپ سب سے پہلے سیکھیں گے کہ آپ مالک کو کیسے دیکھ سکتے ہیں۔ اس کے بعد آپ سیکھیں گے کہ فائلوں اور ڈائریکٹریوں کے لیے گروپ کے مالک اور صارف کو کیسے تبدیل کیا جائے۔

فائل یا ڈائریکٹری کے مالک کو ظاہر کرنا

لینکس میں، ہر فائل اور ہر ڈائرکٹری کے دو مالک ہوتے ہیں: ایک صارف اور ایک گروپ کا مالک۔

جب فائل یا ڈائرکٹری بنتی ہے تو یہ مالکان سیٹ ہوتے ہیں۔ فائل بنانے والا صارف اس فائل کا مالک بن جاتا ہے، اور بنیادی گروپ جس سے وہی صارف تعلق رکھتا ہے وہ بھی اس فائل کا مالک بن جاتا ہے۔ اس بات کا تعین کرنے کے لیے کہ آیا آپ کو، بطور صارف، کسی فائل یا ڈائریکٹری تک رسائی کی اجازت ہے، شیل ملکیت کی جانچ کرتا ہے۔

یہ مندرجہ ذیل ترتیب میں ہوتا ہے:

  1. شیل چیک کرتا ہے کہ آیا آپ اس فائل کے مالک ہیں جس تک آپ رسائی حاصل کرنا چاہتے ہیں۔ اگر آپ مالک ہیں، تو آپ کو اجازت مل جاتی ہے اور شیل چیک کرنا بند کر دیتا ہے۔
  2. اگر آپ فائل کے مالک نہیں ہیں، تو شیل یہ دیکھنے کے لیے چیک کرے گا کہ آیا آپ کسی ایسے گروپ کے رکن ہیں جس کے پاس فائل پر اجازت ہے۔ اگر آپ اس گروپ کے ممبر ہیں، تو آپ اس فائل تک رسائی حاصل کریں گے جس کی اجازت گروپ نے سیٹ کی ہے، اور شیل چیک کرنا بند کر دے گا۔
  3. اگر آپ نہ تو صارف ہیں اور نہ ہی کسی گروپ کے مالک ہیں، تو آپ کو دوسرے صارفین (دیگر) کے حقوق دیے جائیں گے۔

موجودہ مالک کی اسائنمنٹس کو دیکھنے کے لیے، آپ کمانڈ استعمال کر سکتے ہیں۔ ایل ایس ایل. یہ کمانڈ گروپ کے صارف اور مالک کو دکھاتا ہے۔ ذیل میں آپ /home ڈائریکٹری میں ڈائریکٹریز کے مالک کی ترتیبات دیکھ سکتے ہیں۔

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

حکم کے ساتھ ls آپ دی گئی ڈائریکٹری میں فائلوں کے مالک کو ظاہر کر سکتے ہیں۔ کبھی کبھی سسٹم پر موجود تمام فائلوں کی فہرست حاصل کرنا مفید ہو سکتا ہے جن کے پاس بطور مالک صارف یا گروپ موجود ہے۔ اس کے لیے آپ استعمال کر سکتے ہیں۔ تلاش. دلیل صارف تلاش کریں۔ اس مقصد کے لیے استعمال کیا جا سکتا ہے۔ مثال کے طور پر، درج ذیل کمانڈ میں ان تمام فائلوں کی فہرست دی گئی ہے جو صارف لنڈا کی ملکیت ہیں۔

find / -user linda

آپ استعمال بھی کر سکتے ہیں۔ تلاش ان فائلوں کو تلاش کرنے کے لیے جن کے مالک کے طور پر ایک مخصوص گروپ ہے۔

مثال کے طور پر، درج ذیل کمانڈ گروپ سے تعلق رکھنے والی تمام فائلوں کو تلاش کرتی ہے۔ صارفین:

find / -group users

مالک کی تبدیلی

مناسب اجازتوں کو لاگو کرنے کے لیے، پہلی چیز جس پر غور کرنا ہے وہ ملکیت ہے۔ اس کے لیے حکم ہے۔ گاؤن. اس کمانڈ کا نحو سمجھنا آسان ہے:

chown кто что

مثال کے طور پر، درج ذیل کمانڈ /home/account ڈائرکٹری کے مالک کو صارف لنڈا میں تبدیل کر دیتی ہے۔

chown linda /home/account

ٹیم گاؤن بہت سے اختیارات ہیں، جن میں سے ایک خاص طور پر مفید ہے: -R. آپ اندازہ لگا سکتے ہیں کہ یہ کیا کرتا ہے کیونکہ یہ آپشن بہت سی دوسری کمانڈز کے لیے بھی دستیاب ہے۔ یہ آپ کو بار بار مالک کو سیٹ کرنے کی اجازت دیتا ہے، جو آپ کو موجودہ ڈائرکٹری اور نیچے کی ہر چیز کا مالک سیٹ کرنے کی اجازت دیتا ہے۔ مندرجہ ذیل کمانڈ /home ڈائریکٹری کی ملکیت اور اس کے نیچے موجود ہر چیز کو لنڈا صارف کے لیے تبدیل کرتی ہے۔

اب مالکان اس طرح نظر آتے ہیں:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

چلو کرتے ہیں:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

اب صارف لیزا اکاؤنٹ ڈائریکٹری کی مالک بن گئی ہے:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

گروپ کے مالک کو تبدیل کریں۔

گروپ کی ملکیت کو تبدیل کرنے کے دو طریقے ہیں۔ آپ اس کا استعمال کرتے ہوئے کر سکتے ہیں۔ گاؤن، لیکن اس کا نام ایک خاص کمانڈ ہے۔ chgrpیہ کام کرتا ہے. اگر آپ کمانڈ استعمال کرنا چاہتے ہیں۔ گاؤن، استعمال کریں۔ . یا : گروپ کے نام کے سامنے۔

درج ذیل کمانڈ /home/account گروپ کے کسی بھی مالک کو اکاؤنٹ گروپ میں تبدیل کر دیتی ہے۔

chown .account /home/account

آپ استعمال کر سکتے ہیں گاؤن صارف اور/یا گروپ کے مالک کو کئی طریقوں سے تبدیل کرنا۔ یہاں کچھ مثالیں ہیں:

  • chown lisa myfile1 صارف لیزا کو myfile1 کے مالک کے طور پر سیٹ کرتا ہے۔
  • chown lisa.sales myfile صارف لیزا کو myfile فائل کے مالک کے طور پر سیٹ کرتا ہے، اور سیلز گروپ کو بھی اسی فائل کے مالک کے طور پر سیٹ کرتا ہے۔
  • چاؤن لیزا: سیلز مائی فائل پچھلے کمانڈ کی طرح۔
  • chown .sales myfile صارف کے مالک کو تبدیل کیے بغیر سیلز گروپ کو myfile کے مالک کے طور پر سیٹ کرتا ہے۔
  • chown :sales myfile پچھلے کمانڈ کی طرح۔

آپ کمانڈ استعمال کر سکتے ہیں۔ chgrpگروپ کے مالک کو تبدیل کرنے کے لیے۔ مندرجہ ذیل مثال پر غور کریں، جہاں آپ استعمال کر سکتے ہیں۔ chgrp اکاؤنٹ ڈائریکٹری کے مالک کو سیلز گروپ پر سیٹ کریں:

chgrp .sales /home/account

ساتھ کے طور پر گاؤن، آپ اختیار استعمال کر سکتے ہیں۔ -R с chgrp، نیز گروپ کے مالک کو بار بار تبدیل کریں۔

پہلے سے طے شدہ مالک کو سمجھنا

آپ نے دیکھا ہوگا کہ جب کوئی صارف فائل بناتا ہے تو پہلے سے طے شدہ ملکیت کا اطلاق ہوتا ہے۔
جو صارف فائل بناتا ہے وہ خود بخود اس فائل کا مالک بن جاتا ہے، اور اس صارف کا بنیادی گروپ خود بخود اس فائل کا مالک بن جاتا ہے۔ یہ عام طور پر وہ گروپ ہوتا ہے جو صارف کے بنیادی گروپ کے طور پر /etc/passwd فائل میں درج ہوتا ہے۔ تاہم، اگر صارف ایک سے زیادہ گروپ کا رکن ہے، تو صارف موثر بنیادی گروپ کو تبدیل کر سکتا ہے۔

موجودہ موثر بنیادی گروپ کو دکھانے کے لیے، صارف کمانڈ استعمال کر سکتا ہے۔ گروہوں:

[root@server1 ~]# groups lisa
lisa : lisa account sales

اگر موجودہ لنڈا صارف موثر بنیادی گروپ کو تبدیل کرنا چاہتا ہے، تو وہ کمانڈ استعمال کرے گا۔ newgrpاس کے بعد گروپ کے نام کے بعد وہ نئے موثر پرائمری گروپ کے طور پر سیٹ کرنا چاہتا ہے۔ کمانڈ استعمال کرنے کے بعد newgrp پرائمری گروپ اس وقت تک فعال رہے گا جب تک کہ صارف کمانڈ داخل نہ کرے۔ باہر نکلیں یا لاگ آؤٹ نہ کریں۔

مندرجہ ذیل سے پتہ چلتا ہے کہ صارف لنڈا اس کمانڈ کو کس طرح استعمال کرتا ہے، بنیادی گروپ کے طور پر سیلز کے ساتھ:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

مؤثر پرائمری گروپ کو تبدیل کرنے کے بعد، صارف کی طرف سے بنائی گئی تمام نئی فائلوں میں وہ گروپ بطور گروپ مالک ہوگا۔ اصل پرائمری گروپ سیٹنگ پر واپس جانے کے لیے، استعمال باہر نکلیں.

کمانڈ استعمال کرنے کے قابل ہونا newgrp، صارف کو اس گروپ کا رکن ہونا چاہیے جسے وہ بنیادی گروپ کے طور پر استعمال کرنا چاہتے ہیں۔ اس کے علاوہ، کمانڈ کا استعمال کرتے ہوئے ایک گروپ کے لئے ایک گروپ پاس ورڈ استعمال کیا جا سکتا ہے gpasswd. اگر صارف کمانڈ استعمال کرتا ہے۔ newgrpلیکن ہدف گروپ کا رکن نہیں ہے، شیل گروپ کے پاس ورڈ کا اشارہ کرتا ہے۔ صحیح گروپ پاس ورڈ داخل کرنے کے بعد، ایک نیا موثر بنیادی گروپ قائم ہو جائے گا۔

بنیادی حقوق کا انتظام

لینکس پرمیشن سسٹم 1970 کی دہائی میں ایجاد ہوا تھا۔ چونکہ ان سالوں میں کمپیوٹنگ کی ضروریات محدود تھیں، اس لیے بنیادی اجازت کا نظام کافی محدود تھا۔ یہ اجازت کا نظام تین اجازتوں کا استعمال کرتا ہے جو فائلوں اور ڈائریکٹریوں پر لاگو کیا جا سکتا ہے۔ اس سیکشن میں، آپ ان اجازتوں کو استعمال کرنے اور تبدیل کرنے کا طریقہ سیکھیں گے۔

پڑھنے، لکھنے اور عمل کرنے کی اجازتوں کو سمجھنا

تین بنیادی اجازتیں آپ کو فائلوں کو پڑھنے، لکھنے اور عمل کرنے کی اجازت دیتی ہیں۔ فائلوں یا ڈائریکٹریوں پر لاگو ہونے پر ان اجازتوں کا اثر مختلف ہوتا ہے۔ فائل کے لیے، پڑھنے کی اجازت آپ کو فائل کو پڑھنے کے لیے کھولنے کا حق دیتی ہے۔ لہذا، آپ اس کا مواد پڑھ سکتے ہیں، لیکن اس کا مطلب ہے کہ آپ کا کمپیوٹر اس کے ساتھ کچھ کرنے کے لیے فائل کو کھول سکتا ہے۔

ایک پروگرام فائل جس کو لائبریری تک رسائی کی ضرورت ہوتی ہے، مثال کے طور پر، اس لائبریری تک پڑھنے کی رسائی ہونی چاہیے۔ یہ مندرجہ ذیل ہے کہ پڑھنے کی اجازت سب سے بنیادی اجازت ہے جو آپ کو فائلوں کے ساتھ کام کرنے کی ضرورت ہے۔

ڈائرکٹری پر لاگو ہونے پر، پڑھنے سے آپ اس ڈائرکٹری کے مواد کو ظاہر کرسکتے ہیں۔ آپ کو معلوم ہونا چاہیے کہ یہ اجازت آپ کو ڈائریکٹری میں موجود فائلوں کو پڑھنے کی اجازت نہیں دیتی۔ لینکس پرمیشن سسٹم وراثت کو نہیں جانتا، اور فائل کو پڑھنے کا واحد طریقہ اس فائل پر پڑھنے کی اجازت استعمال کرنا ہے۔

جیسا کہ آپ شاید اندازہ لگا سکتے ہیں، لکھنے کی اجازت، اگر کسی فائل پر لاگو ہوتی ہے، تو فائل میں لکھنے کی اجازت دیتی ہے۔ دوسرے الفاظ میں، یہ آپ کو موجودہ فائلوں کے مواد کو تبدیل کرنے کی اجازت دیتا ہے۔ تاہم، یہ آپ کو نئی فائلیں بنانے یا حذف کرنے یا فائل کی اجازتوں کو تبدیل کرنے کی اجازت نہیں دیتا ہے۔ ایسا کرنے کے لیے، آپ کو اس ڈائریکٹری کو لکھنے کی اجازت دینی ہوگی جہاں آپ فائل بنانا چاہتے ہیں۔ ڈائریکٹریز میں، یہ اجازت آپ کو نئی ذیلی ڈائرکٹریاں بنانے اور حذف کرنے کی بھی اجازت دیتی ہے۔

ایگزیکیوٹ پرمیشن وہی ہے جس کی آپ کو فائل پر عمل کرنے کی ضرورت ہے۔ یہ کبھی بھی بطور ڈیفالٹ انسٹال نہیں ہوگا، جو لینکس کو وائرس سے تقریباً مکمل طور پر محفوظ بناتا ہے۔ ڈائرکٹری پر لکھنے کی اجازت کے ساتھ صرف وہی شخص عمل درآمد کی اجازت کا اطلاق کرسکتا ہے۔

مندرجہ ذیل بنیادی اجازتوں کے استعمال کا خلاصہ کرتا ہے:

لینکس میں اجازتیں (chown، chmod، SUID، GUID، سٹکی بٹ، ACL، umask)

chmod کا استعمال کرتے ہوئے

کمانڈ اجازتوں کے انتظام کے لیے استعمال ہوتی ہے۔ chmod. استعمال کرنا chmod آپ صارف (صارف)، گروپس (گروپ) اور دیگر (دیگر) کے لیے اجازتیں مرتب کر سکتے ہیں۔ آپ اس کمانڈ کو دو طریقوں میں استعمال کر سکتے ہیں: رشتہ دار موڈ اور مطلق موڈ۔ مطلق موڈ میں، بنیادی اجازتوں کو سیٹ کرنے کے لیے تین ہندسوں کا استعمال کیا جاتا ہے۔

لینکس میں اجازتیں (chown، chmod، SUID، GUID، سٹکی بٹ، ACL، umask)

اجازتیں ترتیب دیتے وقت، اپنی ضرورت کی قیمت کا حساب لگائیں۔ اگر آپ صارف کے لیے read/write/execute سیٹ کرنا چاہتے ہیں، گروپ کے لیے read/execute، اور/somefile میں دوسروں کے لیے پڑھنا/عمل درآمد کرنا چاہتے ہیں تو آپ درج ذیل کمانڈ استعمال کریں chmod:

chmod 755 /somefile

جب آپ استعمال کرتے ہیں۔ chmod اس طرح، تمام موجودہ اجازتوں کو آپ کی سیٹ کردہ اجازتوں سے بدل دیا جاتا ہے۔

اگر آپ موجودہ اجازتوں سے متعلق اجازتوں کو تبدیل کرنا چاہتے ہیں، تو آپ استعمال کر سکتے ہیں۔ chmod رشتہ دار موڈ میں استعمال کرنا chmod رشتہ دار موڈ میں آپ تین اشارے کے ساتھ کام کرتے ہیں اس بات کی نشاندہی کرنے کے لیے کہ آپ کیا کرنا چاہتے ہیں:

  1. پہلے آپ وضاحت کریں کہ آپ کس کے لیے اجازتیں تبدیل کرنا چاہتے ہیں۔ ایسا کرنے کے لیے، آپ صارف (u) گروپ (g) اور دوسرے (o).
  2. اس کے بعد آپ موجودہ موڈ سے اجازتیں شامل کرنے یا ہٹانے کے لیے ایک بیان استعمال کرتے ہیں، یا انہیں بالکل سیٹ کر دیتے ہیں۔
  3. آخر میں آپ استعمال کرتے ہیں۔ r, w и xیہ بتانے کے لیے کہ آپ کون سی اجازتیں سیٹ کرنا چاہتے ہیں۔

متعلقہ موڈ میں اجازتوں کو تبدیل کرتے وقت، آپ تمام اشیاء کے لیے اجازت شامل کرنے یا ہٹانے کے لیے "ٹو" حصے کو چھوڑ سکتے ہیں۔ مثال کے طور پر، یہ کمانڈ تمام صارفین کے لیے execute اجازت شامل کرتی ہے:

chmod +x somefile

رشتہ دار موڈ میں کام کرتے وقت، آپ زیادہ پیچیدہ کمانڈز بھی استعمال کر سکتے ہیں۔ مثال کے طور پر، یہ کمانڈ ایک گروپ میں لکھنے کی اجازت شامل کرتی ہے اور دوسروں کے لیے پڑھنے کی اجازت کو ہٹا دیتی ہے۔

chmod g+w,o-r somefile

استعمال کرتے وقت chmod -R o+rx /ڈیٹا آپ نے تمام ڈائریکٹریز کے ساتھ ساتھ /data ڈائرکٹری میں فائلوں کے لیے ایکسیکیوٹ پرمیشن سیٹ کی ہے۔ صرف ڈائریکٹریز کے لیے execute permission سیٹ کرنے کے لیے، فائلوں کے لیے نہیں، استعمال کریں۔ chmod -R o + rX /ڈیٹا.

اپر کیس X اس بات کو یقینی بناتا ہے کہ فائلوں کو اس وقت تک عمل کرنے کی اجازت نہیں ملتی جب تک کہ فائل نے کچھ اشیاء کے لیے پہلے سے ہی ایکسیکیوٹ کی اجازت متعین نہ کر دی ہو۔ یہ ایکس کو اجازتوں سے نمٹنے کا ایک بہتر طریقہ بناتا ہے۔ یہ فائلوں پر اس اجازت کو ترتیب دینے سے گریز کرے گا جہاں اس کی ضرورت نہیں ہے۔

توسیعی حقوق

بنیادی اجازتوں کے علاوہ جن کے بارے میں آپ نے ابھی پڑھا ہے، لینکس کے پاس جدید اجازتوں کا ایک سیٹ بھی ہے۔ یہ وہ اجازتیں نہیں ہیں جو آپ نے بطور ڈیفالٹ سیٹ کی ہیں، لیکن بعض اوقات یہ ایک مفید اضافہ فراہم کرتے ہیں۔ اس سیکشن میں، آپ سیکھیں گے کہ وہ کیا ہیں اور انہیں کیسے ترتیب دیا جائے۔

SUID، GUID، اور سٹکی بٹ توسیعی اجازتوں کو سمجھنا

تین اعلی درجے کی اجازتیں ہیں۔ ان میں سے پہلا صارف شناخت کنندہ (SUID) سیٹ کرنے کی اجازت ہے۔ کچھ خاص معاملات میں، آپ اس اجازت کو قابل عمل فائلوں پر لاگو کر سکتے ہیں۔ پہلے سے طے شدہ طور پر، ایک صارف جو ایک قابل عمل چلاتا ہے وہ اس فائل کو اپنی اجازت سے چلاتا ہے۔

عام صارفین کے لیے، اس کا عام طور پر مطلب یہ ہوتا ہے کہ پروگرام کا استعمال محدود ہے۔ تاہم، بعض صورتوں میں، صارف کو صرف ایک مخصوص کام انجام دینے کے لیے خصوصی اجازتوں کی ضرورت ہوتی ہے۔

مثال کے طور پر، ایسی صورت حال پر غور کریں جہاں صارف کو اپنا پاس ورڈ تبدیل کرنے کی ضرورت ہو۔ ایسا کرنے کے لیے، صارف کو اپنا نیا پاس ورڈ /etc/shadow فائل میں لکھنا چاہیے۔ تاہم، یہ فائل غیر روٹ صارفین کے لیے قابل تحریر نہیں ہے۔

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

SUID کی اجازت اس مسئلے کا حل پیش کرتی ہے۔ /usr/bin/passwd یوٹیلیٹی اس اجازت کو بطور ڈیفالٹ استعمال کرتی ہے۔ اس کا مطلب ہے کہ پاس ورڈ تبدیل کرتے وقت، صارف عارضی طور پر روٹ بن جاتا ہے، جو اسے /etc/shadow فائل میں لکھنے کی اجازت دیتا ہے۔ آپ SUID کی اجازت کے ساتھ دیکھ سکتے ہیں۔ ایل ایس ایل کے طور پر s ایسی پوزیشن میں جہاں آپ عام طور پر دیکھنے کی توقع کریں گے۔ x اپنی مرضی کے مطابق اجازتوں کے لیے:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

SUID کی اجازت مفید لگ سکتی ہے (اور بعض صورتوں میں یہ ہے)، لیکن ساتھ ہی یہ ممکنہ طور پر خطرناک بھی ہے۔ اگر صحیح طریقے سے لاگو نہیں کیا جاتا ہے، تو آپ غلطی سے جڑ کی اجازت دے سکتے ہیں۔ لہذا، میں اسے صرف انتہائی احتیاط کے ساتھ استعمال کرنے کی سفارش کرتا ہوں۔

زیادہ تر منتظمین کو اسے استعمال کرنے کی کبھی ضرورت نہیں ہوگی۔ آپ اسے صرف کچھ فائلوں میں دیکھیں گے جہاں آپریٹنگ سسٹم کو اسے بطور ڈیفالٹ سیٹ کرنا چاہئے۔

دوسری خصوصی اجازت گروپ شناخت کنندہ (SGID) ہے۔ اس اجازت کے دو اثرات ہیں۔ جب ایک قابل عمل فائل پر لاگو ہوتا ہے، تو یہ اس صارف کو دیتا ہے جو فائل کو فائل کے گروپ کے مالک کی اجازت دیتا ہے۔ لہذا SGID کم و بیش وہی کام کرسکتا ہے جو SUID کرتا ہے۔ تاہم، SGID عملی طور پر اس مقصد کے لیے استعمال نہیں ہوتا ہے۔

جیسا کہ SUID کی اجازت کے ساتھ، SGID کا اطلاق کچھ سسٹم فائلوں پر بطور ڈیفالٹ سیٹنگ ہوتا ہے۔

ڈائرکٹری پر لاگو ہونے پر، SGID مفید ہو سکتا ہے کیونکہ آپ اسے اس ڈائرکٹری میں بنائی گئی فائلوں اور ذیلی ڈائرکٹریز کے لیے ڈیفالٹ گروپ کے مالک کو سیٹ کرنے کے لیے استعمال کر سکتے ہیں۔ پہلے سے طے شدہ طور پر، جب کوئی صارف فائل بناتا ہے، تو اس کا موثر بنیادی گروپ اس فائل کے لیے گروپ کے مالک کے طور پر سیٹ کیا جاتا ہے۔

یہ ہمیشہ زیادہ کارآمد نہیں ہوتا ہے، خاص طور پر چونکہ Red Hat/CentOS صارفین نے اپنے بنیادی گروپ کو صارف کے نام کے ساتھ ایک گروپ میں سیٹ کیا ہے، اور جس میں سے صارف واحد رکن ہے۔ اس طرح، ڈیفالٹ کے طور پر، صارف جو فائلیں بناتا ہے وہ بڑی تعداد میں شیئر کی جائیں گی۔

ایسی صورتحال کا تصور کریں جہاں صارف لنڈا اور لوری اکاؤنٹنگ میں کام کرتے ہیں اور ایک گروپ کے ممبر ہیں۔ اکاؤنٹ. پہلے سے طے شدہ طور پر، یہ صارفین ایک پرائیویٹ گروپ کے ممبر ہوتے ہیں جس کے وہ واحد ممبر ہوتے ہیں۔ تاہم، دونوں صارفین اکاؤنٹ گروپ کے ممبر ہیں، بلکہ ثانوی گروپ پیرامیٹر کے طور پر بھی۔

پہلے سے طے شدہ صورتحال یہ ہے کہ جب ان میں سے کوئی بھی صارف فائل بناتا ہے تو بنیادی گروپ مالک بن جاتا ہے۔ لہذا، ڈیفالٹ کے طور پر، لنڈا لوری کی طرف سے بنائی گئی فائلوں تک رسائی حاصل نہیں کر سکتی، اور اس کے برعکس۔ تاہم، اگر آپ مشترکہ گروپ ڈائرکٹری بناتے ہیں (کہیں کہ /گروپز/اکاؤنٹ) اور اس بات کو یقینی بناتے ہیں کہ اس ڈائرکٹری پر ایس جی آئی ڈی کی اجازت کا اطلاق ہوتا ہے اور گروپ اکاؤنٹ کو اس ڈائرکٹری کے لیے گروپ کے مالک کے طور پر سیٹ کیا جاتا ہے، اس ڈائریکٹری میں بنائی گئی تمام فائلیں اور تمام اس کی ذیلی ڈائریکٹریوں میں سے، گروپ اکاؤنٹ کو بطور گروپ مالک بطور ڈیفالٹ حاصل کریں۔

اس وجہ سے، SGID اجازت عوامی گروپ ڈائریکٹریز پر سیٹ کرنے کے لیے ایک بہت مفید اجازت ہے۔

SGID اجازت آؤٹ پٹ میں دکھائی گئی ہے۔ ایل ایس ایل کے طور پر s اس پوزیشن پر جہاں آپ کو عام طور پر کسی گروپ کو انجام دینے کی اجازت ملے گی:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

خصوصی اجازتوں کا تیسرا چپچپا بٹ ہے۔ یہ اجازت ایسے ماحول میں فائلوں کو حادثاتی طور پر حذف ہونے سے بچانے کے لیے مفید ہے جہاں ایک سے زیادہ صارفین کو ایک ہی ڈائریکٹری تک تحریری رسائی حاصل ہے۔ اگر کوئی چسپاں بٹ استعمال کیا جاتا ہے، تو صارف صرف اس صورت میں فائل کو حذف کر سکتا ہے جب وہ فائل یا ڈائریکٹری کے صارف مالک ہوں جس میں فائل موجود ہو۔ اس وجہ سے، یہ /tmp ڈائریکٹری کے لیے پہلے سے طے شدہ اجازت کے طور پر استعمال ہوتا ہے اور عوامی گروپ ڈائریکٹریز کے لیے بھی مفید ہو سکتا ہے۔

چپچپا بٹ کے بغیر، اگر صارف کسی ڈائریکٹری میں فائلیں بنا سکتا ہے، تو وہ اس ڈائریکٹری سے فائلوں کو بھی حذف کر سکتا ہے۔ عوامی گروپ کے ماحول میں، یہ پریشان کن ہو سکتا ہے۔ لنڈا اور لوری کے صارفین کا تصور کریں، جن کے پاس /data/account ڈائریکٹری میں لکھنے کی اجازت ہے اور وہ اکاؤنٹ گروپ کے ممبر بن کر یہ اجازتیں حاصل کرتے ہیں۔ لہذا، لنڈا لوری کی طرف سے بنائی گئی فائلوں کو حذف کر سکتی ہے اور اس کے برعکس۔

جب آپ سٹکی بٹ کا اطلاق کرتے ہیں، تو صارف صرف اس صورت میں فائلوں کو حذف کر سکتا ہے جب درج ذیل شرائط میں سے کوئی ایک درست ہو:

  • صارف فائل کا مالک ہے؛
  • صارف اس ڈائریکٹری کا مالک ہے جہاں فائل واقع ہے۔

استعمال کرتے وقت ایل ایس ایل، آپ چپچپا بٹ کو بطور دیکھ سکتے ہیں۔ t اس پوزیشن میں جہاں آپ عام طور پر دوسروں کے لیے پھانسی کی اجازت دیکھیں گے:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

توسیعی حقوق کا اطلاق کرنا

SUID، SGID اور سٹکی بٹ لگانے کے لیے آپ بھی استعمال کر سکتے ہیں۔ chmod. SUID کی عددی قدر 4 ہے، SGID کی عددی قدر 2 ہے، اور سٹکی بٹ کی عددی قدر 1 ہے۔

اگر آپ ان اجازتوں کو لاگو کرنا چاہتے ہیں، تو آپ کو چار ہندسوں کی دلیل شامل کرنے کی ضرورت ہے۔ chmodجس کا پہلا ہندسہ خصوصی اجازتوں کا حوالہ دیتا ہے۔ درج ذیل لائن، مثال کے طور پر، ڈائرکٹری میں SGID اجازت شامل کرے گی اور صارف کے لیے rwx اور گروپ اور دیگر کے لیے rx سیٹ کرے گی۔

chmod 2755 /somedir

اگر آپ کو موجودہ اجازتوں کو دیکھنے کی ضرورت ہے جو کام کرنے سے پہلے سیٹ کی گئی ہیں تو یہ غیر عملی ہے۔ chmod مطلق موڈ میں. (اگر آپ ایسا نہیں کرتے ہیں تو آپ اجازتوں کو اوور رائٹنگ کرنے کا خطرہ چلاتے ہیں۔) لہذا اگر آپ کو کسی خاص اجازت کو لاگو کرنے کی ضرورت ہو تو میں رشتہ دار موڈ میں چلانے کی سفارش کرتا ہوں:

  1. SUID کے استعمال کے لیے chmod u+s.
  2. SGID استعمال کے لیے chmod g+s.
  3. چپچپا سا استعمال کے لیے chmod +t، اس کے بعد اس فائل یا ڈائرکٹری کا نام آتا ہے جس کے لیے آپ اجازتیں سیٹ کرنا چاہتے ہیں۔

جدول ہر چیز کا خلاصہ کرتا ہے جو آپ کو خصوصی اجازتوں کے انتظام کے بارے میں جاننے کی ضرورت ہے۔

لینکس میں اجازتیں (chown، chmod، SUID، GUID، سٹکی بٹ، ACL، umask)

خصوصی حقوق کے ساتھ کام کرنے کی مثال

اس مثال میں، آپ گروپ ممبران کے لیے مشترکہ گروپ ڈائرکٹری میں فائلوں کا اشتراک آسان بنانے کے لیے خصوصی اجازتیں استعمال کرتے ہیں۔ آپ ID بٹ کو سیٹ گروپ ID کے ساتھ ساتھ سٹکی بٹ کو تفویض کرتے ہیں، اور آپ دیکھتے ہیں کہ ایک بار جب وہ سیٹ ہو جاتے ہیں، تو خصوصیات شامل کر دی جاتی ہیں تاکہ گروپ ممبران کے ساتھ مل کر کام کرنا آسان ہو جائے۔

  1. ایک ٹرمینل کھولیں جہاں آپ لنڈا صارف ہیں۔ آپ کمانڈ کے ساتھ صارف بنا سکتے ہیں۔ useradd لنڈا، پاس ورڈ شامل کریں۔ پاس ڈبلیو ڈی لنڈا.
  2. روٹ میں /data ڈائریکٹری اور کمانڈ کے ساتھ /data/sales سب ڈائرکٹری بنائیں mkdir -p /data/sales. مکمل cd/data/salesسیلز ڈائرکٹری میں جانے کے لیے۔ مکمل لنڈا 1 کو ٹچ کریں۔ и لنڈا 2 کو ٹچ کریں۔لنڈا کی ملکیت والی دو خالی فائلیں بنانے کے لیے۔
  3. چلائیں su-lisa موجودہ صارف کو صارف لیزا میں تبدیل کرنے کے لیے، جو سیلز گروپ کا رکن بھی ہے۔
  4. چلائیں cd/data/sales اور اس ڈائریکٹری سے عمل کریں۔ ایل ایس ایل. آپ کو دو فائلیں نظر آئیں گی جو لنڈا صارف نے بنائی ہیں اور ان کا تعلق لنڈا گروپ سے ہے۔ مکمل rm -f لنڈا*. یہ دونوں فائلوں کو ہٹا دے گا۔
  5. چلائیں لیزا 1 کو ٹچ کریں۔ и لیزا 2 کو ٹچ کریں۔دو فائلیں بنانے کے لیے جو صارف لیزا کی ملکیت ہیں۔
  6. چلائیں su- اپنے مراعات کو جڑ تک بلند کرنے کے لیے۔
  7. چلائیں chmod g+s,o+t /data/salesمشترکہ گروپ ڈائرکٹری میں گروپ شناخت کنندہ (GUID) بٹ کے ساتھ ساتھ سٹکی بٹ سیٹ کرنے کے لیے۔
  8. چلائیں su-لنڈا. پھر کرو لنڈا 3 کو ٹچ کریں۔ и لنڈا 4 کو ٹچ کریں۔. اب آپ کو یہ دیکھنا چاہیے کہ آپ کی بنائی ہوئی دو فائلیں سیلز گروپ کی ملکیت ہیں، جو کہ /data/sales ڈائریکٹری کا گروپ مالک ہے۔
  9. چلائیں rm -rf لیزا*. چسپاں بٹ ان فائلوں کو لنڈا صارف کی جانب سے حذف ہونے سے روکتا ہے، کیونکہ آپ ان فائلوں کے مالک نہیں ہیں۔ نوٹ کریں کہ اگر لنڈا صارف /data/sales ڈائریکٹری کا مالک ہے، تو وہ ان فائلوں کو بہرحال حذف کر سکتا ہے!

لینکس میں ACL مینجمنٹ (setfacl، getfacl)

اگرچہ اوپر زیر بحث توسیعی اجازتیں لینکس کے اجازتوں کو سنبھالنے کے طریقے میں مفید فعالیت کا اضافہ کرتی ہیں، یہ آپ کو ایک ہی فائل میں ایک سے زیادہ صارف یا گروپ کو اجازت دینے کی اجازت نہیں دیتی ہے۔

رسائی کنٹرول فہرستیں یہ خصوصیت پیش کرتی ہیں۔ اس کے علاوہ، وہ منتظمین کو ایک پیچیدہ طریقے سے طے شدہ اجازتیں سیٹ کرنے کی اجازت دیتے ہیں، جہاں سیٹ کی اجازتیں ڈائرکٹری سے ڈائرکٹری میں مختلف ہو سکتی ہیں۔

ACLs کو سمجھنا

اگرچہ ACL سب سسٹم آپ کے سرور میں زبردست فعالیت کا اضافہ کرتا ہے، لیکن اس کا ایک نقصان ہے: تمام یوٹیلیٹیز اس کی حمایت نہیں کرتی ہیں۔ لہذا، جب آپ فائلوں کو کاپی یا منتقل کرتے ہیں تو آپ اپنی ACL سیٹنگز کھو سکتے ہیں، اور آپ کا بیک اپ سافٹ ویئر آپ کی ACL سیٹنگز کا بیک اپ لینے میں ناکام ہو سکتا ہے۔

ٹار یوٹیلیٹی ACLs کو سپورٹ نہیں کرتی ہے۔ اس بات کو یقینی بنانے کے لیے کہ جب آپ بیک اپ بناتے ہیں تو ACL سیٹنگز ضائع نہ ہوں، استعمال کریں۔ ستارہ ٹار کے بجائے. ستارہ ٹار جیسے ہی اختیارات کے ساتھ کام کرتا ہے۔ یہ صرف ACL ترتیبات کے لیے تعاون کا اضافہ کرتا ہے۔

آپ اس کے ساتھ ACLs کا بیک اپ بھی لے سکتے ہیں۔ getfacl، جسے setfacl کمانڈ کا استعمال کرکے بحال کیا جاسکتا ہے۔ بیک اپ بنانے کے لیے، استعمال کریں۔ getfacl -R /directory> file.acls. بیک اپ فائل سے سیٹنگز کو بحال کرنے کے لیے، استعمال کریں۔ setfacl --restore=file.acl.

کچھ ٹولز کے ذریعہ تعاون کی کمی کوئی مسئلہ نہیں ہونا چاہئے۔ ACLs اکثر انفرادی فائلوں کے بجائے ایک ساختی پیمائش کے طور پر ڈائریکٹریز پر لاگو ہوتے ہیں۔
لہذا، ان میں سے بہت سے نہیں ہوں گے، لیکن صرف چند، فائل سسٹم میں سمارٹ جگہوں پر لاگو ہوتے ہیں. لہذا، آپ کے ساتھ کام کرنے والے اصل ACLs کو بحال کرنا نسبتاً آسان ہے، یہاں تک کہ اگر آپ کا بیک اپ سافٹ ویئر ان کی حمایت نہیں کرتا ہے۔

ACLs کے لیے فائل سسٹم کی تیاری

ACLs کے ساتھ کام شروع کرنے سے پہلے، آپ کو ACLs کو سپورٹ کرنے کے لیے اپنے فائل سسٹم کو تیار کرنے کی ضرورت پڑ سکتی ہے۔ چونکہ فائل سسٹم میٹا ڈیٹا کو بڑھانے کی ضرورت ہے، فائل سسٹم میں ACLs کے لیے ہمیشہ ڈیفالٹ سپورٹ نہیں ہوتا ہے۔ اگر آپ کو فائل سسٹم کے لیے ACLs ترتیب دیتے وقت "آپریشن ناٹ سپورٹڈ" پیغام ملتا ہے، تو ہو سکتا ہے آپ کا فائل سسٹم ACLs کو سپورٹ نہ کرے۔

اسے ٹھیک کرنے کے لیے آپ کو آپشن شامل کرنا ہوگا۔ acl ماؤنٹ /etc/fstab میں تاکہ فائل سسٹم کو ACL سپورٹ کے ساتھ بطور ڈیفالٹ لگایا جائے۔

سیٹفاکل اور گیٹ فیکل کے ساتھ ACL سیٹنگز کو تبدیل کرنا اور دیکھنا

ACL سیٹ کرنے کے لیے آپ کو کمانڈ کی ضرورت ہے۔ سیٹفاکل. موجودہ ACL ترتیبات کو دیکھنے کے لیے، آپ کو ضرورت ہے۔ getfacl. ٹیم ایل ایس ایل کوئی موجودہ ACLs نہیں دکھاتا ہے۔ یہ اجازت کی فہرست کے بعد صرف + دکھاتا ہے، جس سے ظاہر ہوتا ہے کہ ACLs فائل پر بھی لاگو ہوتے ہیں۔

ACLs ترتیب دینے سے پہلے، موجودہ ACL کی ترتیبات کو اس کے ساتھ دکھانا ہمیشہ اچھا خیال ہوتا ہے۔ getfacl. ذیل کی مثال میں، آپ موجودہ اجازتیں دیکھ سکتے ہیں، جیسا کہ دکھایا گیا ہے۔ ایل ایس ایل، اور بھی جیسا کہ دکھایا گیا ہے۔ getfacl. اگر آپ کافی قریب سے دیکھیں تو آپ دیکھیں گے کہ دکھائی گئی معلومات بالکل ایک جیسی ہے۔

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

کمانڈ پر عمل درآمد کے نتیجے میں getfacl ذیل میں آپ دیکھ سکتے ہیں کہ اجازتیں تین مختلف اشیاء کے لیے دکھائی گئی ہیں: صارف، گروپ اور دیگر۔ اب سیلز گروپ کو پڑھنے اور عمل کرنے کی اجازت دینے کے لیے ایک ACL شامل کریں۔ اس کے لئے حکم setfacl -mg:sales:rx/dir. اس ٹیم میں -m اشارہ کرتا ہے کہ موجودہ ACL ترتیبات کو تبدیل کرنے کی ضرورت ہے۔ اس کے بعد g:sales:rx کمانڈ کو ریڈ ایگزیکیوٹ ACL (rxگروپ کے لیے (g) فروخت۔ ذیل میں آپ دیکھ سکتے ہیں کہ کمانڈ کیسی دکھتی ہے، نیز موجودہ ACL سیٹنگز کو تبدیل کرنے کے بعد getfacl کمانڈ کا آؤٹ پٹ۔

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

اب جب کہ آپ سمجھ گئے ہیں کہ گروپ ACL کیسے ترتیب دیا جائے، صارفین اور دیگر صارفین کے لیے ACLs کو سمجھنا آسان ہے۔ مثال کے طور پر، حکم setfacl -mu:linda:rwx/data صارف لنڈا کو /data ڈائریکٹری میں اسے مالک بنائے بغیر یا موجودہ مالک کی تفویض کو تبدیل کیے بغیر اجازت دیتا ہے۔

ٹیم سیٹفاکل بہت سے خصوصیات اور اختیارات ہیں. ایک آپشن خاص طور پر اہم ہے، پیرامیٹر -R. اگر استعمال کیا جاتا ہے تو، آپشن تمام فائلوں اور ذیلی ڈائریکٹریوں کے لیے ACL سیٹ کرتا ہے جو فی الحال اس ڈائریکٹری میں موجود ہیں جہاں آپ ACL سیٹ کرتے ہیں۔ یہ تجویز کیا جاتا ہے کہ آپ موجودہ ڈائریکٹریز کے لیے ACLs کو تبدیل کرتے وقت ہمیشہ یہ اختیار استعمال کریں۔

ڈیفالٹ ACLs کے ساتھ کام کرنا

ACLs استعمال کرنے کا ایک فائدہ یہ ہے کہ آپ ڈائرکٹری میں متعدد صارفین یا گروپس کو اجازت دے سکتے ہیں۔ دوسرا فائدہ یہ ہے کہ آپ ڈیفالٹ ACLs کے ساتھ کام کرکے وراثت کو فعال کرسکتے ہیں۔

پہلے سے طے شدہ ACL کو ترتیب دے کر، آپ ان اجازتوں کا تعین کرتے ہیں جو ڈائریکٹری میں بنائے گئے تمام نئے آئٹمز کے لیے سیٹ کی جائیں گی۔ آگاہ رہیں کہ پہلے سے طے شدہ ACL موجودہ فائلوں اور ذیلی ڈائریکٹریوں کی اجازتوں کو تبدیل نہیں کرتا ہے۔ انہیں تبدیل کرنے کے لیے، آپ کو ایک عام ACL بھی شامل کرنا ہوگا!

یہ جاننا ضروری ہے۔ اگر آپ ایک ہی ڈائرکٹری تک رسائی کے لیے متعدد صارفین یا گروپس کو ترتیب دینے کے لیے ACL استعمال کرنا چاہتے ہیں، تو آپ کو ACL کو دو بار سیٹ کرنا ہوگا۔ پہلے استعمال کریں۔ setfacl -R -mموجودہ فائلوں کے لیے ACL کو تبدیل کرنے کے لیے۔ پھر استعمال کریں۔ setfacl-md:تمام نئے عناصر کا خیال رکھنا جو بھی بنائے جائیں گے۔

ڈیفالٹ ACL سیٹ کرنے کے لیے آپ کو صرف آپشن شامل کرنے کی ضرورت ہے۔ d اختیار کے بعد -m (حکم کے معاملات!) تو استعمال کریں۔ setfacl -md:g:sales:rx/dataاگر آپ چاہتے ہیں کہ گروپ سیلز /ڈیٹا ڈائرکٹری میں جو کچھ بھی بنایا گیا ہو اسے پڑھے اور اس پر عمل درآمد کرے۔

پہلے سے طے شدہ ACLs استعمال کرتے وقت، دوسروں کے لیے ACL سیٹ کرنا بھی مفید ہو سکتا ہے۔ یہ عام طور پر زیادہ معنی نہیں رکھتا کیونکہ آپ دوسروں کے استعمال کی اجازتوں کو بھی تبدیل کر سکتے ہیں۔ chmod. تاہم، آپ کے ساتھ کیا نہیں کر سکتے ہیں chmod, ان حقوق کی وضاحت کرنا ہے جو دوسرے صارفین کو ہر نئی فائل کے لیے دیے جانے چاہییں جو کبھی بنائی گئی ہو۔ اگر آپ دوسروں کو کسی بھی چیز پر اجازت حاصل کرنے سے روکنا چاہتے ہیں تو مثال کے طور پر /data میں استعمال کریں۔ setfacl -md:o::- /data.

ACLs اور عام اجازتیں ہمیشہ اچھی طرح سے مربوط نہیں ہوتی ہیں۔ اگر آپ کسی ڈائرکٹری میں ڈیفالٹ ACL لگاتے ہیں تو مسائل پیدا ہو سکتے ہیں، پھر اس ڈائرکٹری میں آئٹمز شامل کیے جاتے ہیں، اور پھر عام اجازتوں کو تبدیل کرنے کی کوشش کریں۔ عام اجازتوں پر لاگو ہونے والی تبدیلیاں ACL جائزہ میں اچھی طرح سے ظاہر نہیں ہوں گی۔ مسائل سے بچنے کے لیے، پہلے عام اجازتیں سیٹ کریں، پھر ڈیفالٹ ACL سیٹ کریں (اور اس کے بعد انہیں دوبارہ تبدیل نہ کرنے کی کوشش کریں)۔

ACLs کا استعمال کرتے ہوئے بلند حقوق کے انتظام کی مثال

اس مثال میں، آپ /data/account اور /data/sales ڈائریکٹریز کے ساتھ جاری رکھیں گے جو آپ نے پہلے بنائی ہیں۔ پچھلی مثالوں میں، آپ نے یقینی بنایا کہ سیلز گروپ کو /data/sales پر اجازت ہے اور اکاؤنٹ گروپ کو /data/account پر اجازت ہے۔

سب سے پہلے، یہ یقینی بنائیں کہ اکاؤنٹ گروپ کو /data/sales ڈائریکٹری پر پڑھنے کی اجازت ملتی ہے اور سیلز گروپ کو /data/account ڈائریکٹری پر پڑھنے کی اجازت ملتی ہے۔

اس کے بعد آپ یہ یقینی بنانے کے لیے ڈیفالٹ ACL سیٹ کرتے ہیں کہ تمام نئی فائلوں میں تمام نئی آئٹمز کے لیے درست اجازتیں سیٹ ہیں۔

  1. ایک ٹرمینل کھولیں۔
  2. چلائیں setfacl -mg:account:rx/data/sales и setfacl -mg:sales:rx /data/account.
  3. چلائیں getfaclیہ یقینی بنانے کے لیے کہ اجازتیں آپ کی مرضی کے مطابق ترتیب دی گئی ہیں۔
  4. چلائیں setfacl -md:g:account:rwx,g:sales:rx /data/salesسیلز ڈائرکٹری کے لیے ڈیفالٹ ACL سیٹ کرنے کے لیے۔
  5. استعمال کرتے ہوئے /data/account ڈائریکٹری کے لیے ڈیفالٹ ACL شامل کریں۔ setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. /data/sales میں ایک نئی فائل شامل کرکے تصدیق کریں کہ ACL سیٹنگز لاگو ہیں۔ مکمل ٹچ /data/sales/newfile اور کرو getfacl/data/sales/newfile موجودہ اجازتوں کو چیک کرنے کے لیے۔

umask کے ساتھ پہلے سے طے شدہ اجازتیں ترتیب دینا

اوپر، آپ نے ڈیفالٹ ACLs کے ساتھ کام کرنے کا طریقہ سیکھا۔ اگر آپ ACL استعمال نہیں کر رہے ہیں، تو ایک شیل آپشن موجود ہے جو طے کرتا ہے کہ آپ کو ملنے والی ڈیفالٹ اجازتیں: عماسک (ریورس ماسک)۔ اس سیکشن میں، آپ سیکھیں گے کہ ڈیفالٹ اجازتوں کو کس طرح تبدیل کرنا ہے۔ عماسک.

آپ نے دیکھا ہو گا کہ جب آپ نئی فائل بناتے ہیں تو کچھ طے شدہ اجازتیں سیٹ ہو جاتی ہیں۔ ان اجازتوں کا تعین ترتیب سے کیا جاتا ہے۔ عماسک. یہ شیل ترتیب لاگ ان کے تمام صارفین پر لاگو ہوتی ہے۔ پیرامیٹر میں عماسک ایک عددی قدر استعمال کی جاتی ہے، جسے زیادہ سے زیادہ اجازتوں سے منہا کر دیا جاتا ہے جو فائل کے لیے خود بخود سیٹ ہو سکتی ہیں۔ فائلوں کے لیے زیادہ سے زیادہ ترتیب 666 ہے اور ڈائریکٹریز کے لیے 777 ہے۔

تاہم، کچھ استثناء اس اصول پر لاگو ہوتے ہیں۔ آپ ترتیبات کا مکمل جائزہ تلاش کر سکتے ہیں۔ عماسک نیچے کی میز میں.

میں استعمال ہونے والے نمبروں میں سے عماسکجیسا کہ کمانڈ کے لیے عددی دلائل کی صورت میں ہے۔ chmod، پہلا ہندسہ صارف کی اجازتوں کا حوالہ دیتا ہے، دوسرا ہندسہ گروپ کی اجازتوں کا حوالہ دیتا ہے، اور آخری سے مراد دوسروں کے لیے طے شدہ طے شدہ اجازتیں ہیں۔ مطلب عماسک پہلے سے طے شدہ 022 تمام نئی فائلوں کے لیے 644 اور آپ کے سرور پر بنائی گئی تمام نئی ڈائریکٹریوں کے لیے 755 دیتا ہے۔

تمام عددی اقدار کا مکمل جائزہ عماسک اور ان کے نتائج درج ذیل جدول میں۔

لینکس میں اجازتیں (chown، chmod، SUID، GUID، سٹکی بٹ، ACL، umask)

یہ دیکھنے کا ایک آسان طریقہ ہے کہ عماسک کی ترتیب کیسے کام کرتی ہے: فائل کی ڈیفالٹ اجازتوں کے ساتھ شروع کریں جو 666 پر سیٹ کی گئی ہے اور مؤثر اجازتیں حاصل کرنے کے لیے umask کو گھٹا دیں۔ ڈائرکٹری اور 777 کی اس کی ڈیفالٹ اجازتوں کے لیے بھی ایسا ہی کریں۔

umask کی ترتیب کو تبدیل کرنے کے دو طریقے ہیں: تمام صارفین کے لیے اور انفرادی صارفین کے لیے۔ اگر آپ تمام صارفین کے لیے umask سیٹ کرنا چاہتے ہیں، تو آپ کو یقینی بنانا چاہیے کہ شیل ماحول کی فائلوں کو شروع کرتے وقت umask کی ترتیب کو مدنظر رکھا جائے، جیسا کہ /etc/profile میں بیان کیا گیا ہے۔ صحیح طریقہ یہ ہے کہ /etc/profile.d ڈائرکٹری میں umask.sh نامی شیل اسکرپٹ بنائیں اور اس شیل اسکرپٹ میں آپ جس umask کو استعمال کرنا چاہتے ہیں اس کی وضاحت کریں۔ اگر اس فائل میں umask کو تبدیل کیا جاتا ہے، تو یہ سرور میں لاگ ان ہونے کے بعد تمام صارفین پر لاگو ہوتا ہے۔

umask کو /etc/profile اور متعلقہ فائلوں کے ذریعے ترتیب دینے کا ایک متبادل، جہاں یہ لاگ ان ہونے والے تمام صارفین پر لاگو ہوتا ہے، .profile نامی فائل میں umask کی ترتیبات کو تبدیل کرنا ہے جو ہر صارف کی ہوم ڈائریکٹری میں بنائی جاتی ہے۔

اس فائل میں لاگو کردہ ترتیبات صرف انفرادی صارف پر لاگو ہوتی ہیں۔ لہذا اگر آپ کو مزید تفصیل کی ضرورت ہو تو یہ ایک اچھا طریقہ ہے۔ مجھے ذاتی طور پر یہ خصوصیت پسند ہے کہ روٹ یوزر کے لیے ڈیفالٹ اماسک کو 027 میں تبدیل کیا جائے جبکہ عام صارفین 022 کے ڈیفالٹ اماسک کے ساتھ چل رہے ہوں۔

توسیعی صارف کی خصوصیات کے ساتھ کام کرنا

یہ لینکس کی اجازتوں کا آخری سیکشن ہے۔

اجازتوں کے ساتھ کام کرتے وقت، صارف یا گروپ آبجیکٹ اور فائل یا ڈائرکٹری پر صارف یا گروپ آبجیکٹ کے پاس موجود اجازتوں کے درمیان ہمیشہ ایک رشتہ ہوتا ہے۔ لینکس سرور پر فائلوں کی حفاظت کا ایک متبادل طریقہ صفات کے ساتھ کام کرنا ہے۔
صارف فائل تک رسائی سے قطع نظر اوصاف اپنا کام کرتے ہیں۔

ACLs کی طرح، فائل کی خصوصیات میں آپشن کو شامل کرنے کی ضرورت پڑ سکتی ہے۔ ادارے.

یہ ایک آپشن ہے۔ user_xattr. اگر آپ کو توسیع شدہ صارف کی خصوصیات کے ساتھ کام کرتے وقت "آپریشن ناٹ سپورٹڈ" کا پیغام ملتا ہے، تو پیرامیٹر سیٹ کرنا یقینی بنائیں ادارے /etc/fstab میں۔

بہت سے اوصاف دستاویزی ہیں۔ کچھ اوصاف دستیاب ہیں لیکن ابھی تک نافذ نہیں ہوئے۔ ان کا استعمال نہ کریں؛ وہ آپ کو کچھ نہیں لائیں گے۔

ذیل میں سب سے مفید اوصاف ہیں جن کا آپ اطلاق کر سکتے ہیں:

A یہ وصف اس بات کو یقینی بناتا ہے کہ فائل کی فائل تک رسائی کا وقت تبدیل نہیں ہوتا ہے۔
عام طور پر، جب بھی فائل کھولی جاتی ہے، فائل کے میٹا ڈیٹا میں فائل تک رسائی کا وقت ریکارڈ کیا جانا چاہیے۔ اس سے کارکردگی پر منفی اثر پڑتا ہے۔ تو ان فائلوں کے لیے جن تک باقاعدگی سے رسائی ہوتی ہے، انتساب A اس خصوصیت کو غیر فعال کرنے کے لیے استعمال کیا جا سکتا ہے۔

a یہ وصف آپ کو فائل کو شامل کرنے لیکن ہٹانے کی اجازت نہیں دیتا ہے۔

c اگر آپ ایک ایسا فائل سسٹم استعمال کر رہے ہیں جو حجم کی سطح کے کمپریشن کو سپورٹ کرتا ہے، تو یہ فائل کا وصف اس بات کو یقینی بناتا ہے کہ پہلی بار کمپریشن میکانزم کے فعال ہونے پر فائل کو کمپریس کیا گیا ہے۔

D یہ وصف اس بات کو یقینی بناتا ہے کہ فائلوں میں ہونے والی تبدیلیاں پہلے کیش کرنے کے بجائے فوری طور پر ڈسک پر لکھی جاتی ہیں۔ یہ اہم ڈیٹا بیس فائلوں پر ایک کارآمد وصف ہے تاکہ یہ یقینی بنایا جا سکے کہ وہ فائل کیش اور ہارڈ ڈرائیو کے درمیان گم نہ ہوں۔

d یہ وصف اس بات کو یقینی بناتا ہے کہ فائل کو بیک اپ میں محفوظ نہیں کیا جائے گا جہاں ڈمپ یوٹیلیٹی استعمال ہوتی ہے۔

I یہ وصف اس ڈائریکٹری کے لیے اشاریہ سازی کو قابل بناتا ہے جس میں یہ فعال ہے۔ یہ Ext3 جیسے قدیم فائل سسٹمز کے لیے تیز تر فائل رسائی فراہم کرتا ہے جو تیز فائل تک رسائی کے لیے B-tree ڈیٹا بیس کا استعمال نہیں کرتے ہیں۔

i یہ وصف فائل کو ناقابل تغیر بناتا ہے۔ لہذا، فائل میں کوئی تبدیلی نہیں کی جا سکتی، جو ان فائلوں کے لیے مفید ہے جن کو اضافی تحفظ کی ضرورت ہے۔

j یہ وصف اس بات کو یقینی بناتا ہے کہ، ایک ext3 فائل سسٹم پر، فائل کو پہلے جرنل اور پھر ہارڈ ڈسک پر ڈیٹا بلاکس پر لکھا جاتا ہے۔

s ان بلاکس کو اوور رائٹ کریں جن میں فائل کو ڈیلیٹ کرنے کے بعد 0s میں محفوظ کیا گیا تھا۔ یہ یقینی بناتا ہے کہ فائل کو حذف کرنے کے بعد اسے بحال نہیں کیا جاسکتا۔

u یہ وصف حذف کرنے کے بارے میں معلومات کو محفوظ کرتا ہے۔ یہ آپ کو ایک ایسی افادیت تیار کرنے کی اجازت دیتا ہے جو حذف شدہ فائلوں کو بچانے کے لیے اس معلومات کے ساتھ کام کرے۔

اگر آپ اوصاف کو لاگو کرنا چاہتے ہیں، تو آپ کمانڈ استعمال کرسکتے ہیں۔ چیٹ. مثال کے طور پر استعمال کریں۔ chattr +s somefilesomefile پر اوصاف کا اطلاق کرنا۔ ایک وصف کو ہٹانے کی ضرورت ہے؟ پھر استعمال کریں۔ chattr -s somefileاور اسے ہٹا دیا جائے گا. ان تمام صفات کا جائزہ لینے کے لیے جو فی الحال لاگو ہیں، کمانڈ استعمال کریں۔ lsattr.

خلاصہ

اس مضمون میں، آپ نے اجازتوں کے ساتھ کام کرنے کا طریقہ سیکھا۔ آپ تین بنیادی اجازتوں، جدید اجازتوں، اور فائل سسٹم پر ACLs کو لاگو کرنے کے طریقہ کے بارے میں پڑھتے ہیں۔ آپ نے پہلے سے طے شدہ اجازتوں کو لاگو کرنے کے لیے umask آپشن کو استعمال کرنے کا طریقہ بھی سیکھا۔ اس آرٹیکل کے آخر میں، آپ نے سیکھا کہ فائل سسٹم سیکیورٹی کی ایک اضافی پرت کو لاگو کرنے کے لیے صارف کی توسیع شدہ صفات کو کیسے استعمال کیا جائے۔

اگر آپ کو یہ ترجمہ پسند آیا ہے، تو براہ کرم اس کے بارے میں تبصروں میں لکھیں۔ مفید ترجمے کرنے کی مزید ترغیب ملے گی۔

مضمون میں ٹائپنگ کی کچھ غلطیاں اور گرامر کی غلطیوں کو درست کیا ہے۔ بہتر پڑھنے کی اہلیت کے لیے کچھ بھاری پیراگراف کو چھوٹے کر دیا۔

اس کے بجائے "صرف ڈائرکٹری کے انتظامی حقوق کے ساتھ کوئی شخص عملدرآمد کی اجازت کا اطلاق کرسکتا ہے۔" "صرف ڈائرکٹری پر لکھنے کی اجازت رکھنے والا ہی عمل درآمد کی اجازت کا اطلاق کرسکتا ہے" پر طے کیا گیا ہے، جو زیادہ درست ہوگا۔

تبصروں کے لیے شکریہ بیریز.

بدل دیا گیا:
اگر آپ صارف کے مالک نہیں ہیں، تو شیل یہ دیکھنے کے لیے چیک کرے گا کہ آیا آپ کسی گروپ کے رکن ہیں، جسے فائل کا گروپ بھی کہا جاتا ہے۔

آن:
اگر آپ فائل کے مالک نہیں ہیں، تو شیل یہ دیکھنے کے لیے چیک کرے گا کہ آیا آپ کسی ایسے گروپ کے رکن ہیں جس کے پاس فائل پر اجازت ہے۔ اگر آپ اس گروپ کے ممبر ہیں، تو آپ اس فائل تک رسائی حاصل کریں گے جس کی اجازت گروپ نے سیٹ کی ہے، اور شیل چیک کرنا بند کر دے گا۔

آپ کی رائے کا شکریہ کرپٹو پائریٹ

ماخذ: www.habr.com

نیا تبصرہ شامل کریں