Linux user management: useradd, passwd, su, wheel ने sudo देणं-काढणं, आणि userdel
चला, सुरू करूया. User कसा बनवायचा आणि key ने login कसं करायचं हे तुम्हाला माहितीये. आज आपण एकाच user च्या, ravi च्या, server वरच्या पूर्ण आयुष्यातून जाणार आहोत. त्याला बनवायचं, password द्यायचा, त्याच्यावर switch करायचं, त्याला sudo द्यायचा, परत काढून घ्यायचा, आणि शेवटी त्याला delete करायचं. मध्ये आपण बघू की काढून घेतल्यावरसुद्धा sudo कधी कधी का चालत राहतो, /etc/passwd च्या प्रत्येक भागाचा अर्थ काय, आणि user delete केल्यावर files मागे का राहू शकतात. Server चालू ठेवा आणि प्रत्येक command माझ्यासोबत type करा.
या class मध्ये काय शिकणार
- Normal user ला सरळ
sudoका वापरता येत नाही, आणि त्याने काय वाचतं sudoशिवाय normal user काय बघू शकतो आणि काय नाहीuseraddने user बनवणं आणि त्याने काय काय बनवलं ते check करणंpasswdने password set आणि reset करणं, आणिBAD PASSWORDwarningssuआणिsu -ने user बदलणं, आणिexitने परत येणंsudoचं lecture आणि "ravi is not in the sudoers file"- Amazon Linux 2023 वर
ec2-userलाsudoकुठून मिळतो wheelgroup नेsudoदेणं, आणिgpasswd -dने काढून घेणं- Group मधले बदल पुढच्या login पासूनच का लागू होतात
/etc/passwdवाचणं: सात fields आणि UIDs- Users delete करणं:
userdelvsuserdel -r, आणि मागे राहिलेलं साफ करणं - घरी करायचे tasks
1. आपण कुठे आहोत
हा chapter का. Linux users, groups, sudo आणि file permissions मध्ये तुम्ही sudo adduser ने ravi बनवला, त्याला त्याच नावाचा group मिळतो ते बघितलं, आणि SSH key ने त्याच्या म्हणून login केलं. chmod सविस्तर मध्ये बघितलं की ec2-user ला sudo चालतो आणि ravi ला नाही. या chapter मध्ये एका user चं पूर्ण आयुष्य, step by step, जसं खऱ्या server वर admin करतो तसं.
गोष्ट. ec2-user हा server चा मालक. Team lead तो login स्वतःकडे ठेवतो. Developers ना ravi, ramesh सारखे normal users मिळतात, सुरुवातीला sudo शिवाय.
Classroom line
He's the owner of the server; he can do anything.
Class मधलं वाक्य
"Toch malak ahe server cha, to kahi bi karnar."
तोच मालक आहे server चा, तो काहीही करणार.
Classroom line
He's the owner of the server; he can do anything.
Figure 1. Animation: user च्या आयुष्यातल्या सहा steps. बनवा, password द्या, switch करा, sudo द्या, sudo काढा, delete करा.
या chapter मधल्या सगळ्या commands Amazon Linux 2023 च्या test copy वर चालवून बघितल्या, ज्यात sudo, login.defs आणि PAM settings EC2 server सारख्याच होत्या. तुमचं hostname, dates आणि process numbers वेगळे असतील.
2. Normal user सरळ sudo का वापरू शकत नाही
का. Class मध्ये एका student ने अगदी बरोबर प्रश्न विचारला:
Classroom line
Sir, if a normal user can just use sudo, what's the point of having users?
Class मधलं वाक्य
सर, normal user असाच sudo वापरून काम करायला लागला, तर users चा अर्थच काय उरला?
Classroom line – हिंदी
"Sir agar aise hi normal user sudo use karke kaam karne laga toh user ka meaning kya reh gaya?"
काय. बरोबरच. sudo म्हणजे "हे root म्हणून कर", आणि root काहीही करू शकतो. प्रत्येक user ला तो वापरता आला, तर वेगळे users काहीच protect करणार नाहीत. म्हणून Amazon Linux वर:
ec2-userलाsudoसुरुवातीपासून चालतो.raviसारख्या नवीन user ला नाही, जोपर्यंत admin परवानगी देत नाही.- प्रत्येक user स्वतःच्या home मध्ये काम करतो, आणि बाकीचे आत बघू शकत नाहीत.
कसं दिसतं. ravi म्हणून sudo वापरून file बनवून बघा. पहिल्या वेळेला sudo एक छोटं lecture दाखवतो, ravi चाच password विचारतो, आणि मग नकार देतो:
[ravi@ip-172-31-xx-xx ~]$ sudo touch sudotest.txt
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
For security reasons, the password you type will not be visible.
[sudo] password for ravi:
ravi is not in the sudoers file.
Message नीट बघा: हे "Permission denied" नाही. याचा अर्थ ravi साठी कुठलाच sudo rule नाही. हे lecture प्रत्येक user ने पहिल्यांदा sudo चालवल्यावरच येतं.
Classroom line
We should respect other people's privacy.
Class मधलं वाक्य
"Dusryancha aadar karayla pahije privacy cha."
दुसऱ्यांच्या privacy चा आदर करायला पाहिजे.
Classroom line
We should respect other people's privacy.
Correction
काही notes मध्ये आणि जुन्या servers वर दुसरी line दिसते, "This incident will be reported." Amazon Linux 2023 वरचा sudo (version 1.9.15) फक्त ravi is not in the sudoers file. एवढंच दाखवतो. अर्थ तोच: ravi ला कुठलाच sudo rule match होत नाही.
3. Normal user काय करू शकतो आणि काय नाही
का. हक्क द्यायला सुरुवात करण्याआधी भिंती कुठे आहेत ते माहिती पाहिजे.
काय. / आणि /home मध्ये सगळे जाऊ शकतात आणि list बघू शकतात (r-x). Homes 700 असतात, म्हणून फक्त मालक आत जातो. /etc/passwd सगळे वाचू शकतात; /etc/shadow नाही.
Figure 2. sudo शिवाय ravi / आणि /home मध्ये फिरू शकतो आणि /etc/passwd वाचू शकतो, पण दुसऱ्याच्या home मध्ये जाऊ शकत नाही, /etc/shadow वाचू शकत नाही, home बाहेर लिहू शकत नाही किंवा users बनवू शकत नाही.
Example 1: फिरून बघणं चालतं. हे ravi म्हणून चालवा:
[ravi@ip-172-31-xx-xx ~]$ cd /
[ravi@ip-172-31-xx-xx /]$ ls
bin boot dev etc home lib lib64 local media mnt opt proc root run sbin srv sys tmp usr var
[ravi@ip-172-31-xx-xx /]$ ls -ld /home /home/ec2-user /home/ravi
drwxr-xr-x. 4 root root 35 Jan 5 10:15 /home
drwx------. 2 ec2-user ec2-user 62 Jan 5 10:15 /home/ec2-user
drwx------. 2 ravi ravi 62 Jan 5 10:15 /home/ravi
Example 2: भिंती. अजूनही ravi म्हणून:
[ravi@ip-172-31-xx-xx ~]$ ls /home/ec2-user
ls: cannot open directory '/home/ec2-user': Permission denied
[ravi@ip-172-31-xx-xx ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[ravi@ip-172-31-xx-xx ~]$ useradd test1
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.
Classroom line
While you're ravi, you can't create a new user.
Class मधलं वाक्य
"Tumi ravi madhe astana, tumi navin user create karu shakat nahi."
तुम्ही ravi मध्ये असताना, तुम्ही नवीन user create करू शकत नाही.
Classroom line
While you're ravi, you can't create a new user.
![Handwritten board: lines starting with ~] for sudo useradd ravi and sudo passwd ravi, then ~]su ravi, then ec2-user] cd, then ravi] sudo useradd ravi with a cross after it; on the right /home/ravi with arrows to one, a.txt and two inside a large loop.](../../../assets/img/aws/linux-user-management-useradd-passwd-su-wheel-userdel-02-su-ravi-cd-and-sudo-useradd-fails.webp)
Class board वरून: ec2-user म्हणून sudo useradd ravi आणि sudo passwd ravi, मग su ravi; cd करेपर्यंत prompt मध्ये ec2-user चाच folder दिसतो. ravi म्हणून sudo useradd वर फुली. उजवीकडे /home/ravi, आत one folder, a.txt आणि two.
Correction
Class मध्ये सांगितलं की normal user / किंवा /home मध्ये cd सुद्धा करू शकत नाही. ते बरोबर नाही. / आणि /home others साठी r-x आहेत, म्हणून सगळे आत जाऊन list बघू शकतात. Normal user तिथे लिहू शकत नाही, किंवा दुसऱ्या user च्या 700 वाल्या home मध्ये जाऊ शकत नाही.
4. Step 1: useradd ने user बनवा
का. User म्हणजे फक्त folder नाही. Linux ला /etc/passwd मध्ये entry, एक group, एक home आणि password entry लागते. useradd हे सगळं एका दमात बनवतो. /home मध्ये folder बनवून कधीच "user बनवू" नका.
काय. Amazon Linux 2023 वर useradd आणि adduser एकच program आहे. एक command हे बनवते:
- User
ravi, पुढच्या रिकाम्या number (UID) सोबत, इथे1001. - त्याच number चा group
ravi. - Home
/home/ravi, mode700. - Mailbox file
/var/spool/mail/ravi. - Lock केलेली password entry (
!!), म्हणजे अजून कोणीच password ने login करू शकत नाही.
Example 3: बनवा आणि check करा. ec2-user म्हणून:
[ec2-user@ip-172-31-xx-xx ~]$ sudo useradd ravi
[ec2-user@ip-172-31-xx-xx ~]$ id ravi
uid=1001(ravi) gid=1001(ravi) groups=1001(ravi)
[ec2-user@ip-172-31-xx-xx ~]$ grep ravi /etc/passwd
ravi:x:1001:1001::/home/ravi:/bin/bash
[ec2-user@ip-172-31-xx-xx ~]$ sudo grep ravi /etc/shadow | cut -d: -f1,2
ravi:!!
useradd यशस्वी झाला की काहीच print करत नाही. शांतता म्हणजे success.

Class board वरून: तीन commands: sudo useradd ravi, sudo passwd ravi, आणि मग su ravi.
5. Step 2: passwd ने password set करा
का. नवीन user चा password lock असतो. तो set करेपर्यंत su ravi चालूच शकत नाही:
[ec2-user@ip-172-31-xx-xx ~]$ su ravi
Password:
su: Authentication failure
Classroom line
Did we set a password? No.
Class मधलं वाक्य
"Password set kela ka apan? Nahi na."
Password set केला का आपण? नाही ना.
Classroom line
Did we set a password? No.
कसं. Admin म्हणून, sudo सोबत set करा:
[ec2-user@ip-172-31-xx-xx ~]$ sudo passwd ravi
Changing password for user ravi.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
Type करताना काहीच दिसत नाही: ना stars, ना cursor हलतो. हे मुद्दाम, म्हणजे तुमच्या screen कडे बघणाऱ्याला किती अक्षरं आहेत ते मोजता येत नाही.
Classroom line
The cursor won't move; that's why you see no stars and the cursor doesn't move.
Class मधलं वाक्य
Cursor हलणार नाही... म्हणून ना star दिसतो ना cursor हलतो.
Classroom line – हिंदी
"Cursor move nahi hoga... iske liye na star dikhta hai na cursor move hota hai."
Example 4: कमकुवत passwords. Linux नवीन password check करतो आणि warning देतो. हे खरे messages:
BAD PASSWORD: The password is shorter than 8 characters
BAD PASSWORD: The password contains the user name in some form
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
root (म्हणजे sudo सोबत तुम्ही) password set करत असेल, तर हे फक्त warning आहे: परत type करा, password save होतो. पण ravi साध्या passwd ने स्वतःचा password बदलत असेल, तर हेच checks लागू होतात. तीन कमकुवत प्रयत्नांनंतर त्याला येतं:
passwd: Have exhausted maximum number of retries for service
दोन्ही वेळा type केलेलं जुळलं नाही, तर Sorry, passwords do not match. येतं आणि परत विचारतो.
Example 5: कोणी password विसरला. Admin तो reset करतो. जुना password लागत नाही:
sudo passwd ravi
Classroom line
Now, some people forgot their password.
Class मधलं वाक्य
"Ata kahi jananni password visarle."
आता काही जणांनी password विसरले.
Classroom line
Now, some people forgot their password.
Example 6: ravi passwd ने काय करू शकतो. ravi फक्त स्वतःचा password बदलू शकतो, आणि आधी चालू password टाकावा लागतो. दुसऱ्या कोणाचा तो बदलू शकत नाही:
[ravi@ip-172-31-xx-xx ~]$ passwd ramesh
passwd: Only root can specify a user name.
Correction
Class च्या terminal वर command su passwd ravi अशी type झाली. ती su चालवते आणि passwd नावाच्या user वर switch करायला सांगते:
su passwd ravi
su: user passwd does not exist or the user entry does not contain all the required fields
बरोबर command आहे sudo passwd ravi.
6. Step 3: su आणि su - ने user बदला
का. Class मध्ये आपण एकाच server वर अनेक लोक असल्याचं करून बघतो, म्हणून server मध्येच user बदलतो. खऱ्या team मध्ये प्रत्येक जण स्वतःच्या key ने थेट login करतो (ssh -i key.pem ravi@SERVER_PUBLIC_IP, त्याची public key /home/ravi/.ssh/authorized_keys मध्ये टाकल्यावर, जसं users chapter मध्ये दाखवलं). su हा class मधला shortcut आहे.
काय. su = "switch user". तुम्ही ज्या user वर जाताय, त्याचा password विचारतो.
su ravi: तुम्हीraviहोता, पण ज्या folder मध्ये होता तिथेच राहता.su - ravi:raviम्हणून पूर्ण login. तुम्ही नवीन environment सोबत/home/raviमध्ये पोहोचता.
Example 7: su ravi तुम्हाला जुन्याच folder मध्ये ठेवतो.
[ec2-user@ip-172-31-xx-xx ~]$ su ravi
Password:
[ravi@ip-172-31-xx-xx ec2-user]$ pwd
/home/ec2-user
[ravi@ip-172-31-xx-xx ec2-user]$ ls
ls: cannot open directory '.': Permission denied
[ravi@ip-172-31-xx-xx ec2-user]$ cd
[ravi@ip-172-31-xx-xx ~]$ pwd
/home/ravi
[ravi@ip-172-31-xx-xx ~]$ touch a.txt
[ravi@ip-172-31-xx-xx ~]$ mkdir myfolder
Prompt वाचा: ravi म्हणजे user, ip-172-31-xx-xx म्हणजे server, ec2-user म्हणजे तुम्ही ज्या folder मध्ये आहात तो, आणि $ म्हणजे normal user (# असता तर root). ls fail झाला कारण /home/ec2-user 700 आहे आणि ec2-user चा आहे. साधा cd केला की ravi आपल्या home मध्ये जातो, जिथे तो काम करू शकतो.
Classroom line
But ravi has no permission in that folder.
Class मधलं वाक्य
"Pan actually tya folder madhe tyala permission nasto ravila."
पण actually त्या folder मध्ये ravi ला permission नसते.
Classroom line
But ravi has no permission in that folder.
Example 8: su - ravi म्हणजे पूर्ण login.
[ec2-user@ip-172-31-xx-xx ~]$ su - ravi
Password:
Last login: Mon Jan 5 10:15:37 UTC 2026 on pts/1
[ravi@ip-172-31-xx-xx ~]$ pwd
/home/ravi
Figure 3. su ravi user बदलतो पण तुम्हाला /home/ec2-user मध्येच ठेवतो. su - ravi म्हणजे /home/ravi मधून सुरू होणारं पूर्ण login.
Example 9: परत येणं. exit type करा, किंवा Ctrl+D दाबा. दोन्हीने ravi चा shell बंद होतो आणि तुम्ही परत ec2-user होता:
[ravi@ip-172-31-xx-xx ~]$ exit
logout
[ec2-user@ip-172-31-xx-xx ~]$ whoami
ec2-user
su ravi (dash शिवाय) नंतर logout ऐवजी exit हा शब्द print होतो. Result तोच.
Correction
Class मध्ये user मधून "बाहेर यायला" Ctrl+C वापरलं. Ctrl+C ने logout होत नाही. ते फक्त चालू असलेली command थांबवतं, आणि तुम्ही ravi च राहता:
[ravi@ip-172-31-xx-xx ~]$ sleep 30
^C
[ravi@ip-172-31-xx-xx ~]$ whoami
ravi
User च्या shell मधून बाहेर यायला exit किंवा Ctrl+D वापरा.
Ravindra Bagale's Tip
दुसऱ्या user म्हणून काही test करताना su - ravi वापरा. मग तो user login केल्यावर जे बघतो तेच तुम्हाला दिसतं, त्याचं home folder आणि त्याच्या settings सकट.
7. Users एकमेकांपासून वेगळे: ramesh बनवा
का. प्रत्येकाच्या files by default private असतात. दुसरा user बनवून हे सिद्ध करूया.
Example 10: दुसरा user, पुढचा UID.
[ec2-user@ip-172-31-xx-xx ~]$ sudo useradd ramesh
[ec2-user@ip-172-31-xx-xx ~]$ sudo passwd ramesh
[ec2-user@ip-172-31-xx-xx ~]$ tail -3 /etc/passwd
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash
ravi:x:1001:1001::/home/ravi:/bin/bash
ramesh:x:1002:1002::/home/ramesh:/bin/bash
Example 11: ramesh ravi च्या home मध्ये बघू शकत नाही.
[ec2-user@ip-172-31-xx-xx ~]$ su - ramesh
Password:
[ramesh@ip-172-31-xx-xx ~]$ cd /home/ravi
-bash: cd: /home/ravi: Permission denied
[ramesh@ip-172-31-xx-xx ~]$ ls /home/ravi
ls: cannot open directory '/home/ravi': Permission denied
[ramesh@ip-172-31-xx-xx ~]$ exit
Classroom line
Can't go in, permission denied. Every user's files are separate and isolated.
Class मधलं वाक्य
"Nahi jau shakat, permission denied. So saglya user che files he separated and isolated astat."
नाही जाऊ शकत, permission denied. म्हणजे सगळ्या users च्या files separate आणि isolated असतात.
Classroom line
Can't go in, permission denied. Every user's files are separate and isolated.
8. /etc/passwd वाचणं
का. तुम्ही बनवलेला प्रत्येक user म्हणजे /etc/passwd मधली एक line. ती वाचली की user चा number, मुख्य group, home आणि shell कळतो.
काय. Line मध्ये : ने वेगळे केलेले सात fields असतात
ravi:x:1001:1001::/home/ravi:/bin/bash
ravi: user चं नाव.x: password इथे नाही; तो hash म्हणून/etc/shadowमध्ये ठेवलाय.1001: UID, user चा number. Linux खरं तर याच number ने काम करतो.1001: GID, मुख्य group (ravi) चा number.- (रिकामं): comment, पूर्ण नावासारखं.
ec2-userच्या line मध्येEC2 Default Userआहे. /home/ravi: home folder./bin/bash: login ला सुरू होणारा shell.
Figure 4. /etc/passwd च्या एका line चे सात fields, आणि Amazon Linux 2023 वरचे UIDs: root 0, system accounts 1000 च्या खाली, ec2-user 1000, मग 1001, 1002 असे.
Amazon Linux 2023 वरचे UIDs. root 0 आहे. System services ची accounts 1000 च्या खाली असतात. ec2-user 1000, आणि प्रत्येक नवीन user ला पुढचा number मिळतो: ravi 1001, ramesh 1002.
Example 12: फक्त वाचा, sudo लागत नाही.
[ec2-user@ip-172-31-xx-xx ~]$ ls -l /etc/passwd /etc/shadow
-rw-r--r--. 1 root root 1836 Jan 5 10:15 /etc/passwd
----------. 1 root root 998 Jan 5 10:15 /etc/shadow
[ec2-user@ip-172-31-xx-xx ~]$ grep ramesh /etc/passwd
ramesh:x:1002:1002::/home/ramesh:/bin/bash
/etc/passwd सगळे वाचू शकतात. /etc/shadow ला एकही permission bit नाही, म्हणून फक्त root वाचू शकतो.
Correction
Class मध्ये file home folder मधून sudo nano passwd ने उघडली. ती वेगळीच file आहे: / शिवायचा path म्हणजे "चालू folder मध्ये", म्हणून nano ने रिकामी [ New File ] उघडली. Save केली तर ~/passwd नावाची root ची file बनते, जिचा users शी काहीही संबंध नाही. खरी file आहे /etc/passwd. ती cat /etc/passwd ने वाचा (sudo लागत नाही) आणि हाताने edit करू नका: useradd, usermod आणि userdel वापरा, ते /etc/shadow आणि /etc/group पण बरोबर ठेवतात.
9. ec2-user ला sudo कुठून मिळतो
का. ravi ला sudo देण्याआधी, ec2-user ला तो कसा मिळाला ते बघूया.
काय. Amazon Linux 2023 server वर दोन rules sudo देऊ शकतात:
/etc/sudoersमध्ये:%wheel ALL=(ALL) ALL.wheelgroup चा प्रत्येक member root म्हणून काहीही चालवू शकतो, स्वतःचा password टाकल्यावर./etc/sudoers.d/90-cloud-init-usersमध्ये, पहिल्या boot ला cloud-init ने लिहिलेला:ec2-user ALL=(ALL) NOPASSWD:ALL.ec2-userpassword शिवाय काहीही चालवू शकतो.
Example 13: दोन्ही rules बघा. ec2-user म्हणून:
[ec2-user@ip-172-31-xx-xx ~]$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
[ec2-user@ip-172-31-xx-xx ~]$ sudo -l
...
User ec2-user may run the following commands on ip-172-31-xx-xx:
(ALL) ALL
(ALL) NOPASSWD: ALL
[ec2-user@ip-172-31-xx-xx ~]$ sudo passwd -S ec2-user
ec2-user LK 2026-01-05 0 99999 7 -1 (Password locked.)
ec2-user wheel मध्ये आहे, पण त्याचा password lock आहे (तुम्ही key ने login करता). म्हणजे फक्त wheel rule असता तर त्याने password विचारला असता, जो ec2-user कडे नाहीच. Cloud-init चा NOPASSWD rule हाच ec2-user ला न विचारता sudo चालवू देतो. आम्ही box वर दोन्ही test केलं:
ec2-userलाwheelमधून काढलं, cloud-init rule ठेवला:sudo whoamiतरीहीrootprint करतो.ec2-userwheelमध्ये, cloud-init rule काढला:sudopassword विचारतो, आणि तीन प्रयत्नांनंतरsudo: 3 incorrect password attemptsम्हणतो.
Figure 5. Amazon Linux 2023 वरचे दोन sudo rules, आणि ec2-user, wheel मधला ravi आणि wheel बाहेरचा ravi यांच्यासाठी काय होतं.
Classroom line
Only ec2-user can use sudo; others can if you add them to wheel.
Class मधलं वाक्य
"Fakt ec2-user sudo vaparu shakto. Dusre vaparu shaktat jar tyana wheel madhe add kela tar."
फक्त ec2-user sudo वापरू शकतो. दुसरे वापरू शकतात जर त्यांना wheel मध्ये add केलं तर.
Classroom line
Only ec2-user can use sudo; others can if you add them to wheel.
कोणत्याही user चं, त्याच्या म्हणून न जाता, check करा:
[ec2-user@ip-172-31-xx-xx ~]$ sudo -l -U ravi
User ravi is not allowed to run sudo on ip-172-31-xx-xx.
10. Step 4: wheel मध्ये add करून sudo द्या
का. कधी कधी developer ला खरंच root चं काम लागतं, जसं sudo yum install -y tree ने package install करणं किंवा sudo service nginx restart ने service restart करणं. ec2-user share करण्यापेक्षा त्या व्यक्तीला wheel मध्ये टाका.
कसं. ज्याला आधीच sudo आहे असा कुठलाही user हे करू शकतो. ec2-user म्हणून:
[ec2-user@ip-172-31-xx-xx ~]$ sudo usermod -aG wheel ravi
[ec2-user@ip-172-31-xx-xx ~]$ groups ravi
ravi : ravi wheel
[ec2-user@ip-172-31-xx-xx ~]$ sudo -l -U ravi
...
User ravi may run the following commands on ip-172-31-xx-xx:
(ALL) ALL
usermod: आधीच असलेला user बदलायचा.-G wheel: set करायचा extra group.-a: append, ravi कडे आधीपासून असलेले groups ठेवा.-aशिवाय-Gत्याचे extra groups काढून फक्त तुम्ही दिलेले ठेवतो.
Classroom line
Let's add ravi to the wheel group and see if he can use sudo.
Class मधलं वाक्य
"Wheel group madhe ravi ya user la add karun baghuya to sudo use karu shakto ka."
Wheel group मध्ये ravi या user ला add करून बघूया तो sudo वापरू शकतो का.
Classroom line
Let's add ravi to the wheel group and see if he can use sudo.
Example 14: नवीन login मध्ये ravi sudo वापरतो. तो स्वतःचा password टाकतो, root चा नाही आणि ec2-user चाही नाही:
[ec2-user@ip-172-31-xx-xx ~]$ su - ravi
Password:
[ravi@ip-172-31-xx-xx ~]$ id
uid=1001(ravi) gid=1001(ravi) groups=1001(ravi),10(wheel)
[ravi@ip-172-31-xx-xx ~]$ sudo touch /home/suudowala.txt
[sudo] password for ravi:
[ravi@ip-172-31-xx-xx ~]$ ls -l /home/suudowala.txt
-rw-r--r--. 1 root root 0 Jan 5 10:15 /home/suudowala.txt
File root ची आहे, कारण sudo ने touch root म्हणून चालवला. बरोबर password दिल्यावर साधारण पाच मिनिटं sudo त्या terminal मध्ये परत विचारत नाही.
Example 15: बदलाच्या आधी उघडलेल्या shell ला मिळत नाही. usermod चालवताना ravi आधीच login असेल, तर तो जुना shell अजूनही fail होतो:
[ravi@ip-172-31-xx-xx ~]$ id
uid=1001(ravi) gid=1001(ravi) groups=1001(ravi)
[ravi@ip-172-31-xx-xx ~]$ sudo whoami
[sudo] password for ravi:
ravi is not in the sudoers file.
त्याला exit करून परत login करावं लागतं. का ते section 12 मध्ये.
Correction
Class मध्ये सांगितलं की फक्त root कोणाला wheel मध्ये add करू शकतो. ज्याला आधीच sudo आहे असा कुठलाही user करू शकतो, उदा. ec2-user, sudo usermod -aG wheel ravi ने. आणि wheel member [sudo] password for ravi: ला स्वतःचा password टाकतो.
11. Step 5: gpasswd -d ने sudo काढून घ्या
कसं. ec2-user म्हणून ravi ला wheel मधून काढा:
[ec2-user@ip-172-31-xx-xx ~]$ sudo gpasswd -d ravi wheel
Removing user ravi from group wheel
[ec2-user@ip-172-31-xx-xx ~]$ groups ravi
ravi : ravi
gpasswd -d = या user ला या group मधून काढा. त्याचे बाकीचे groups तसेच राहतात.
Example 16: धक्का. ravi ने wheel मध्ये असताना उघडलेल्या shell मध्ये sudo चालतच राहतो:
[ravi@ip-172-31-xx-xx ~]$ id
uid=1001(ravi) gid=1001(ravi) groups=1001(ravi),10(wheel)
[ravi@ip-172-31-xx-xx ~]$ sudo whoami
root
Example 17: नवीन login मध्ये तो जातो.
[ravi@ip-172-31-xx-xx ~]$ exit
logout
[ec2-user@ip-172-31-xx-xx ~]$ su - ravi
Password:
[ravi@ip-172-31-xx-xx ~]$ sudo whoami
[sudo] password for ravi:
ravi is not in the sudoers file.
12. sudo का चालत राहिला: groups login ला ठरतात
का. Bug सारखं वाटतं, पण Linux असंच काम करतो, आणि कोणाचे हक्क काढताना हे माहिती असायला पाहिजे.
काय. तुम्ही login करता तेव्हा तुमच्या shell ला /etc/group मधून groups ची list मिळते, आणि shell बंद होईपर्यंत तीच list राहते. नाव न देता id चालवलं की तुमच्या चालू shell ची list दिसते. groups ravi आणि id ravi disk वरच्या files वाचतात. sudo तो चालवणाऱ्या shell चे groups बघतो.
दोन कारणं शक्य होती, म्हणून आम्ही box वर दोन्ही test केली:
- sudo चा password cache. बरोबर password नंतर
sudoसाधारण पाच मिनिटं परत विचारत नाही. जुन्या shell मध्ये आम्हीsudo -kने तो cache साफ केला आणि परतsudo whoamiचालवलं. त्याने ravi चा password विचारला आणि तरीहीrootprint केलं. म्हणजे cache हे कारण नाही; तो फक्त password चा प्रश्न टाळतो. - Shell ची स्वतःची groups list.
gpasswd -dनंतरसुद्धा जुन्या shell च्याidमध्ये10(wheel)दिसत होतं. नवीनsu - raviमध्ये फक्त1001(ravi)दिसलं, आणि तिथेsudofail झाला. हेच खरं कारण.
Group add करतानासुद्धा असंच होतं: Example 15 मधल्या shell ला नवीन login होईपर्यंत wheel मिळाला नाही.
Figure 6. Animation: group मधले बदल पुढच्या login पासून लागू होतात. जुना shell सुरुवातीचे groups ठेवतो, म्हणून gpasswd -d नंतर ravi परत login करेपर्यंत sudo चालत राहतो.
Correction
Class मध्ये gpasswd -d नंतर sudo touch hh.txt चालला, त्याचं कारण "user स्वतःला काढू शकत नाही" असं सांगितलं. खरं कारण: group मधले बदल नवीन login sessions ला लागू होतात, आणि ravi च्या चालू shell च्या groups list मध्ये wheel अजून होता. sudo -k ने sudo cache साफ करून ते थांबलं नाही; फक्त नवीन login ने थांबलं.
Ravindra Bagale's Tip
कोणाचा sudo काढताना त्याचे उघडे sessions पण बंद करा, उदा. sudo pkill -KILL -u ravi ने, नाहीतर तो logout होईपर्यंत वापरत राहू शकतो. तो गेला का ते who ने (users chapter मधून) check करा.
13. Step 6: userdel ने user delete करा
का. कोणी team सोडली की त्याचं login काढायचं. प्रश्न असा की त्याच्या files चं काय होतं.
Classroom line
When we delete a user, its files should be deleted too, right?
Class मधलं वाक्य
"Apan user delete kelyavar pan te content delete vhayla pahije na."
आपण user delete केल्यावर पण ते content delete व्हायला पाहिजे ना?
Classroom line
When we delete a user, its files should be deleted too, right?
काय. दोन पद्धती:
sudo userdel ravi: user काढतो, पण/home/raviआणि त्याचा mailbox/var/spool/mail/raviठेवतो.sudo userdel -r ravi: user आणि त्याचं home आणि mailbox काढतो.
Classroom line
User ravi gets deleted, but the ravi folder doesn't.
Class मधलं वाक्य
"Ravi ha user delete hoil pan ravi ha folder delete nahi honar."
ravi हा user delete होईल पण ravi हा folder delete नाही होणार.
Classroom line
User ravi gets deleted, but the ravi folder doesn't.
Classroom line
Because data is always important.
Class मधलं वाक्य
"Karan nehmi data mahatvacha asto."
कारण नेहमी data महत्त्वाचा असतो.
Classroom line
Because data is always important.
Example 18: ravi अजून login आहे. User चे processes चालू असताना userdel नकार देतो:
[ec2-user@ip-172-31-xx-xx ~]$ sudo userdel ravi
userdel: user ravi is currently used by process 2412
त्याला logout करायला सांगा (किंवा वरच्या tip प्रमाणे sessions बंद करा), मग परत करा.
Example 19: साधा userdel home ठेवतो.
[ec2-user@ip-172-31-xx-xx ~]$ sudo userdel ravi
[ec2-user@ip-172-31-xx-xx ~]$ su ravi
su: user ravi does not exist or the user entry does not contain all the required fields
[ec2-user@ip-172-31-xx-xx ~]$ ls -l /home
total 0
drwx------. 2 ec2-user ec2-user 62 Jan 5 10:15 ec2-user
drwx------. 2 ramesh ramesh 62 Jan 5 10:15 ramesh
drwx------. 3 1001 1001 78 Jan 5 10:15 ravi
-rw-r--r--. 1 root root 0 Jan 5 10:15 suudowala.txt
Folder अजून तिथेच आहे, आणि मालक म्हणून आता फक्त 1001 हा number दिसतो, कारण त्या number चा कुठलाच user आता उरला नाही.
Example 20: -r हे userdel च्या ऐवजी वापरायचं, नंतर नाही. User गेल्यावर -r ला काम करायला काहीच उरत नाही:
[ec2-user@ip-172-31-xx-xx ~]$ sudo userdel -r ravi
userdel: user 'ravi' does not exist
Example 21: बरोबर पद्धत, एकाच step मध्ये.
[ec2-user@ip-172-31-xx-xx ~]$ sudo userdel -r ramesh
[ec2-user@ip-172-31-xx-xx ~]$ ls /home
ec2-user ravi suudowala.txt
[ec2-user@ip-172-31-xx-xx ~]$ grep ramesh /etc/passwd
[ec2-user@ip-172-31-xx-xx ~]$
ramesh ची line, home आणि mailbox गेले. (ravi हा Example 19 मधून मागे राहिलेला folder आहे.)
Figure 7. userdel /home/ravi आणि mailbox ठेवतो, आता त्यांचा मालक 1001 हा number. userdel -r user, home आणि mailbox काढतो.
मागे राहिलेलं का महत्त्वाचं. पुढे काय होऊ शकतं ते बघा. ramesh गेला आहे आणि मागे राहिलेला /home/ravi अजून 1001 चा आहे. आता परत ramesh बनवा. त्याला 1001 मिळतो, म्हणजे ravi चा number, म्हणून जुना folder आता त्याचा होतो:
[ec2-user@ip-172-31-xx-xx ~]$ sudo useradd ramesh
[ec2-user@ip-172-31-xx-xx ~]$ id ramesh
uid=1001(ramesh) gid=1001(ramesh) groups=1001(ramesh)
[ec2-user@ip-172-31-xx-xx ~]$ ls -ld /home/ravi
drwx------. 2 ramesh ramesh 62 Jan 5 10:15 /home/ravi
Files नावांच्या नाही, numbers च्या असतात. useradd वापरात असलेल्या सगळ्यात मोठ्या number नंतरचा number देतो, म्हणून सगळ्यात नवीन users delete झाले की एखादा number परत येऊ शकतो.
Example 22: मागे राहिलेलं साफ करणं. आधीच साधा userdel वापरला असेल, तर मागे राहिलेला folder आणि mailbox हाताने काढा (इथे आधी परत sudo userdel -r ramesh, म्हणजे तो कोणाचाच राहत नाही). Enter दाबण्याआधी path दोनदा वाचा; rm -rf काहीच विचारत नाही:
sudo rm -rf /home/ravi
sudo rm -f /var/spool/mail/ravi
Correction
Class मध्ये सांगितलं की user delete केल्यावर folder कधीच delete होत नाही. ते फक्त साध्या userdel साठी खरं आहे. userdel -r home folder आणि mailbox पण delete करतो. तो userdel च्या ऐवजी वापरा, नंतर नाही: दुसरी command userdel: user 'ravi' does not exist म्हणून fail होते.
Ravindra Bagale's Tip
Company मध्ये आधी त्या व्यक्तीच्या home मधून लागणारं (code, notes, logs) copy करून घ्या, मग userdel -r ने delete करा. "लागेल कधीतरी" म्हणून मागे ठेवलेलं home एक दिवस दुसऱ्या कोणाच्या UID चं होतं.
14. पूर्ण lifecycle एका पानावर
काय. या chapter मधली प्रत्येक command, क्रमाने. सगळ्या ec2-user म्हणून (किंवा दुसऱ्या sudo user म्हणून) चालतात:
| Step | Command | काय करते |
|---|---|---|
| बनवा | sudo useradd ravi |
user, group ravi, /home/ravi (700), mailbox |
| Password | sudo passwd ravi |
set किंवा reset; जुना password लागत नाही |
| Switch | su - ravi |
ravi म्हणून पूर्ण login; परत exit किंवा Ctrl+D |
| Check | id ravi, groups ravi, sudo -l -U ravi |
disk वरचे groups आणि sudo हक्क |
| sudo द्या | sudo usermod -aG wheel ravi |
ravi च्या पुढच्या login पासून |
| sudo काढा | sudo gpasswd -d ravi wheel |
जुने shells exit होईपर्यंत ठेवतात |
| Delete | sudo userdel -r ravi |
user, home आणि mailbox |
15. घरी करून बघा
Try at home
Task 1: बनवा आणि switch करा
sudo useradd ravi, मगid raviआणिls -ld /home/ravi.- Password set करण्याआधी
su raviकरून बघा, मगsudo passwd raviने password द्या. su ravi+pwdचीsu - ravi+pwdशी तुलना करा. दोन्हीतूनexitने बाहेर या.
Task 2: भिंती
raviम्हणून:ls /,ls /home,cat /etc/passwd, मगls /home/ec2-userआणिcat /etc/shadow.rameshबनवा आणि/etc/passwdमधली त्याची line बघा. त्याचा UID किती?
Task 3: sudo द्या आणि काढा
- एक
su - ravishell उघडा आणि उघडाच ठेवा. दुसऱ्या terminal मध्येsudo usermod -aG wheel raviचालवा. - ravi च्या जुन्या shell मध्ये
idआणिsudo whoamiचालवा. मग नवीनsu - raviउघडून परत करून बघा. sudo gpasswd -d ravi wheelचालवा. उघडा shell (sudo -kनंतरसुद्धा) आणि नवीन login दोन्ही test करा. Results समजावून सांगा.
Task 4: delete
sudo userdel ravi, मगls -l /home. आता/home/raviचा मालक कोण?sudo rm -rf /home/raviआणिsudo rm -f /var/spool/mail/raviने साफ करा.rameshला बरोबर पद्धतीने,sudo userdel -r rameshने, delete करा.
झालं की ls /home मध्ये फक्त ec2-user दिसतोय ते check करा, आणि instance stop करा.
Recap
थोडक्यात
- Users लोकांना वेगळं ठेवतात: स्वतःचं home (
700), स्वतःच्या files, by defaultsudoनाही. /आणि/homeमध्ये सगळे जाऊन list बघू शकतात; तिथे लिहायला, किंवा दुसऱ्याच्या home मध्ये जायला, हक्क लागतात.sudo useradd raviuser, त्याच नावाचा group,/home/raviआणि mailbox बनवतो, password lock ठेवून.sudo passwd ravipassword set किंवा reset करतो. Type केलेलं दिसत नाही. root लाBAD PASSWORDफक्त warning; स्वतःचा password बदलणाऱ्या user ला ते checks लागू होतात.su raviतुमचा folder ठेवतो;su - raviम्हणजे/home/raviमध्ये पूर्ण login. बाहेरexitकिंवा Ctrl+D ने, Ctrl+C ने नाही.- Rule नसलेल्या user ला
ravi is not in the sudoers file.येतं. ec2-userचाsudocloud-init च्याNOPASSWDrule मुळे चालतो;wheelmembers स्वतःच्या password नेsudoवापरतात.- कुठलाही
sudousersudoदेऊ शकतो:sudo usermod -aG wheel ravi. काढायलाsudo gpasswd -d ravi wheel. - Group मधले बदल पुढच्या login पासून. जुने shells त्यांचे groups ठेवतात,
sudo -kनंतरसुद्धा. /etc/passwd: नाव,x(hash/etc/shadowमध्ये), UID, GID, comment, home, shell.ec2-user1000, मग1001,1002./etc/passwdवाचा, edit करू नका; home मधलाsudo nano passwdही वेगळी, नवीन file.userdelhome आणि mailbox ठेवतो;userdel -rकाढतो. साध्याuserdelऐवजी-rवापरा, आणि मागे राहिलेलं साफ करा, कारण UIDs परत येऊ शकतात.
Classroom line
Our Linux doesn't end here; it ends only when the whole course ends.
Class मधलं वाक्य
"Linux sampat nahiye apla. Jevha purna course sampat tevha ch linux sampat."
आपलं Linux संपत नाहीये. जेव्हा पूर्ण course संपतो तेव्हाच Linux संपतं.
Classroom line
Our Linux doesn't end here; it ends only when the whole course ends.
Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. User ची नावं (ravi, ramesh) आणि files ची नावं शिकण्यासाठीची उदाहरणं आहेत. Commands आणि messages Amazon Linux 2023 च्या test copy वर (sudo 1.9.15, shadow-utils 4.9, passwd 0.80, libpwquality 1.4.4) तपासले, ज्यात sudoers, PAM आणि login.defs files EC2 server सारख्याच होत्या, आणि EC2 server च्या settings read-only वाचून. Prompt मधलं hostname, dates, sizes आणि process numbers उदाहरणादाखल आहेत.