chmod सविस्तर: symbolic आणि numeric permissions, folder permissions आणि file कोण delete करू शकतो
चला, सुरू करूया. मागच्या class मध्ये तुम्ही chmod u-w आणि chmod g+w बघितलं. आज आपण अजून खोलात जाणार. आधी पूर्ण symbolic पद्धत: कोणाला, plus की minus, कोणती permission, आणि एकाच command मध्ये अनेक बदल कसे करायचे. मग खऱ्या servers वर सगळीकडे दिसणारे आकडे, 755, 644, 600, आणि ते डोक्यात कसे वाचायचे आणि बनवायचे. मग folders, जिथे r, w आणि x चा अर्थच बदलतो. शेवटी एक कोडं: root ची file ec2-user delete करू शकतो का? Server चालू ठेवा आणि प्रत्येक command माझ्यासोबत करून बघा.
या class मध्ये काय शिकणार
ls -lची दहा characters एका नजरेत वाचणं- Symbolic
chmod:u,g,o,aसोबत+,-आणि= - एकाच command मध्ये अनेक बदल: commas, आणि एकत्र अनेक अक्षरं
- कोणाला ते न सांगता
chmod +wआणिchmod +xकाय करतात - Numeric
chmod: r = 4, w = 2, x = 1 645सारखे आकडे वाचणं, आणि गरजेवरून714सारखे आकडे बनवणं555,000,777आणि444, आणि777ही वाईट सवय का- Root च्या files:
sudo chmod, आणि file चालवायला root ला पणxbit का लागतो - 766 vs 776 चा प्रश्न, नीट सोडवून
- Files, scripts, folders आणि keys साठी कोणते आकडे
- Folder वर
r,w,xचा अर्थ,chmod 700,600,300,555आणि200सोबत - कोडं: delete parent folder वर अवलंबून असतो
/tmpवरचा sticky bitec2-userलाsudoका चालतो आणि नवीन user ला का नाही- EC2 Instance Connect सारखं fail होत असेल तेव्हाची एक खरी tip
- घरी करायचे tasks
1. थोडक्यात उजळणी: दहा characters
का. तुम्ही type केलेला प्रत्येक chmod यातली काही characters बदलतो, म्हणून ती एका नजरेत वाचता यायला हवीत.
काय. Amazon Linux वर ec2-user ने बनवलेली नवीन file आणि नवीन folder असे दिसतात:
[ec2-user@ip-172-31-xx-xx ~]$ ls -l
total 4
-rw-rw-r--. 1 ec2-user ec2-user 6 Jan 5 10:15 my.txt
drwxrwxr-x. 2 ec2-user ec2-user 6 Jan 5 10:15 ravi
-rw-rw-r-- डावीकडून वाचा:
-: type.-म्हणजे file,dम्हणजे directory.rw-: user (owner), पहिलं नाव,ec2-user.rw-: group, दुसरं नाव. Group मध्ये अनेक members असू शकतात, उदा.raviआणिramesh.r--: others, server वरचे बाकी सगळे users.
शेवटचा . हा Amazon Linux चा SELinux marker आहे; त्याकडे दुर्लक्ष करा. Owners, groups, adduser आणि पहिला chmod u-w demo Linux users, groups, sudo आणि file permissions मध्ये आहेत. हा chapter त्याच्या पुढे जातो.
2. Symbolic chmod: कोणाला, + की -, आणि कोणती permission
का. कधी कधी तुम्हाला फक्त एकच गोष्ट बदलायची असते, जसं "group ला write द्या", आणि बाकी सगळं आहे तसंच ठेवायचं. अक्षरं नेमकं तेच करतात.
काय. Symbolic mode चे तीन भाग, एकत्र, space न देता लिहायचे:
- कोणाला:
uuser (owner),ggroup,oothers,aतिघंही. - काय करायचं:
+द्या,-काढून घ्या,=नेमकं set करा (जे लिहिलं नाही ते काढलं जातं). - कोणती permission:
r,w,x.
Classroom line
The permissions we're giving now use letters.
Class मधलं वाक्य
आत्ता आपण ज्या permissions देतोय, त्यात आपण अक्षरं वापरतोय.
Classroom line – हिंदी
"So abhi hum jo permissions de rahe hain, isme hum character use kar rahe hain."
Figure 1. Symbolic chmod: कोणाला (u, g, o किंवा a), काय करायचं (+, - किंवा =) आणि कोणती permission (r, w, x) निवडा, मग file चं नाव.
सोडवलेली उदाहरणं. प्रत्येक उदाहरण परत -rw-r--r-- पासून सुरू होतं:
chmod u+x my.txt → -rwxr--r--
chmod g+w my.txt → -rw-rw-r--
chmod o-r my.txt → -rw-r-----
chmod a+x my.txt → -rwxr-xr-x
chmod u-w my.txt → -r--r--r--
chmod u=rw,go=r my.txt → -rw-r--r--
u+x: आता owner ती चालवू शकतो.g+w: आता group members ती बदलू शकतात.o-r: others ना आता वाचता पण येत नाही.a+x: सगळे चालवू शकतात.u-w: owner सुद्धा बदल save करू शकत नाही (पण ownerchmodने परत देऊ शकतो).=: ते bits नेमके set करतो. File परतrw-r--r--करायला सोयीचं.
3. एकाच command मध्ये अनेक बदल
का. तीन छोट्या बदलांसाठी तीन वेळा chmod type करणं वेळखाऊ आहे. एकाच वेळी करता येतं.
कसं. दोन पद्धती:
- वेगवेगळ्या बदलांमध्ये comma, आणि comma नंतर space नाही.
- एकाच जागी अनेक अक्षरं: group आणि others साठी
go, write आणि execute साठीwx.
परत प्रत्येक वेळी -rw-r--r-- पासून (box वर तपासलेलं):
chmod u+x,g+w my.txt → -rwxrw-r--
chmod g+wx my.txt → -rw-rwxr--
chmod go+x my.txt → -rw-r-xr-x
chmod ug+x my.txt → -rwxr-xr--
chmod ugo+x my.txt → -rwxr-xr-x
chmod a+x my.txt → -rwxr-xr-x
ugo आणि a म्हणजे एकच. आणि chmod 664 my.txt नंतर chmod o-r,g-w my.txt केलं की -rw-r----- मिळतं.
Classroom line
We can give permissions to many in one command.
Class मधलं वाक्य
"Ekach command madhe multiple la permission deu shakto."
एकाच command मध्ये अनेकांना permission देऊ शकतो.
Classroom line
We can give permissions to many in one command.
Comma नंतर space दिली की command तुटते:
chmod u+x, g+w my.txt
chmod: invalid mode: ‘u+x,’
Try 'chmod --help' for more information.

Class board वरून: Class board: chmod ug+x my.txt, chmod u+x,g+w my.txt (comma, space नाही), chmod g+wx my.txt आणि chmod go+x.
4. u, g, o न लिहिता chmod +w आणि +x
का. chmod +x script.sh असं + च्या आधी काहीच अक्षर नसलेलं तुम्हाला सारखं दिसेल. मग permission मिळते कोणाला?
काय. u, g, o किंवा a नसेल तर chmod permission सगळ्यांना देतो, फक्त जिथे तुमचा umask अडवतो तिथे सोडून. नवीन files च्या permissions ठरवणारी हीच setting (section 12 मध्ये अजून).
बघा. ec2-user म्हणून (umask 0002) एका read-only file वर:
umask
0002
chmod 444 my.txt
chmod +w my.txt
ls -l my.txt
-rw-rw-r--. 1 ec2-user ec2-user 6 Jan 5 10:15 my.txt
Umask 0002 फक्त others चा w अडवतो, म्हणून owner आणि group ला w मिळाला. Root म्हणून (umask 0022) तोच chmod +w फक्त -rw-r--r-- देतो, कारण 0022 group ला पण अडवतो.
सगळ्यांना w द्यायचा असेल तर a ने स्पष्ट सांगा:
chmod 444 my.txt
chmod a+w my.txt
ls -l my.txt
-rw-rw-rw-. 1 ec2-user ec2-user 6 Jan 5 10:15 my.txt
chmod +x पण याच नियमाने चालतो, पण हे umasks फक्त w अडवतात, म्हणून -rw-r--r-- वर chmod +x my.txt केलं की -rwxr-xr-x, सगळ्यांना x.
काढून घेताना पण तसंच, आणि umask ने काही bits ठेवले तर chmod तुम्हाला सांगतो:
chmod 666 my.txt
chmod -w my.txt
chmod: my.txt: new permissions are r--r--rw-, not r--r--r--
Figure 2. Animation: read-only file वर chmod +w, ec2-user (umask 0002) म्हणून rw-rw-r--, root (umask 0022) म्हणून rw-r--r--, आणि chmod a+w ने rw-rw-rw-.
Correction
Class मध्ये सांगितलं की नुसता chmod +w "चालणार नाही", accident टाळायला a+w च लिहावं लागतं. ते बरोबर नाही. chmod +w चालतो: u/g/o नसेल तर तो umask प्रमाणे चालतो, म्हणून ec2-user (umask 0002) म्हणून तो owner आणि group ला w देतो, आणि root (umask 0022) म्हणून फक्त owner ला. chmod a+w others सकट सगळ्यांना w देतो, जे क्वचितच हवं असतं.
5. Numeric chmod: r = 4, w = 2, x = 1
का. अक्षरं एका वेळी एकच गोष्ट बदलतात. आकडा नऊच्या नऊ bits एकदम, नेमके set करतो. म्हणूनच जवळपास प्रत्येक guide मध्ये chmod 755, chmod 644, chmod 600 दिसतात.
काय. तीन digits: पहिला user साठी, दुसरा group साठी, तिसरा others साठी. प्रत्येक digit म्हणजे एक बेरीज:
r= 4w= 2x= 1
म्हणजे 7 = 4 + 2 + 1 = rwx, 6 = 4 + 2 = rw-, 5 = 4 + 1 = r-x, आणि 3 = 2 + 1 = -wx.
Figure 3. Animation: chmod 755 my.txt. 7 = 4 + 2 + 1 = user साठी rwx, आणि प्रत्येक 5 = 4 + 1 = group आणि others साठी r-x.

Class board वरून: Class board: chmod 755 my.txt मध्ये पहिला digit user साठी, दुसरा group साठी, तिसरा other users साठी. उजवीकडे: r = 4, w = 2, x = 1, म्हणून r + w = 6, w + x = 3, r + x = 5 आणि तिन्ही = 7.
Figure 4. आठही digits: 0 ---, 1 --x, 2 -w-, 3 -wx, 4 r--, 5 r-x, 6 rw-, 7 rwx.
6. आकडा वाचणं (decode)
कसं. एका वेळी एक digit घ्या, आणि त्याचे 4, 2, 1 करा:
- त्यात 4 आहे का? मग
r, नाहीतर-. - उरलेल्यात 2 आहे का? मग
w, नाहीतर-. - 1 उरला का? मग
x, नाहीतर-.
सोडवलेलं उदाहरण: 645.
6= 4 + 2 → user साठीrw-.4= 4 → group साठीr--.5= 4 + 1 → others साठीr-x.
म्हणजे chmod 645 my.txt ने -rw-r--r-x मिळतं. अजून काही, प्रत्येक box वर chmod आणि ls -l ने तपासलेलं:
755 -> -rwxr-xr-x
645 -> -rw-r--r-x
714 -> -rwx--xr--
514 -> -r-x--xr--
555 -> -r-xr-xr-x
000 -> ----------
777 -> -rwxrwxrwx
444 -> -r--r--r--
644 -> -rw-r--r--
600 -> -rw-------
400 -> -r--------
7. गरजेवरून आकडा बनवणं
का. कामावर कोणी "chmod 714" म्हणत नाही. ते म्हणतात "owner ला सगळं, group फक्त चालवू शकेल, others फक्त वाचू शकतील". ते तुम्ही आकड्यात बदलायचं.
सोडवलेलं उदाहरण 1. गरज: user rwx, group --x, others r--.
- User: 4 + 2 + 1 = 7.
- Group: 1.
- Others: 4.
- उत्तर:
chmod 714 my.txt.
सोडवलेलं उदाहरण 2. वरच्यासारखंच, पण user चा write काढून घ्या.
- User: 4 + 1 = 5.
- Group आणि others बदलत नाहीत: 1 आणि 4.
- उत्तर:
chmod 514 my.txt.

Class board वरून: Class board: decode करायला chmod 645 my.txt, आणि खाली rwx --x r-- ही गरज chmod 714 my.txt म्हणून लिहिलेली.
डोक्यात करून बघायला तीन छोटी उदाहरणं:
- "फक्त owner वाचू आणि लिहू शकेल" → 6, 0, 0 →
600. - "Owner ला सगळं, group ला read आणि run, others ना काहीच नाही" → 7, 5, 0 →
750. - "सगळे वाचू शकतील, बदलू कोणीच नाही" → 4, 4, 4 →
444.
8. खास आकडे: 555, 000, 777 आणि 444
काय.
555= सगळ्यांनाr-x: सगळे वाचू आणि चालवू शकतात, बदलू कोणीच नाही.000= कोणालाच काहीच नाही.777= सगळ्यांना सगळं.444= सगळ्यांसाठी फक्त read.
000 owner साठी सापळा नाही. Owner ला file वाचता येत नाही, पण तो कधीही chmod ने परत करू शकतो, आणि root तरीही वाचतो:
chmod 000 my.txt
cat my.txt
cat: my.txt: Permission denied
sudo cat my.txt
hello
chmod 644 my.txt
cat my.txt
hello
Server वर 777 ही वाईट सवय आहे. कोणताही user, किंवा कोणी घुसलेला कोणताही program, 777 file बदलू शकतो, उदा. नंतर root चालवणारा script. File "चालत नसेल" तर सगळं उघडं करण्याऐवजी नेमका कोणता bit कमी आहे ते शोधा. 777 नंतर चांगली दुरुस्ती म्हणजे chmod 644 (किंवा कोणीच बदलू नये असं असेल तर chmod 444).
9. आकडे की अक्षरं?
कधी काय वापरायचं:
- आकडे जेव्हा शेवटी नेमकं काय हवं ते माहीत असतं:
chmod 644 index.html. आधी काहीही असलं तरी नऊच्या नऊ bits set होतात. - अक्षरं जेव्हा एकच बदल हवा आणि बाकी तसंच राहायला हवं:
chmod u+x my.sh.
उदा. -rw-rw-r-- असलेल्या file वर chmod u+x ने -rwxrw-r-- मिळतं, पण chmod 744 ने -rwxr--r--: आकड्याने group चा w पण काढला.
10. Root च्या files: sudo chmod
का. sudo ने बनवलेली file root ची असते, आणि त्यामुळे तिचा chmod कोण करू शकतो ते बदलतं.
बघा. Root एक छोटा script लिहितो:
sudo nano a.txt
ls -l a.txt
-rw-r--r--. 1 root root 36 Jan 5 10:15 a.txt
File मध्ये दोन ओळी आहेत, #!/bin/bash आणि echo "Hello from a.txt". आता ec2-user म्हणून करून बघा:
chmod 777 a.txt
chmod: changing permissions of 'a.txt': Operation not permitted
./a.txt
-bash: ./a.txt: Permission denied
chmodनाकारला, कारण mode फक्त owner (root) किंवाsudoने root बदलू शकतो../a.txtनाकारला, कारण अजून कोणाकडेचxनाही.
बरोबर पद्धतीने दुरुस्त करा, 755 ने, 777 ने नाही:
sudo chmod 755 a.txt
ls -l a.txt
-rwxr-xr-x. 1 root root 36 Jan 5 10:15 a.txt
./a.txt
Hello from a.txt
Root r आणि w चे checks ओलांडतो, पण हा नाही: file चालवायला किमान एक तरी x bit set हवा. 666 file वर root ला सुद्धा Permission denied मिळतं.
11. 766 vs 776 चा प्रश्न
का. Board वर लिहिलं होतं की या root च्या a.txt साठी 766 ने ec2-user ती चालवू शकत नाही पण 776 ने शकतो. विश्वास ठेवण्याऐवजी सोडवून बघूया.
इथे ec2-user कोण? File root root आहे. ec2-user owner नाही, आणि root group मध्येही नाही, म्हणून त्याला others चे bits मिळतात, शेवटचा digit.
766: others = 6 =rw-.xनाही.776: others = 6 =rw-. तरीहीxनाही.
म्हणजे दोन्ही denied. Box वर खऱ्या root root file ने तपासलेलं:
sudo chmod 766 a.txt
./a.txt
-bash: ./a.txt: Permission denied
sudo chmod 776 a.txt
./a.txt
-bash: ./a.txt: Permission denied
776 तेव्हाच चालतो जेव्हा file चा group असा असेल ज्यात ec2-user आहे, कारण मग ec2-user ला मधला digit, 7, मिळतो:
sudo chown root:ec2-user a.txt
sudo chmod 776 a.txt
./a.txt
Hello from a.txt
sudo chmod 766 a.txt
./a.txt
-bash: ./a.txt: Permission denied
याच कल्पनेने 700 आणि 770 पण समजतात: 700 ने फक्त root चालवू शकतो (sudo ./a.txt), आणि 770 ec2-user साठी तेव्हाच चालतो जेव्हा group ec2-user असेल. अजून एक गोष्ट: bash ला script वाचता पण यायला हवा. 711 ने (others ना x आहे पण r नाही) /bin/bash: ./a.txt: Permission denied मिळतं.
Figure 5. root:root script साठी ec2-user ला others चे bits मिळतात: 766 आणि 776 दोन्ही denied. 776 आणि 770 फक्त group ec2-user असेल तरच चालतात. 755 सगळ्यांसाठी चालतो.
Correction
Board वर sudo nano ने बनवलेली file ec2-user ने चालवताना 766 ✗ आणि 776 ✓ दाखवलं. ती file root:root आहे, म्हणून ec2-user others मध्ये येतो, आणि 766 व 776 दोन्ही others ना rw- देतात, x नाही. दोन्ही fail होतात. 776 फक्त file चा group ec2-user असेल तरच चालतो (उदा. sudo chown root:ec2-user a.txt नंतर). सोपं उत्तर म्हणजे sudo chmod 755 a.txt.
12. कोणते आकडे वापरायचे
लक्षात ठेवायला छोटी list:
| काय | आकडा | Bits |
|---|---|---|
| नेहमीच्या files (web pages, configs) | 644 |
rw-r--r-- |
| Scripts आणि programs | 755 |
rwxr-xr-x |
| Folders | 755 |
rwxr-xr-x |
| खाजगी files आणि SSH private keys | 600 |
rw------- |
कधीच न बदलणारी .pem key |
400 |
r-------- |
| काहीही | 777 नको |
chmod 400 तुम्ही आधीच EC2 server च्या आत मध्ये बघितलं आहे, Mac वर .pem key lock करताना: others वाचू शकतील अशी private key SSH नाकारतो.
आणि Amazon Linux वर तुमचे defaults? ec2-user ने बनवलेल्या नवीन files आणि folders group साठी थोडे जास्त उघडे येतात:
umask
0002
touch new.txt
mkdir newdir
ls -ld new.txt newdir
-rw-rw-r--. 1 ec2-user ec2-user 0 Jan 5 10:15 new.txt
drwxrwxr-x. 2 ec2-user ec2-user 6 Jan 5 10:15 newdir
- Files 666 पासून आणि folders 777 पासून सुरू होतात.
- Umask
0002others चाwकाढतो → files664आणि folders775. - Root चा umask
0022group चाwपण काढतो →644आणि755.
Amazon Linux वर हे safe आहे, कारण प्रत्येक user चा स्वतःचा खाजगी group असतो.
Correction
Board वर नवीन files rw-r--r-- (644) आणि नवीन folders rwxr-xr-x (755) दाखवले. ते root चे defaults आहेत (umask 0022). Amazon Linux 2023 वर ec2-user चा umask 0002 आहे, म्हणून नवीन files rw-rw-r-- (664) आणि नवीन folders rwxrwxr-x (775) येतात, class मध्ये mkdir ravi ने दाखवलं तसंच.
13. Folder permissions: r, w आणि x चा अर्थ वेगळा
का. Folder म्हणजे नावांची एक list. त्याच्या permissions त्या list ला जपतात, आतल्या files च्या content ला नाही. म्हणून तीच अक्षरं वेगळा अर्थ घेतात.
काय.
- Folder वर r: आतली नावं list करणं (
ls). - Folder वर w: आत entries create, delete, rename करणं (
touch,mkdir, आतcp,mv,rm), आणि ते फक्त x सोबत. - Folder वर x: आत जाणं (
cd) आणि त्यातून path वापरणं, जसंcat ravi/a.txt.
Figure 6. Folder वर r = नावं list करणं, w = entries create, delete, rename करणं (x पण लागतो), x = आत जाणं आणि path वापरणं. आधीच असलेली file वाचायला किंवा edit करायला file चा स्वतःचा r किंवा w आणि folder वर x लागतो.
आधीच असलेली file वाचणं किंवा edit करणं हे file चं काम: cat ला file चा r लागतो, बदल save करायला file चा w, आणि तिथपर्यंत पोहोचायला दोघांनाही folder वर x लागतो. Folder चा w लागत नाही.
Correction
Board वर cat, nano आणि vi folder च्या w खाली लिहिले होते. cat फक्त वाचतो, म्हणून त्याला file चा r (आणि folder वर x) लागतो. आधीच असलेली file edit करायला file चा w लागतो, folder चा नाही. Folder चा w फक्त entries create, delete किंवा rename करताना लागतो, जसं touch किंवा nano ने नवीन file, आणि तो फक्त x सोबतच चालतो.
14. एकच folder, पाच modes
कसं. दोन files असलेला folder बनवा, मग त्याचा mode बदला आणि काय तुटतं ते बघा. खालचे सगळे outputs box वरचे आहेत:
mkdir ravi
echo hello > ravi/a.txt
touch ravi/aa.txt
उदाहरण 1: 700 (rwx------). List करता येतं, आत जाता येतं, आत बनवता येतं. सगळं चालतं.
उदाहरण 2: 600 (rw-------), x नाही.
chmod 600 ravi
cd ravi
-bash: cd: ravi: Permission denied
ls -l ravi
ls: cannot access 'ravi/a.txt': Permission denied
ls: cannot access 'ravi/aa.txt': Permission denied
total 0
-????????? ? ? ? ? ? a.txt
-????????? ? ? ? ? ? aa.txt
r मुळे ls नावं वाचू शकतो, पण x शिवाय files बघू शकत नाही, म्हणून प्रश्नचिन्हं येतात. cat ravi/a.txt पण fail होतो.
उदाहरण 3: परत 700.
chmod 700 ravi
cd ravi
pwd
/home/ec2-user/ravi
Classroom line
I could get in because execute permission is there.
Class मधलं वाक्य
"Execute cha permission ahe mhanun yeu shaklo."
Execute ची permission आहे म्हणून आत येऊ शकलो.
Classroom line
I could get in because execute permission is there.
उदाहरण 4: 300 (-wx------), r नाही.
chmod 300 ravi
cd ravi
ls
ls: cannot open directory '.': Permission denied
touch new.txt
cat a.txt
hello
cd चालतो (x), ls fail (r नाही), पण touch चालतो (w + x), आणि आधीच माहीत असलेलं नाव उघडतं.
उदाहरण 5: 200 (-w-------), x शिवाय w.
chmod 200 ravi
touch ravi/n2.txt
touch: cannot touch 'ravi/n2.txt': Permission denied
rm ravi/aa.txt
rm: cannot remove 'ravi/aa.txt': Permission denied
नुसता w काहीच करत नाही. Create आणि delete ला w आणि x लागतात. (100 ने, म्हणजे फक्त x, cat ravi/a.txt चालतो पण ls ravi आणि touch fail होतात.)

Class board वरून: Class board: chmod 600 ravi, मग cd ravi, मग chmod 700 ravi आणि chmod 300 ravi. 600 cd अडवतो, 700 चालू देतो, आणि 300 cd चालू देतो पण ls नाही.
Figure 7. Animation: एकच folder, पाच modes. 700 सगळं चालतं; 600 cd नाही; 300 ls नाही; 555 create किंवा delete नाही; 200 काहीच नाही, कारण w ला x लागतो.
15. w नसलेला folder: chmod 555
काय. 555 (सगळ्यांना r-x) ने आत जाता येतं आणि list करता येतं, पण काहीच add, remove किंवा rename होत नाही:
chmod 555 ravi
cd ravi
touch rr.txt
touch: cannot touch 'rr.txt': Permission denied
mkdir tata
mkdir: cannot create directory ‘tata’: Permission denied
rm aa.txt
rm: cannot remove 'aa.txt': Permission denied
cp a.txt b.txt
cp: cannot create regular file 'b.txt': Permission denied
mv a.txt c.txt
mv: cannot move 'a.txt' to 'c.txt': Permission denied
Classroom line
I removed the write permission.
Class मधलं वाक्य
"Write cha permission kadhun ghetla."
Write ची permission काढून घेतली.
Classroom line
I removed the write permission.
पण आतल्या files बदलू शकतात. a.txt rw-rw-r-- आहे, म्हणून तिचा owner ती edit करू शकतो:
echo more >> a.txt
cat a.txt
hello
more
nano a.txt पण नीट save करतो ([ Wrote 2 lines ]). फक्त नवीन file fail होते: nano new.txt save करताना [ Error writing new.txt: Permission denied ] दाखवतो.
16. कोडं: root ची file ec2-user delete करू शकतो का?
प्रश्न. Root /home/ec2-user मध्ये एक file बनवतो. File root root, rw-r--r-- आहे. ec2-user ती sudo शिवाय delete करू शकतो का? Class मधले बहुतेक जण म्हणाले नाही.
Classroom line
Will it come into my own house and beat me?
Class मधलं वाक्य
माझ्याच घरात घुसून मलाच मारणार?
Classroom line – हिंदी
"Mere hi ghar me ghuske mujhe marega?"
उत्तर: हो. Delete करताना file च्या content ला हात लागत नाही. तो folder च्या list मधून एक नाव काढतो, म्हणून ते parent folder ठरवतो, आणि ec2-user चं home त्याचंच आहे, rwx सोबत.
पुरावा 1. तुमच्या home मध्ये:
ls -ld /home/ec2-user
drwx------. 3 ec2-user ec2-user 74 Jan 5 10:15 /home/ec2-user
sudo nano rootwala.txt
ls -l rootwala.txt
-rw-r--r--. 1 root root 10 Jan 5 10:15 rootwala.txt
आतलं बदलणं नाकारलं जातं, कारण तो file चा w आहे, आणि तो फक्त root कडे आहे:
echo more >> rootwala.txt
-bash: rootwala.txt: Permission denied
पण delete चालतो. File लिहिता येत नाही म्हणून rm आधी विचारतो; y द्या:
rm rootwala.txt
rm: remove write-protected regular file 'rootwala.txt'? y
ls rootwala.txt
ls: cannot access 'rootwala.txt': No such file or directory
(रिकामी file असेल तर प्रश्नात regular empty file येतं. rm -f प्रश्न विचारत नाही.)
पुरावा 2. तुम्ही बनवलेल्या folder मध्ये पण तेच:
mkdir myfolder
cd myfolder
sudo nano folderwala.txt
rm folderwala.txt
rm: remove write-protected regular file 'folderwala.txt'? y
Classroom line
It depends on the parent folder's write permission.
Class मधलं वाक्य
"Parent folder chya write permission varthi depend asto."
Parent folder च्या write permission वर depend असतं.
Classroom line
It depends on the parent folder's write permission.
आणि root ने बनवलेला folder? sudo mkdir rootwala तुमच्या home मध्ये root root folder बनवतो. त्याच्या आत तुम्ही काहीच बनवू शकत नाही (touch rootwala/x.txt → Permission denied), पण तो रिकामा असेपर्यंत rmdir rootwala ने काढू शकता, कारण त्याचं नाव तुमच्या folder मध्ये आहे. Root ने आत file ठेवली असेल तर त्या file वर rm -r fail होतो.
Figure 8. Animation: /home/ec2-user मध्ये root ची rootwala.txt. Edit नाकारलं जातं (file चा w root चा आहे), पण write-protected च्या प्रश्नानंतर rm चालतो, कारण delete parent folder वर अवलंबून असतो.
Correction
Class मध्ये सांगितलं की delete parent folder च्या write permission वर अवलंबून असतो. त्याला parent folder वर w आणि x दोन्ही लागतात: नुसता w (chmod 200) तरीही Permission denied देतो, section 14 मध्ये बघितलं तसं. आणि इथे ec2-user root ची file delete करू शकतो, पण तिचा content बदलू शकत नाही; तो file चा स्वतःचा w आहे.
17. अपवाद: /tmp वरचा sticky bit
का. /tmp हा असा folder आहे जिथे प्रत्येक user files बनवू शकतो, म्हणून सगळ्यांकडे त्यावर w आणि x असतो. वरच्या नियमाने तर कोणीही कोणाच्याही files तिथे delete करू शकेल. Sticky bit ते थांबवतो.
काय. तो शेवटच्या x च्या जागी t म्हणून दिसतो:
ls -ld /tmp
drwxrwxrwt. 25 root root 2220 Jan 5 10:15 /tmp
Sticky bit असेल तर file फक्त तिचा owner, folder चा owner किंवा root delete किंवा rename करू शकतो, file स्वतः rw-rw-rw- असली तरी. Box वर दोन users ने तपासलेलं:
[ec2-user@ip-172-31-xx-xx ~]$ echo hi > /tmp/ec2.txt
[ec2-user@ip-172-31-xx-xx ~]$ chmod 666 /tmp/ec2.txt
[ravi@ip-172-31-xx-xx ~]$ rm /tmp/ec2.txt
rm: cannot remove '/tmp/ec2.txt': Operation not permitted
t नसलेल्या drwxrwxrwx folder मध्ये ravi चा तोच rm चालतो. Sticky bit chmod +t folder किंवा chmod 1777 folder ने लावतात.
Figure 9. /tmp म्हणजे drwxrwxrwt: ravi तिथली ec2-user ची file delete करू शकत नाही (Operation not permitted). t नसता तर folder वर w आणि x असलेला कोणीही ती delete करू शकला असता.
Correction
"Delete parent folder वर अवलंबून असतो" या नियमाला एक अपवाद आहे जो class मध्ये सांगितला नाही: sticky bit (t) असलेले folders, जसं /tmp आणि /var/tmp. तिथे file फक्त तिचा owner, folder चा owner किंवा root delete करू शकतो.
18. "मी कुठेही sudo वापरू शकतो": परवानगी असेल तरच
काय. ec2-user sudo चालवू शकतो कारण Amazon Linux ने तसं set केलं आहे. तो wheel group मध्ये आहे, आणि cloud-init ने password शिवायचा एक rule टाकला आहे:
sudo cat /etc/sudoers.d/90-cloud-init-users
...
ec2-user ALL=(ALL) NOPASSWD:ALL
नवीन user ला असं काहीच मिळत नाही:
sudo -l -U ravi
User ravi is not allowed to run sudo on ip-172-31-xx-xx.
म्हणजे admin ने परवानगी दिल्याशिवाय ravi sudo वापरू शकत नाही, उदा. sudo usermod -aG wheel ravi ने. wheel चा rule (%wheel ALL=(ALL) ALL) ravi चा स्वतःचा password पण विचारतो, आणि कोणी sudo passwd ravi ने set करेपर्यंत नवीन user कडे तो नसतो.
Correction
Class मध्ये म्हटलं "मी Linux मध्ये कुठेही sudo वापरू शकतो". EC2 वर ec2-user साठी ते खरं आहे, कारण तो /etc/sudoers.d/90-cloud-init-users मध्ये (आणि wheel मध्ये) आहे. ravi सारख्या नेहमीच्या user ला admin ने हक्क देईपर्यंत User ravi is not allowed to run sudo मिळतं.
Ravindra Bagale's Tip
sudo फक्त server सांभाळणाऱ्या लोकांनाच द्या. फक्त code deploy करणाऱ्या developers ना बहुतेक वेळा एका project folder वर write access लागतो (मागच्या chapter सारखा group), root नाही.
19. खरी tip: EC2 Instance Connect सारखं fail होत असेल तेव्हा
Ravindra Bagale's Tip
Class मध्ये server ठीक असूनही EC2 Instance Connect सारखं "Error establishing SSH connection" दाखवत होतं. कारण होतं laptop चं घड्याळ: ते चुकलेलं होतं, आणि sync केल्यावर (Windows वर: Settings → Time & language → Date & time → Sync now) लगेच चाललं. Console connection कारण नसताना fail होत असेल तर हे तपासा:
- Instance running आहे आणि दोन्ही status checks pass झाले आहेत.
- Security group योग्य source कडून port 22 चालू देतो. Browser मधल्या Instance Connect साठी तो तुमच्या Region चा EC2 Instance Connect IP range, फक्त तुमचा IP नाही.
- AMI Instance Connect ला support करतो (Amazon Linux आणि Ubuntu करतात).
- तुमच्या computer ची date, time आणि time zone automatic set आहेत.
20. घरी करायचे tasks
Try at home
Task 1: symbolic
echo hello > my.txt, मगchmod 644 my.txt.chmod u+x,g+w my.txtचालवा आणिls -lच्या आधी result चा अंदाज लावा.chmod go-r my.txtचालवा, मगchmod u=rw,go=r my.txtने reset करा.chmod 444 my.txt, मगchmod +w my.txt, आणिumaskवापरून result समजावा.
Task 2: आकडे
640,711आणि754कागदावर decode करा, मग प्रत्येकchmodआणिls -lने तपासा.- "owner read आणि write, group read, others काहीच नाही" याचा आकडा बनवा.
chmod 000 my.txt,cat my.txtकरून बघा, मगchmod 644 my.txtने परत मिळवा.
Task 3: folders
- दोन files सकट
raviबनवा.chmod 700,600,300,555आणि200नंतरcd,ls -lआणिtouchकरून बघा. 555folder मध्ये आधीची filenanoने edit करा, मग नवीन file save करून बघा.
Task 4: कोडं
- Home मध्ये
sudo nano rootwala.txt, मगecho more >> rootwala.txtआणिrm rootwala.txt. दोन्ही results समजावा. ls -ld /tmpचालवा आणिtशोधा.
झालं की rm -r ravi ने delete करण्याआधी chmod 755 ravi ने folder परत नीट करा, आणि instance stop करा.
Recap
थोडक्यात
- दहा characters: type, मग user, group आणि others साठी
r w x. - Symbolic: कोणाला (
u g o a),+ - =, कोणती (r w x). Comma ने, space न देता एकत्र:chmod u+x,g+w. ugo=a. अक्षर नसलेलाchmod +wumask प्रमाणे चालतो;a+wसगळ्यांना देतोच.- आकडे: r = 4, w = 2, x = 1, user, group आणि others साठी एकेक digit.
645=rw-r--r-x. - गरजेवरून:
rwx --x r--=714; user चा w काढला →514. 000owner लाchmodपासून अडवत नाही; root तरीही वाचतो.777टाळा.- आकडे नऊच्या नऊ bits set करतात; अक्षरं फक्त सांगितलेलंच बदलतात.
sudoने बनवलेली fileroot root:ec2-userलाsudo chmodलागतो. File चालवायला root ला किमान एकxbit लागतो.root:rootfile साठीec2-userम्हणजे "others":766आणि776दोन्ही fail;755चालतो.- Files
644, scripts आणि folders755, keys600/400. Amazon Linuxec2-userला files664आणि folders775देतो (umask0002). - Folder:
r= list,w= create/delete/rename (xलागतो),x= आत जाणं. - आधीची file वाचणं किंवा edit करणं = file चे स्वतःचे bits + folder वर
x. - Delete parent folder (
w+x) वर अवलंबून, म्हणूनec2-userआपल्या home मधली root ची file delete करू शकतो, पण edit नाही. - Sticky bit (
t, जसं/tmp): फक्त owner, folder owner किंवा root delete करू शकतो. ec2-userलाsudo/etc/sudoers.d/90-cloud-init-usersमुळे;raviला नाही, admin परवानगी देईपर्यंत.
Samjla ka? Ghari ek folder banva, tyala 700, 600, 300 ani 555 deun bagha, ani root chi file delete karun bagha.
Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. User, folder आणि file ची नावं (ravi, ramesh, my.txt, a.txt, rootwala.txt वगैरे) शिकण्यासाठीची उदाहरणं आहेत. Commands आणि messages box वर GNU coreutils, bash आणि nano ने, umask 0002 असलेल्या ec2-user test account वापरून तपासले, आणि Amazon Linux 2023 server च्या settings शी जुळवले (umask 0002, home folder 700, /tmp drwxrwxrwt, cloud-init चा sudoers rule, coreutils 8.32); prompt मधला hostname, dates आणि ls -l मधला /tmp चा size उदाहरण म्हणून आहेत.