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)
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.
| जागा | उदाहरण | अर्थ |
|---|---|---|
| 1 | d | Type: folder |
| 2-4 | rwx | Owner read, write, execute |
| 5-7 | r-x | Group read आणि execute |
| 8-10 | --- | Others ना काही नाही |
कसं करायचं (step by step)
- एक script.
ls -l deploy.sh
Output:
-rwxr-x--- 1 ravi devs 812 Oct 25 10:10 deploy.sh
याचा अर्थ: ravi पूर्ण, devs वाचू आणि चालवू, others काही नाही.
- Folder स्वतः.
ls -ld /srv/shared
Output:
drwxrwsr-x 2 root devs 4096 Oct 25 10:12 /srv/shared
याचा अर्थ: Group x जागी s = SGID (पुढे).
- नावं नाहीत, 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 वर नाही.
| Bit | File वर | Folder वर |
|---|---|---|
| r | Content वाचा | नावं list |
| w | Content बदला | आत add, delete, rename |
| x | चालवा | आत जा, पुढे जा |
कसं करायचं (step by step)
- 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
याचा अर्थ: नावं दिसतात पण उघडता येत नाहीत.
- 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 करता येत नाही, पण माहीत नाव उघडता येतं.
- 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 (जपून).
| Number | Letters | नेहमीचा उपयोग |
|---|---|---|
| 644 | rw-r--r-- | साध्या files, web pages |
| 600 | rw------- | Private keys, secrets |
| 755 | rwxr-xr-x | Scripts, folders |
| 700 | rwx------ | Private folders, ~/.ssh |
| 640 | rw-r----- | Group वाचणारी config |
| 775 | rwxrwxr-x | Team folder |
कसं करायचं (step by step)
- Key private.
chmod 600 ~/.ssh/id_ed25519 && ls -l ~/.ssh/id_ed25519
Output:
-rw------- 1 ravi ravi 411 Oct 25 id_ed25519
याचा अर्थ: इतरांना वाचता येणारी key SSH नाकारतो.
- सगळे चालवू शकतील अशी 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.
- 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 दिसत नाही.
- हे कधीच नको.
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)
- Script runnable.
chmod u+x run.sh && ls -l run.sh
Output:
-rwxr--r-- 1 ravi ravi 120 Oct 25 run.sh
याचा अर्थ: फक्त owner ला x.
- Others चे rights काढा.
chmod o-rwx salary.xlsx && ls -l salary.xlsx
Output:
-rw-r----- 1 hr hr 88K Oct 25 salary.xlsx
याचा अर्थ: Others चं सगळं गेलं.
- नेमकं set.
chmod u=rw,g=r,o= report.pdf && stat -c '%A %a' report.pdf
Output:
-rw-r----- 640
याचा अर्थ: = त्या set चे जुने bits बदलतो.
- एका 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=rx | Script किंवा folder ज्यात others जाऊ शकतात. |
600 = u=rw,go= | Secret file. |
700 = u=rwx,go= | Private folder. |
g+w | फक्त group ला write; बाकी तसंच. |
-R | Folder मधल्या सगळ्यावर. |
कसं करायचं (step by step)
- सुरुवात तपासा.
ls -l plan.txt
Output:
-rw-r--r-- 1 arjun team 900 Oct 25 plan.txt
याचा अर्थ: आत्ता 644.
- Symbolic ने group write.
chmod g+w plan.txt && stat -c %a plan.txt
Output:
664
याचा अर्थ: फक्त group भाग बदलला.
- 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 काही नाही.
- तोच 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)
- पूर्ण 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.
- अनेक 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)
- 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 चं.
- Uploads साठी owner आणि group.
sudo chown nginx:www /srv/app/uploads
Output:
(no output)
याचा अर्थ: Web server uploads लिहू शकतो.
- Normal user देऊ शकत नाही.
chown priya notes.txt
Output:
chown: changing ownership of 'notes.txt': Operation not permitted
याचा अर्थ: Owner फक्त root बदलू शकतो.
- दुसऱ्या 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 f | Owner आणि group. |
chown :group f | फक्त group (chgrp सारखं). |
chown user: f | Owner, आणि group = त्या user चा main group. |
-R | संपूर्ण folder tree. |
-v / -c | प्रत्येक बदल / फक्त खरे बदल print. |
कसं करायचं (step by step)
- 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 करू शकत नाही.
- 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 मधे दोन्ही बदलले.
- फक्त 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.
- -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)
- Report finance ला.
chgrp finance q3.xlsx && ls -l q3.xlsx
Output:
-rw-r----- 1 ravi finance 40K Oct 25 q3.xlsx
याचा अर्थ: Finance members आता वाचू शकतात.
- 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 |
|---|---|---|
| 022 | 644 | 755 |
| 002 | 664 | 775 |
| 027 | 640 | 750 |
| 077 | 600 | 700 |
कसं करायचं (step by step)
- तुमचा umask.
umask; umask -S
Output:
0022
u=rwx,g=rx,o=rx
याचा अर्थ: नेहमीचा default.
- 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
याचा अर्थ: फक्त तुम्ही.
- Team साठी umask.
umask 002; touch shared.txt; ls -l shared.txt
Output:
-rw-rw-r-- 1 ravi devs 0 shared.txt
याचा अर्थ: Group पण लिहू शकतो.
- 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)
- Classic उदाहरण.
ls -l /usr/bin/passwd
Output:
-rwsr-xr-x. 1 root root 32648 /usr/bin/passwd
याचा अर्थ: s: प्रत्येक user साठी root म्हणून.
- सगळ्या 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.
- 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)
- 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.
- नव्या 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 नाही.
- 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)
- /tmp वर बघा.
ls -ld /tmp
Output:
drwxrwxrwt. 18 root root 4096 Oct 25 /tmp
याचा अर्थ: शेवटी t.
- Shared upload folder.
sudo mkdir /srv/drop && sudo chmod 1777 /srv/drop
Output:
(no output)
याचा अर्थ: सगळे टाकू शकतात, फक्त owners काढू शकतात.
- दुसऱ्याची 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)
- 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 करतो.
- 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 लिहू शकतो.
- 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, Nashik | WordPress tree 755/644 reset | find wp -type d -exec chmod 755 {} + |
| Ahmed, bank, Riyadh | DB configs फक्त app group ला | chmod 640 /etc/app/db.conf |
| Sofia, design studio, Lisbon | सगळे edit करू शकतील असा team share | chmod 2775 /srv/design |
| Tom, university, Boston | Students साठी shared drop folder | chmod 1777 /srv/drop |
| Neha, security audit, Gurugram | दर आठवड्याला SUID binaries | find / -xdev -perm -4000 -type f |
| Chen, SaaS, Shenzhen | Services साठी UMask=0027 | UMask=0027 in the systemd unit |
15. नेहमीच्या errors आणि त्यांचे fixes
हे का लागतं?
हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.
हे काय आहे?
आधी नेमका message वाचा. मग खालच्या row शी जुळवा.
कसं करायचं (step by step)
| दिसणारा error | का होतं | Fix कसा करायचा |
|---|---|---|
bash: ./deploy.sh: Permission denied | Script ला x bit नाही | Execute जोडा.chmod u+x deploy.sh |
cat: /etc/shadow: Permission denied | Normal user ला r नाही | खरंच हवं असेल तर sudo.sudo cat /etc/shadow |
chown: changing ownership of 'x': Operation not permitted | Owner फक्त 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/ravi | Home किंवा ~/.ssh group/other writable | g/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 denied | Folder (किंवा parent) वर x नाही | namei -l ने प्रत्येक folder.namei -l /srv/data/file |
nginx: 403 Forbidden | nginx user files वाचू किंवा parent पार करू शकत नाही | Files ला r, प्रत्येक parent ला x.namei -l /srv/www/index.html |
chmod: changing permissions of 'x': Read-only file system | Disk read-only mount | mount आणि dmesg.mount | grep ' / ' |
Team member cannot edit a shared file | File ला बनवणाऱ्याचा group किंवा umask 022 | SGID folder आणि umask 002.chmod 2775 /srv/devs |
16. Troubleshooting step by step
हे का लागतं?
'Permission denied' साठी / पासून file पर्यंत path फिरा आणि user, group, प्रत्येक bit तपासा.
हे काय आहे?
वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.
कसं करायचं (step by step)
- Process कोणत्या user म्हणून?
ps -o user,group,comm -C nginx
- Path वरचा प्रत्येक folder.
namei -l /srv/www/site/index.html
- File चा नेमका mode आणि owner.
stat -c '%A %a %U:%G' /srv/www/site/index.html
- Group problem आहे का?
id nginx
- त्या user म्हणून test.
sudo -u nginx cat /srv/www/site/index.html
- अजून 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)
- Users आणि group.
sudo groupadd -f devs && sudo useradd -m -G devs dev1 && sudo useradd -m -G devs dev2
Output:
(no output)
- 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
- 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
- dev2 edit करतो.
sudo -u dev2 bash -c 'echo v2 >> /srv/team/plan.txt' && cat /srv/team/plan.txt
Output:
v1
v2
- बाहेरचा 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)
- Numbers.
mkdir -p ~/lab15 && cd ~/lab15 && touch a && chmod 640 a && stat -c '%A %a' a
Output:
-rw-r----- 640
- Letters.
chmod u+x,g-r a && stat -c '%A %a' a
Output:
-rwx------ 700
- umask 027.
(umask 027; touch b; mkdir c) && stat -c '%a %n' b c
Output:
640 b
750 c
- Sticky folder.
mkdir d && chmod 1777 d && ls -ld d
Output:
drwxrwxrwt 2 ravi ravi 4096 d
- 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.
Ravindra Bagale's Tip – मराठी
'Permission denied' कधीच chmod 777 ने fix करू नका. कोणाला denied (ps, id), कुठे (namei -l) ते शोधा, आणि योग्य owner किंवा group ला फक्त missing bit द्या.
Ravindra Bagale's Tip – हिंदी
'Permission denied' को कभी chmod 777 से ठीक न करें. किसे denied है (ps, id), कहाँ (namei -l) पता करें, और सही owner या group को सिर्फ गायब bit दें.
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.
घरी करून बघा
- फक्त तुम्ही आणि 'home' group उघडू शकाल असा 'family' folder बनवा, जिथे नव्या files 'home' group ठेवतात. ls -ld आणि test file ने दाखवा.
- नव्या files ना 600 देणारा umask लिहा, आणि test करा.
सराव Tasks
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 मधे.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Folder स्वतः
का: नाहीतर ls -l आतलं दाखवतो.
काय करायचं: /srv/projects folder स्वतःच्या permissions, आतलं नाही.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Script runnable
का: ./start.sh वर Permission denied.
काय करायचं: start.sh वर owner साठी execute, letters ने.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Private key
का: SSH open keys नाकारतो.
काय करायचं: prod.pem फक्त owner ला read-write, numbers ने.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं सगळ्यांसाठी script
का: BIZ चे shared tools.
काय करायचं: sync.sh ला numbers ने rwxr-xr-x.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं फक्त group
का: Finance ला report.
काय करायचं: payroll.xlsx चा group hr.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं umask symbolic पद्धतीने
का: नव्या files ना विचित्र rights.
काय करायचं: Symbolic form मधे umask set: owner ला rwx, group ला rx, others ला काही नाही.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं फक्त group बदला
का: Finance team ने share करायचं.
काय करायचं: chown वापरून budget.xlsx चा फक्त group finance करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Owner आणि group
का: App user ने log own करायचा.
काय करायचं: app.log चा owner ravi आणि group devs करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Group write द्या
का: Team एक file edit करते.
काय करायचं: shared.txt वर group ला write द्या, बाकी काही न बदलता.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Private folder
का: Keys आणि backups private.
काय करायचं: Numbers वापरून private folder करा, फक्त owner ला read, write, enter.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Group-readable config
का: App group DB config वाचतो.
काय करायचं: db.conf: owner rw, group r, others काही नाही, numbers ने.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Others चे सगळे rights काढा
का: Salary data.
काय करायचं: bonus.xlsx वर others चे read, write, execute काढा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Mode number मधे
का: Tickets numbers वापरतात.
काय करायचं: stat ने /etc/passwd चा फक्त octal mode.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम App folder www ला
का: Root च्या files www तोडतात.
काय करायचं: /srv/web चा owner आणि group recursively www.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Default private
का: या shell मधे secrets.
काय करायचं: नव्या files 660 आणि folders 770 होतील असा umask.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Team folder group inheritance
का: Teammates एकमेकांच्या files edit करायला हव्या.
काय करायचं: /srv/qa ला 2775.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Shared drop folder
का: Users एकमेकांच्या files delete करू नयेत.
काय करायचं: /srv/uploads ला 1777 mode.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Web tree fix
का: Folders ना x, files ना नाही.
काय करायचं: /var/www/blog ला recursively u=rwX,g=rX,o=rX.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड SGID files audit
का: प्रत्येक SGID root file target.
काय करायचं: फक्त या file system वर / खाली SGID bit असलेल्या regular files.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Path वरचा प्रत्येक folder
का: 644 file वर nginx 403.
काय करायचं: /var/www/blog/app.js च्या प्रत्येक भागाचे owner आणि mode.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
21. संबंधित chapters
- DevOps साठी Linux Ops Refresh
- Automation साठी Bash Scripting
- Linux grep आणि find Commands Examples सह
- Linux Servers मध्ये Passwordless SSH
थोडक्यात सांगायचं तर
- ls -l: type, owner, group, others; numbers साठी stat.
- Folder x = आत जा; delete ला folder w.
- chmod 644/755/600 किंवा u+x, g-w, o=.
- chown user:group, chgrp group, -R जपून.
- umask 022 → 644/755; 027 → 640/750.
- SUID 4, SGID 2, sticky 1; कधीच chmod 777 नाही.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








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