Ravindra BagaleCourses & study guides English

Linux File Permissions: chmod, chown, chgrp, umask, SUID, SGID आणि Sticky Bit सोप्या भाषेत

Linux मधे प्रत्येक file आणि folder ला एक owner, एक group आणि rights चे तीन sets: owner, group आणि बाकी सगळ्यांसाठी read, write, execute. या chapter मधे ls -l वाचणं, chmod ने (numbers आणि letters) rights बदलणं, chown आणि chgrp ने owners बदलणं, umask ने defaults, आणि SUID, SGID, sticky हे special bits शिकाल.

या chapter मध्ये तुम्ही काय शिकाल

  • ls -l आणि stat मधे permissions वाचा
  • Files आणि folders साठी r, w, x चा अर्थ
  • chmod numbers (755) आणि letters (u+x) ने
  • chown आणि chgrp ने ownership
  • umask ने default rights
  • SUID, SGID आणि sticky bit safely

1. रोजचं उदाहरण: family photo album

हे का लागतं?

आई family album ठेवते. ती बघू शकते, photos टाकू आणि काढू शकते. Family (बाबा, मुलं) बघू आणि photos टाकू शकतात, पण काढू शकत नाहीत. Guests फक्त बघू शकतात. Living room मधल्या table वरचा album shared, पण प्रत्येक जण स्वतः टाकलेलेच photos काढू शकतो.

हे काय आहे?

आई = owner (user). Family = group. Guests = others. बघणं = read (r). टाकणं किंवा काढणं = write (w). Album उघडणं = folder वर execute (x). Shared table rule = sticky bit, /tmp सारखा.

कसं करायचं (step by step)

Linux permission कसं तपासतोProcess (UID आणि groups सह) file उघडतोUID root? मग जवळजवळ नेहमी allowedUID file owner? फक्त owner bitsनाहीतर, त्याचा एखादा group file group? Group bitsनाहीतर other bitsBit आहे: allowed. नाही: Permission denied
फक्त एकच set वापरतात. Owner ला rights नसतील तर others ना असले तरी denied.

2. ls -l: permission string वाचा

हे का लागतं?

प्रत्येक 'Permission denied' ची सुरुवात हे 10 characters वाचून.

हे काय आहे?

-rwxr-x--- म्हणजे: type (- file, d folder, l link), मग owner rwx, group r-x, others ---. मग link count, owner, group, size, date आणि नाव. ls -ld FOLDER folder स्वतः दाखवतो, आतलं नाही. ls -n नावांऐवजी numbers.

जागाउदाहरणअर्थ
1dType: folder
2-4rwxOwner read, write, execute
5-7r-xGroup read आणि execute
8-10---Others ना काही नाही

कसं करायचं (step by step)

  1. एक script.
ls -l deploy.sh

Output:

-rwxr-x--- 1 ravi devs 812 Oct 25 10:10 deploy.sh

याचा अर्थ: ravi पूर्ण, devs वाचू आणि चालवू, others काही नाही.

  1. Folder स्वतः.
ls -ld /srv/shared

Output:

drwxrwsr-x 2 root devs 4096 Oct 25 10:12 /srv/shared

याचा अर्थ: Group x जागी s = SGID (पुढे).

  1. नावं नाहीत, numbers.
ls -ln deploy.sh

Output:

-rwxr-x--- 1 1001 3001 812 Oct 25 10:10 deploy.sh

याचा अर्थ: User delete झाला असेल तेव्हा उपयोगी.

3. Files vs folders वर r, w, x

हे का लागतं?

लोक folder ला r देतात आणि cd का fail होतं ते विचारतात. Folders साठी अर्थ बदलतो.

हे काय आहे?

File: r content वाचा, w content बदला, x program म्हणून चालवा. Folder: r नावं list (ls), w आत entries बनवा, delete, rename, x आत जा आणि आतल्या files पर्यंत पोचा (cd, path ने open). File delete करायला FOLDER वर w लागतो, file वर नाही.

BitFile वरFolder वर
rContent वाचानावं list
wContent बदलाआत add, delete, rename
xचालवाआत जा, पुढे जा

कसं करायचं (step by step)

  1. r आहे पण x नाही.
chmod 744 box && sudo -u priya ls box; sudo -u priya cat box/a.txt

Output:

ls: cannot access 'box/a.txt': Permission denied
a.txt
cat: box/a.txt: Permission denied

याचा अर्थ: नावं दिसतात पण उघडता येत नाहीत.

  1. x आहे पण r नाही.
chmod 711 box && sudo -u priya ls box; sudo -u priya cat box/a.txt

Output:

ls: cannot open directory 'box': Permission denied
hello

याचा अर्थ: List करता येत नाही, पण माहीत नाव उघडता येतं.

  1. Delete ला folder वर w.
ls -ld /etc && rm /etc/passwd-test

Output:

dr-xr-xr-x. ... root root /etc
rm: cannot remove '/etc/passwd-test': Permission denied

याचा अर्थ: इथे file चे bits महत्त्वाचे नाहीत.

4. Numbers (octal) ने chmod

हे का लागतं?

Numbers तिन्ही groups एकदम set करतात आणि docs, tickets हेच वापरतात: 644, 755, 600.

हे काय आहे?

r=4, w=2, x=1. प्रत्येक set साठी बेरीज: 7=rwx, 6=rw-, 5=r-x, 4=r--, 0=---. तीन digits म्हणजे owner, group, others. पुढचा चौथा digit special bits (4 SUID, 2 SGID, 1 sticky). -R पूर्ण tree (जपून).

NumberLettersनेहमीचा उपयोग
644rw-r--r--साध्या files, web pages
600rw-------Private keys, secrets
755rwxr-xr-xScripts, folders
700rwx------Private folders, ~/.ssh
640rw-r-----Group वाचणारी config
775rwxrwxr-xTeam folder

कसं करायचं (step by step)

  1. Key private.
chmod 600 ~/.ssh/id_ed25519 && ls -l ~/.ssh/id_ed25519

Output:

-rw------- 1 ravi ravi 411 Oct 25 id_ed25519

याचा अर्थ: इतरांना वाचता येणारी key SSH नाकारतो.

  1. सगळे चालवू शकतील अशी script.
chmod 755 backup.sh && ls -l backup.sh

Output:

-rwxr-xr-x 1 ravi ravi 540 Oct 25 backup.sh

याचा अर्थ: 7 owner, 5 group, 5 others.

  1. App group वाचू शकेल अशी config.
sudo chmod 640 /etc/billing/db.conf && ls -l /etc/billing/db.conf

Output:

-rw-r----- 1 root billing 210 Oct 25 db.conf

याचा अर्थ: Others ना DB password दिसत नाही.

  1. हे कधीच नको.
chmod -R 777 /var/www

Output:

(no output)

याचा अर्थ: कोणीही site बदलू शकतो. Folders 755, files 644.

5. Letters (symbolic) ने chmod

हे का लागतं?

अनेकदा बाकीला हात न लावता एक right जोडायचा किंवा काढायचा, जसं script runnable.

हे काय आहे?

कोण: u owner, g group, o others, a all. Action: + जोडा, - काढा, = नेमकं set. काय: r w x, X (फक्त folders किंवा आधीच executable files ला x), s, t. Combine: chmod u=rwx,g=rx,o= file.

कसं करायचं (step by step)

  1. Script runnable.
chmod u+x run.sh && ls -l run.sh

Output:

-rwxr--r-- 1 ravi ravi 120 Oct 25 run.sh

याचा अर्थ: फक्त owner ला x.

  1. Others चे rights काढा.
chmod o-rwx salary.xlsx && ls -l salary.xlsx

Output:

-rw-r----- 1 hr hr 88K Oct 25 salary.xlsx

याचा अर्थ: Others चं सगळं गेलं.

  1. नेमकं set.
chmod u=rw,g=r,o= report.pdf && stat -c '%A %a' report.pdf

Output:

-rw-r----- 640

याचा अर्थ: = त्या set चे जुने bits बदलतो.

  1. एका command मधे web tree fix.
chmod -R u=rwX,g=rX,o=rX /var/www/site

Output:

(no output)

याचा अर्थ: Capital X फक्त folders ला x, म्हणून files 644, folders 755.

chmod सविस्तर: numeric vs symbolic शेजारी

हे का लागतं?

Docs आणि scripts मधे दोन्ही forms दिसतात. एक वाचून दुसरं लिहिता आलं पाहिजे.

हे काय आहे?

Numeric सगळे bits एकदम set करतो (r=4, w=2, x=1). Symbolic फक्त सांगितलेलं बदलतो (u g o a, + - =). दोन्हींना folder tree साठी -R.

नेहमीचे options

Optionकाय करतो
644 = u=rw,g=r,o=rसाधी file.
755 = u=rwx,g=rx,o=rxScript किंवा folder ज्यात others जाऊ शकतात.
600 = u=rw,go=Secret file.
700 = u=rwx,go=Private folder.
g+wफक्त group ला write; बाकी तसंच.
-RFolder मधल्या सगळ्यावर.

कसं करायचं (step by step)

  1. सुरुवात तपासा.
ls -l plan.txt

Output:

-rw-r--r-- 1 arjun team 900 Oct 25 plan.txt

याचा अर्थ: आत्ता 644.

  1. Symbolic ने group write.
chmod g+w plan.txt && stat -c %a plan.txt

Output:

664

याचा अर्थ: फक्त group भाग बदलला.

  1. Numbers ने नेमके rights.
chmod 640 plan.txt && ls -l plan.txt

Output:

-rw-r----- 1 arjun team 900 Oct 25 plan.txt

याचा अर्थ: Owner rw, group r, others काही नाही.

  1. तोच result symbolic form मधे.
chmod u=rw,g=r,o= plan.txt && stat -c %a plan.txt

Output:

640

याचा अर्थ: दोन मार्ग, एक result.

खालच्या tasks मधे सराव करा: सराव tasks

6. stat: नेमक्या permissions आणि times

हे का लागतं?

ls number आणि काही details लपवतो. stat octal mode, owner IDs आणि तिन्ही times दाखवतो.

हे काय आहे?

stat FILE size, inode, mode, UID/GID आणि access/modify/change times. stat -c '%a %U %G %n' custom line: %a octal, %A letters, %U owner, %G group.

कसं करायचं (step by step)

  1. पूर्ण details.
stat /etc/passwd | sed -n '1p;4p'

Output:

  File: /etc/passwd
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

याचा अर्थ: Numbers मधे 0644.

  1. अनेक files साठी short form.
stat -c '%a %U:%G %n' /etc/shadow /etc/sudoers

Output:

0 root:root /etc/shadow
440 root:root /etc/sudoers

याचा अर्थ: Audits साठी छान.

7. chown: owner आणि group बदला

हे का लागतं?

Root ने copy केलेल्या files, web server चे uploads, किंवा restored backups चुकीच्या owner चे होतात आणि app लिहू शकत नाही.

हे काय आहे?

sudo chown USER FILE owner बदलतो. chown USER:GROUP FILE दोन्ही. chown :GROUP FILE फक्त group. -R tree. --reference=OTHER दुसऱ्या file चा owner. Files दुसऱ्याला फक्त root देऊ शकतो.

कसं करायचं (step by step)

  1. App folder app user ला.
sudo chown -R deploy:deploy /srv/app && ls -ld /srv/app

Output:

drwxr-xr-x 5 deploy deploy 4096 Oct 25 /srv/app

याचा अर्थ: आतलं सगळं deploy चं.

  1. Uploads साठी owner आणि group.
sudo chown nginx:www /srv/app/uploads

Output:

(no output)

याचा अर्थ: Web server uploads लिहू शकतो.

  1. Normal user देऊ शकत नाही.
chown priya notes.txt

Output:

chown: changing ownership of 'notes.txt': Operation not permitted

याचा अर्थ: Owner फक्त root बदलू शकतो.

  1. दुसऱ्या file चं ownership.
sudo chown --reference=/etc/nginx/nginx.conf /etc/nginx/conf.d/shop.conf

Output:

(no output)

याचा अर्थ: nginx.conf सारखेच owner आणि group.

chown सविस्तर: user:group आणि -R

हे का लागतं?

Web servers, apps, teams ना योग्य owner लागतो. चुकीचा owner असेल तर चांगल्या chmod bits नंतरही "Permission denied".

हे काय आहे?

chown USER file owner set करतो. USER:GROUP दोन्ही. :GROUP फक्त group. -R संपूर्ण tree. Owner बदलायला sudo लागतो.

नेहमीचे options

Optionकाय करतो
chown user fफक्त owner.
chown user:group fOwner आणि group.
chown :group fफक्त group (chgrp सारखं).
chown user: fOwner, आणि group = त्या user चा main group.
-Rसंपूर्ण folder tree.
-v / -cप्रत्येक बदल / फक्त खरे बदल print.

कसं करायचं (step by step)

  1. Owner कोण ते बघा.
ls -l /srv/blog/index.html

Output:

-rw-r--r-- 1 root root 2.1K Oct 25 /srv/blog/index.html

याचा अर्थ: root owner आहे, म्हणून app user edit करू शकत नाही.

  1. Owner आणि group एकत्र.
sudo chown -v www-data:www-data /srv/blog/index.html

Output:

changed ownership of '/srv/blog/index.html' from root:root to www-data:www-data

याचा अर्थ: एका command मधे दोन्ही बदलले.

  1. फक्त group.
sudo chown :editors /srv/blog/drafts && ls -ld /srv/blog/drafts

Output:

drwxrwxr-x 2 www-data editors 4096 Oct 25 /srv/blog/drafts

याचा अर्थ: Owner तसाच, group editors.

  1. -R ने संपूर्ण tree, फक्त खरे बदल.
sudo chown -Rc www-data:www-data /srv/blog

Output:

changed ownership of '/srv/blog/drafts' from www-data:editors to www-data:www-data

याचा अर्थ: -c ने फक्त खरं बदललेलं दाखवलं.

खालच्या tasks मधे सराव करा: सराव tasks

8. chgrp: फक्त group बदला

हे का लागतं?

Team folder team group चा हवा म्हणजे सगळ्या members ना group rights.

हे काय आहे?

chgrp GROUP FILE group बदलतो. File आपली असेल आणि नव्या group चे member असाल तर normal user पण करू शकतो. -R tree.

कसं करायचं (step by step)

  1. Report finance ला.
chgrp finance q3.xlsx && ls -l q3.xlsx

Output:

-rw-r----- 1 ravi finance 40K Oct 25 q3.xlsx

याचा अर्थ: Finance members आता वाचू शकतात.

  1. Member नाही.
chgrp hr q3.xlsx

Output:

chgrp: changing group of 'q3.xlsx': Operation not permitted

याचा अर्थ: hr मधे हवं, किंवा sudo.

9. umask: नव्या files चे default rights

हे का लागतं?

App किंवा user ने बनवलेल्या files ना rights umask मधून. चुकीचा umask secrets world-readable करतो, किंवा team files वाचता येत नाहीत.

हे काय आहे?

नव्या files 666 पासून, folders 777 पासून, आणि umask bits काढले जातात. umask 022 ने files 644, folders 755. umask 027 ने 640 आणि 750. umask 077 ने 600 आणि 700. umask -S letters. ~/.bashrc, /etc/login.defs किंवा systemd unit (UMask=) मधे set.

umaskनवी fileनवा folder
022644755
002664775
027640750
077600700

कसं करायचं (step by step)

  1. तुमचा umask.
umask; umask -S

Output:

0022
u=rwx,g=rx,o=rx

याचा अर्थ: नेहमीचा default.

  1. Action मधे बघा.
umask 077; touch secret.txt; mkdir private; ls -ld secret.txt private

Output:

-rw------- 1 ravi ravi 0 secret.txt
drwx------ 2 ravi ravi 4096 private

याचा अर्थ: फक्त तुम्ही.

  1. Team साठी umask.
umask 002; touch shared.txt; ls -l shared.txt

Output:

-rw-rw-r-- 1 ravi devs 0 shared.txt

याचा अर्थ: Group पण लिहू शकतो.

  1. Service साठी set.
sudo systemctl edit billing  # add: [Service] UMask=0027

Output:

(editor opens)

याचा अर्थ: Service च्या files 640.

10. SUID (4000): file owner म्हणून चालवा

हे का लागतं?

passwd ला /etc/shadow लिहायचं, जे फक्त root करू शकतो. SUID normal user ला तो program root च्या power ने चालवू देतो, फक्त त्या program पुरता.

हे काय आहे?

Executable वर SUID असेल तर तो owner च्या UID ने चालतो. Owner x जागी s दिसतो (x नसेल तर S). chmod u+s किंवा chmod 4755 ने. Scripts वर आणि nosuid mount वर ignore. प्रत्येक extra SUID binary attack target: audit करा.

कसं करायचं (step by step)

  1. Classic उदाहरण.
ls -l /usr/bin/passwd

Output:

-rwsr-xr-x. 1 root root 32648 /usr/bin/passwd

याचा अर्थ: s: प्रत्येक user साठी root म्हणून.

  1. सगळ्या SUID files.
sudo find / -xdev -perm -4000 -type f 2>/dev/null | head -4

Output:

/usr/bin/passwd
/usr/bin/sudo
/usr/bin/su
/usr/bin/mount

याचा अर्थ: Known-good list शी compare.

  1. Risky copy वरून SUID काढा.
sudo chmod u-s /opt/tools/oldping && ls -l /opt/tools/oldping

Output:

-rwxr-xr-x 1 root root 7k oldping

याचा अर्थ: आता root म्हणून नाही.

11. SGID (2000): group inheritance

हे का लागतं?

Team folder मधे प्रत्येकाने बनवलेल्या files त्याच्या group च्या होतात, आणि teammates edit करू शकत नाहीत. Folder वर SGID हे fix करतो.

हे काय आहे?

Folder वर SGID असेल तर आतल्या नव्या files आणि folders folder चा group घेतात (नव्या sub-folders ना पण SGID). Program वर तो file च्या group ने चालतो. Group x जागी s. chmod g+s किंवा chmod 2775.

कसं करायचं (step by step)

  1. Team folder.
sudo mkdir /srv/devs && sudo chgrp devs /srv/devs && sudo chmod 2775 /srv/devs && ls -ld /srv/devs

Output:

drwxrwsr-x 2 root devs 4096 Oct 25 /srv/devs

याचा अर्थ: Group भागात s.

  1. नव्या files ना team group.
touch /srv/devs/plan.md && ls -l /srv/devs/plan.md

Output:

-rw-rw-r-- 1 ravi devs 0 Oct 25 plan.md

याचा अर्थ: Group devs, ravi नाही.

  1. umask 002 सोबत.
umask 002; echo hi > /srv/devs/notes.txt; ls -l /srv/devs/notes.txt

Output:

-rw-rw-r-- 1 ravi devs 3 notes.txt

याचा अर्थ: Teammates edit करू शकतात.

12. Sticky bit (1000): फक्त owners delete

हे का लागतं?

सगळे लिहू शकतात अशा folder मधे, /tmp सारख्या, कोणीही कोणाच्याही files delete करू शकेल. Sticky bit ते थांबवतो.

हे काय आहे?

Folder वर sticky म्हणजे फक्त file owner, folder owner किंवा root file delete किंवा rename करू शकतो. Others x जागी t. chmod +t किंवा chmod 1777.

कसं करायचं (step by step)

  1. /tmp वर बघा.
ls -ld /tmp

Output:

drwxrwxrwt. 18 root root 4096 Oct 25 /tmp

याचा अर्थ: शेवटी t.

  1. Shared upload folder.
sudo mkdir /srv/drop && sudo chmod 1777 /srv/drop

Output:

(no output)

याचा अर्थ: सगळे टाकू शकतात, फक्त owners काढू शकतात.

  1. दुसऱ्याची file delete.
sudo -u priya rm /srv/drop/ravi.txt

Output:

rm: cannot remove '/srv/drop/ravi.txt': Operation not permitted

याचा अर्थ: Sticky bit ने वाचवलं.

13. सगळं एकत्र: safe permission recipes

हे का लागतं?

बहुतेक खरी कामं याच काही patterns. एकदा शिका.

हे काय आहे?

Web root: owner deploy, group nginx, folders 2750, files 640. SSH: ~/.ssh 700, keys 600, authorized_keys 600. Secrets: 600 किंवा app group सह 640. Team share: SGID 2775 आणि umask 002. Shared drop: 1777.

कसं करायचं (step by step)

  1. SSH folder rights fix.
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && stat -c '%a %n' ~/.ssh ~/.ssh/authorized_keys

Output:

700 /home/ravi/.ssh
600 /home/ravi/.ssh/authorized_keys

याचा अर्थ: हे जास्त open असतील तर sshd keys ignore करतो.

  1. Web root recipe.
sudo chown -R deploy:nginx /srv/www && sudo find /srv/www -type d -exec chmod 2750 {} + && sudo find /srv/www -type f -exec chmod 640 {} +

Output:

(no output)

याचा अर्थ: nginx वाचू शकतो, फक्त deploy लिहू शकतो.

  1. Fix करायच्या world-writable files.
sudo find /srv -xdev -type f -perm -o+w

Output:

/srv/www/config.php

याचा अर्थ: chmod o-w ने fix.

14. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Kiran, web agency, NashikWordPress tree 755/644 resetfind wp -type d -exec chmod 755 {} +
Ahmed, bank, RiyadhDB configs फक्त app group लाchmod 640 /etc/app/db.conf
Sofia, design studio, Lisbonसगळे edit करू शकतील असा team sharechmod 2775 /srv/design
Tom, university, BostonStudents साठी shared drop folderchmod 1777 /srv/drop
Neha, security audit, Gurugramदर आठवड्याला SUID binariesfind / -xdev -perm -4000 -type f
Chen, SaaS, ShenzhenServices साठी UMask=0027UMask=0027 in the systemd unit

15. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
bash: ./deploy.sh: Permission deniedScript ला x bit नाहीExecute जोडा.
chmod u+x deploy.sh
cat: /etc/shadow: Permission deniedNormal user ला r नाहीखरंच हवं असेल तर sudo.
sudo cat /etc/shadow
chown: changing ownership of 'x': Operation not permittedOwner फक्त root बदलू शकतोsudo.
sudo chown deploy x
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'key.pem' are too open.SSH key इतरांना वाचता येतेKey ला chmod 600.
chmod 600 key.pem
Authentication refused: bad ownership or modes for directory /home/raviHome किंवा ~/.ssh group/other writableg/o write काढा.
chmod go-w ~ && chmod 700 ~/.ssh
rm: cannot remove 'x': Operation not permitted (in /tmp)Sticky bit: तुमची file नाहीOwner ला विचारा किंवा sudo.
ls -l /tmp/x
cd: /srv/data: Permission deniedFolder (किंवा parent) वर x नाहीnamei -l ने प्रत्येक folder.
namei -l /srv/data/file
nginx: 403 Forbiddennginx user files वाचू किंवा parent पार करू शकत नाहीFiles ला r, प्रत्येक parent ला x.
namei -l /srv/www/index.html
chmod: changing permissions of 'x': Read-only file systemDisk read-only mountmount आणि dmesg.
mount | grep ' / '
Team member cannot edit a shared fileFile ला बनवणाऱ्याचा group किंवा umask 022SGID folder आणि umask 002.
chmod 2775 /srv/devs

16. Troubleshooting step by step

हे का लागतं?

'Permission denied' साठी / पासून file पर्यंत path फिरा आणि user, group, प्रत्येक bit तपासा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. Process कोणत्या user म्हणून?
ps -o user,group,comm -C nginx
  1. Path वरचा प्रत्येक folder.
namei -l /srv/www/site/index.html
  1. File चा नेमका mode आणि owner.
stat -c '%A %a %U:%G' /srv/www/site/index.html
  1. Group problem आहे का?
id nginx
  1. त्या user म्हणून test.
sudo -u nginx cat /srv/www/site/index.html
  1. अजून denied? ACLs आणि SELinux.
getfacl /srv/www/site/index.html; ls -Z /srv/www/site/index.html

17. Lab 1: Team share बनवा

हे का लागतं?

सगळे devs members files बनवू आणि edit करू शकतील, others ना दिसणार नाही असा folder.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Users आणि group.
sudo groupadd -f devs && sudo useradd -m -G devs dev1 && sudo useradd -m -G devs dev2

Output:

(no output)
  1. SGID सह folder.
sudo mkdir -p /srv/team && sudo chgrp devs /srv/team && sudo chmod 2770 /srv/team && ls -ld /srv/team

Output:

drwxrws--- 2 root devs 4096 Oct 25 /srv/team
  1. dev1 file बनवतो.
sudo -u dev1 bash -c 'umask 002; echo v1 > /srv/team/plan.txt' && ls -l /srv/team

Output:

-rw-rw-r-- 1 dev1 devs 3 plan.txt
  1. dev2 edit करतो.
sudo -u dev2 bash -c 'echo v2 >> /srv/team/plan.txt' && cat /srv/team/plan.txt

Output:

v1
v2
  1. बाहेरचा block.
sudo -u nobody ls /srv/team

Output:

ls: cannot open directory '/srv/team': Permission denied

18. Lab 2: Numbers, letters, umask आणि special bits

हे का लागतं?

chmod दोन्ही प्रकारे, umask results, आणि SUID, sticky bits शोधा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Numbers.
mkdir -p ~/lab15 && cd ~/lab15 && touch a && chmod 640 a && stat -c '%A %a' a

Output:

-rw-r----- 640
  1. Letters.
chmod u+x,g-r a && stat -c '%A %a' a

Output:

-rwx------ 700
  1. umask 027.
(umask 027; touch b; mkdir c) && stat -c '%a %n' b c

Output:

640 b
750 c
  1. Sticky folder.
mkdir d && chmod 1777 d && ls -ld d

Output:

drwxrwxrwt 2 ravi ravi 4096 d
  1. SUID count.
sudo find /usr/bin -perm -4000 | wc -l

Output:

14

Ravindra Bagale's Tip

Never fix 'Permission denied' with chmod 777. Find WHO is denied (ps, id), WHERE (namei -l), and give only the missing bit to the right owner or group.

19. नेहमी विचारले जाणारे प्रश्न

प्र. 755 म्हणजे?

Owner rwx (7), group r-x (5), others r-x (5).

प्र. Script Permission denied का?

x हवा: chmod u+x script.sh, किंवा bash script.sh.

प्र. root permissions ignore करू शकतो का?

Read आणि write साठी बहुतेक हो, पण file चालवायला किमान एक x लागतो, आणि immutable files किंवा SELinux root ला पण थांबवू शकतात.

प्र. s आणि S मधे फरक?

s म्हणजे special bit आणि x दोन्ही. S म्हणजे special bit आहे पण x नाही (सहसा चूक).

प्र. Shell scripts वर SUID चालतो का?

नाही, safety साठी Linux scripts वर SUID ignore करतो. sudo rules वापरा.

प्र. Permissions numbers मधे कसे?

stat -c '%a %n' FILE.

प्र. वाचता येत नाही ती file delete का होते?

Delete folder च्या w आणि x वर अवलंबून, file वर नाही.

प्र. सगळ्यांसाठी umask कुठे?

/etc/login.defs (UMASK), /etc/profile किंवा /etc/profile.d; services साठी unit मधे UMask=.

20. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. r, w, x म्हणजे?

Read, write, execute.

प्र. chmod 644?

Owner read-write; group आणि others फक्त read.

प्र. Script executable कशी?

chmod +x script.sh.

प्र. File owner कसा बदलाल?

sudo chown user:group file.

Mid level level

प्र. Folder वर x म्हणजे?

आत जायची आणि आतल्या files पर्यंत पोचायची परवानगी.

प्र. umask 027 ने नव्या file आणि folder चे rights?

Files 640, folders 750.

प्र. Folder वर SGID कशासाठी?

नव्या files folder चा group घेतात, team shares साठी.

प्र. /tmp 1777 का?

सगळे लिहू शकतात, पण sticky bit मुळे फक्त owners स्वतःच्या files delete करतात.

Senior level

प्र. 644 file साठी nginx 403 देतो. का?

Parent folder ला nginx साठी x नाही, file allowed root बाहेर, ACL deny, किंवा SELinux context चुकीचा. namei -l, getfacl, ls -Z तपासा.

प्र. अनपेक्षित SUID root binary धोकादायक का?

तो चालवणाऱ्या प्रत्येकाला त्या program मधे root rights; bugs किंवा shell escapes ने पूर्ण root.

प्र. Data disks वर SUID गैरवापर कसा थांबवाल?

nosuid,nodev (शक्य तिथे noexec) ने mount, आणि नियमित find -perm -4000 audit.

प्र. CI copy नंतर files root च्या म्हणून deploy तुटतो. कायमचा fix?

Copy deploy user म्हणून, किंवा pipeline मधे chown, service मधे UMask, आणि SGID group folders.

घरी करून बघा

  1. फक्त तुम्ही आणि 'home' group उघडू शकाल असा 'family' folder बनवा, जिथे नव्या files 'home' group ठेवतात. ls -ld आणि test file ने दाखवा.
  2. नव्या files ना 600 देणारा umask लिहा, आणि test करा.

सराव Tasks

या scenario बद्दल

London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 21

सोपं Permissions बघा

का: प्रत्येक access check इथून.

काय करायचं: release.sh च्या permissions long format मधे.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Folder स्वतः

का: नाहीतर ls -l आतलं दाखवतो.

काय करायचं: /srv/projects folder स्वतःच्या permissions, आतलं नाही.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Script runnable

का: ./start.sh वर Permission denied.

काय करायचं: start.sh वर owner साठी execute, letters ने.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Private key

का: SSH open keys नाकारतो.

काय करायचं: prod.pem फक्त owner ला read-write, numbers ने.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं सगळ्यांसाठी script

का: BIZ चे shared tools.

काय करायचं: sync.sh ला numbers ने rwxr-xr-x.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं फक्त group

का: Finance ला report.

काय करायचं: payroll.xlsx चा group hr.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं umask symbolic पद्धतीने

का: नव्या files ना विचित्र rights.

काय करायचं: Symbolic form मधे umask set: owner ला rwx, group ला rx, others ला काही नाही.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं फक्त group बदला

का: Finance team ने share करायचं.

काय करायचं: chown वापरून budget.xlsx चा फक्त group finance करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Owner आणि group

का: App user ने log own करायचा.

काय करायचं: app.log चा owner ravi आणि group devs करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Group write द्या

का: Team एक file edit करते.

काय करायचं: shared.txt वर group ला write द्या, बाकी काही न बदलता.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Private folder

का: Keys आणि backups private.

काय करायचं: Numbers वापरून private folder करा, फक्त owner ला read, write, enter.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Group-readable config

का: App group DB config वाचतो.

काय करायचं: db.conf: owner rw, group r, others काही नाही, numbers ने.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Others चे सगळे rights काढा

का: Salary data.

काय करायचं: bonus.xlsx वर others चे read, write, execute काढा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Mode number मधे

का: Tickets numbers वापरतात.

काय करायचं: stat ने /etc/passwd चा फक्त octal mode.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम App folder www ला

का: Root च्या files www तोडतात.

काय करायचं: /srv/web चा owner आणि group recursively www.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Default private

का: या shell मधे secrets.

काय करायचं: नव्या files 660 आणि folders 770 होतील असा umask.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Team folder group inheritance

का: Teammates एकमेकांच्या files edit करायला हव्या.

काय करायचं: /srv/qa ला 2775.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Shared drop folder

का: Users एकमेकांच्या files delete करू नयेत.

काय करायचं: /srv/uploads ला 1777 mode.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Web tree fix

का: Folders ना x, files ना नाही.

काय करायचं: /var/www/blog ला recursively u=rwX,g=rX,o=rX.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड SGID files audit

का: प्रत्येक SGID root file target.

काय करायचं: फक्त या file system वर / खाली SGID bit असलेल्या regular files.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Path वरचा प्रत्येक folder

का: 644 file वर nginx 403.

काय करायचं: /var/www/blog/app.js च्या प्रत्येक भागाचे owner आणि mode.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. ls -l: type, owner, group, others; numbers साठी stat.
  2. Folder x = आत जा; delete ला folder w.
  3. chmod 644/755/600 किंवा u+x, g-w, o=.
  4. chown user:group, chgrp group, -R जपून.
  5. umask 022 → 644/755; 027 → 640/750.
  6. SUID 4, SGID 2, sticky 1; कधीच chmod 777 नाही.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

chmod numbers. कोण read, write, run ते ठरवा. r=4 w=2 x=1, बेरीज करा. Folder मधे जायला x हवा. Private SSH key.
उजळणी card: chmod numbers · PNG download करा · Card page उघडा
SUID SGID sticky. खास कामासाठी extra bits. SUID 4, SGID 2, sticky 1. Team folders वर SGID. Shared drop folder.
उजळणी card: SUID SGID sticky · PNG download करा · Card page उघडा
chmod 755 vs chmod u+x. सगळे bits एकदम. / फक्त सांगितलेले bits.
तुलना: chmod 755 vs chmod u+x · PNG download करा · Card page उघडा
SUID vs SGID. File owner म्हणून run. / नव्या files ना folder चा group.
तुलना: SUID vs SGID · PNG download करा · Card page उघडा
755 vs 644?. Folders आणि scripts साठी 755. Normal files साठी 644. Web tree fix.
मुलाखत card: 755 vs 644? · PNG download करा · Card page उघडा
umask काय करतो?. नव्या files मधून bits काढतो. 022 ने 644 files, 755 dirs. Default private.
मुलाखत card: umask काय करतो? · PNG download करा · Card page उघडा
/tmp 1777 का?. सगळे तिथे लिहू शकतात. Sticky दुसऱ्यांच्या files delete थांबवतो. t बघा.
मुलाखत card: /tmp 1777 का? · PNG download करा · Card page उघडा
644 file, तरी 403?. Parent folder ला x नाही. Path चा प्रत्येक भाग तपासा. Path तपासा.
मुलाखत card: 644 file, तरी 403? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.