මුරපදයක් නොමැතිව sudo විධානය ක්‍රියාත්මක කරන්නේ කෙසේද?


243

කොහොමද කරන්නේ ubuntuඋබුන්ටු සර්වර් 12.04 සඳහා AWS රූප පරිශීලක passwordless ඇති sudoකිසිදු වින්යාසයේ ඒ සඳහා පවතින විට සියලු විධාන සඳහා /etc/sudoers?

මම ඇමසන් හි උබුන්ටු සේවාදායකය 12.04 භාවිතා කරමි. සුපුරුදු උබුන්ටු පරිශීලකයාට සමාන හැසිරීමක් ඇති නව පරිශීලකයෙකු එක් කිරීමට මට අවශ්‍යය. sudoමෙම නව පරිශීලකයා සඳහා මුරපද රහිතව මට අවශ්‍යය .

එබැවින් මම නව පරිශීලකයෙකු එකතු කර සංස්කරණයට ගියෙමි /etc/sudoers(ඇත්ත වශයෙන්ම විසූඩෝ භාවිතා කරමින්). එම ගොනුව කියවීමෙන් පෙරනිමි ubuntuපරිශීලකයාට කණ්ඩායමේ sudoසාමාජිකයෙකු වීමෙන් මුරපදයක් නොලැබෙන බවක් පෙනෙන්නට තිබුණි admin. ඒ නිසා මම මගේ නව පරිශීලකයා ඒ සඳහා එකතු කළා. වැඩ කළේ නැහැ. ඊට පස්සේ මම NOPASSWDනියෝගය එකතු කරන්න උත්සාහ කළා sudoers. එය ද ක්‍රියාත්මක වූයේ නැත.

කෙසේ වෙතත්, දැන් මට කුතුහලයක් ඇත. කොහොමද කරන්නේ ubuntuඔවුන් අර්ථ දක්වා නොමැත නම්, පරිශීලක passwordless වරප්රසාද ලබා /etc/sudoers. මෙයට ඉඩ දෙන යාන්ත්‍රණය කුමක්ද?


Answers:


343

හරි, මම පිළිතුර සොයාගෙන ඇති අතර එය සම්පූර්ණත්වය සඳහා මෙහි තැබිය හැකිය. එහි අවසානයේ /etc/sudoersමා සිතුවේ අදහස් දැක්වීමක් පමණි:

#includedir /etc/sudoers.d

කෙසේ වෙතත් මෙයට ඇත්ත වශයෙන්ම එම නාමාවලියෙහි අන්තර්ගතය ඇතුළත් වේ. ඇතුලත ගොනුව /etc/sudoers.d/90-cloudimg-ubuntu. අපේක්ෂිත අන්තර්ගතයන් ඇති

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

සුපුරුදු උබුන්ටු පරිශීලකයා සඳහා සුඩෝ වින්‍යාසය පවතින්නේ එතැනිනි.

Visudo භාවිතයෙන් ඔබ මෙම ගොනුව සංස්කරණය කළ යුතුය. පහත දැක්වෙන විධානය මඟින් දෘශ්‍ය ගොනුව නිවැරදි ගොනුව සංස්කරණය කිරීමට ඉඩ ලබා දේ.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

වැනි පේළියක් එක් කරන්න:

aychedee ALL=(ALL) NOPASSWD:ALL

අවසානයේදී.


4
මට හොඳටම විශ්වාසයි මට සම්පූර්ණ නැවත පණගැන්වීමක් කළ යුතු බව.
aychedee

2
නව ලොග් වූ සෑම පරිශීලකයෙකුටම නව සූඩෝ නීති භාවිතා කරනු ඇත - එබැවින් ඔබට අවම වශයෙන් නැවත පිවිසිය යුතුය
bluszcz

34
'sudo service sudo restart' වැඩ කරයි :)
Laice

5
පසු සංස්කරණ වලදී (උදාහරණයක් ලෙස 14.04) ඇතුළත් කළ ගොනුව /etc/sudoers.d/90-cloud-init-users(සංස්කරණය කිරීමට .. sudo visudo -f /etc/sudoers.d/90-cloud-init-users). ජනනය කළ ගොනුව සංස්කරණය කරනවාට වඩා අමතර ලිපිගොනු නිර්මාණය කිරීම වඩා පිරිසිදු වුවත්. අඩංගු ගොනු බව සටහන .හෝ අවසන් ~වනු ඇත නොවන ඇතුළත් කළ යුතුය.
මොලොම්බි

3
@ Phil_1984_ බොහෝ දුරට, එය ඇතුළත් කිරීමට ඉඩ නොදෙන, නමුත් අමුතු අදහස් දැක්වීමකින් පෙළඹෙන්නේ නැති සුඩෝ හි අනෙකුත් (සම්මත?) අනුවාද සමඟ අනුකූල වීමට ඉඩ දීම සඳහා එය විවරණයක් ලෙස එකතු කරන ලදි. (ප්‍රමිති අමාරුයි! ;-)
jpaugh

96

බහුවිධ සේවාදායකයන් හරහා මෙම හැසිරීම පහසුවෙන් ප්‍රතිනිර්මාණය කිරීම සඳහා කළ යුතු වඩාත්ම forward ජු ඉදිරි දෙය පහත බව මම සොයා ගතිමි.

sudo visudo

මෙම රේඛාව වෙනස් කරන්න:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

මෙම පේළියට:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

මෙම රේඛාව යටතේ එය ගෙනයන්න:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

ඔබට දැන් මෙය තිබිය යුතුය:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

මුරපදයක් සමඟ සුඩෝ ප්‍රවේශය අවශ්‍ය සෑම පරිශීලකයෙකුටම :

sudo adduser <user> sudo

මුරපදයක් නොමැතිව සූඩෝ ප්‍රවේශය අවශ්‍ය සෑම පරිශීලකයෙකුටම :

sudo adduser <user> admin

අවසාන වශයෙන්, මෙය ක්‍රියාත්මක කරන්න:

sudo service sudo restart

ඒක තමයි!

සංස්කරණය කරන්න: පෙරනිමියෙන් එය පවතින බව මා නොසිතන හෙයින් ඔබට පරිපාලක කණ්ඩායම එකතු කිරීමට සිදුවනු ඇත.

sudo groupadd admin

ඔබට මෙම විධානය හරහා පෙරනිමි AWS ubuntuපරිශීලකයා adminකණ්ඩායමට එක් කළ හැකිය:

sudo usermod ubuntu -g admin

සටහන: @hata සඳහන් කළ පරිදි, admඋබුන්ටු කුමන අනුවාදය භාවිතා කරන්නේද යන්න මත පදනම්ව, ඔබේ පරිපාලක කණ්ඩායම් නාමය ලෙස භාවිතා කිරීමට ඔබට අවශ්‍ය විය හැකිය .


3
ස්වයං සටහනට: අඩු සීමිත අවසරයන් තොගයේ පහළට ගෙනයාම සම්මුතියකි. නමුත් එය නොකිරීම ක්‍රියාකාරීත්වයට බලපාන්නේ නැත.
poweratom

2
ජිමිනිකිස් පැහැදිලි කළ පරිදි, මගේ උබුන්ටු GNOME 16.04 LTS හි % sudo පසු % පරිපාලක ස්ථානගත කිරීමට මට සිදු විය . ප්ලස්, පරිපාලකට සමූහ හැඳුනුම් නංගියෙක්වත් වේ පරිපාලක නමුත් අද්මිරාල් මගේ උබුන්ටු මත. නැවත පණ ගැන්වීම අවශ්‍ය නොවීය.
hata

8

මම /etc/sudoers.d/ බහලුම යටතේ මගේම ගොනුවක් සාදමි - ඇමසන් වලාකුළු විසින් සාදන ලද ගොනුව කිසියම් යාවත්කාලීනයකදී නැවත ලියනු ලැබේ. ඔබගේ ගොනුව /etc/sudoers.d හි නිර්මාණය කිරීමෙන් පසුව, මෙම ප්‍රවේශය එක් කරන්න,

<your user name> ALL=(ALL) NOPASSWD:ALL

පද්ධතිය නැවත ආරම්භ කරන්න, මෙය ක්‍රියාත්මක වනු ඇත.


4

කිසිදු සංස්කාරකයක් භාවිතා නොකර කෙටි පිළිතුර (බාෂ් මත පරීක්ෂා කර ඇත, දුරස්ථ ධාරක මත ක්‍රියාත්මක කිරීමට ඉතා අවදානම්).

වත්මන් පරිශීලකයා සඳහා මුරපදයක් නොමැතිව වැඩ කිරීමට සුඩෝ වින්‍යාස කරන්න:

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

සංස්කරණය සමඟ පරීක්ෂා කරන්න:

sudo visudo -c

මුරපදයකින් තොරව ඔබට සූඩෝ භාවිතා කළ හැකිදැයි තහවුරු කරන්න:

sudo cat /etc/sudoers | grep "$USER"

... හෝ මෙය සමඟ උත්සාහ කරන්න:

sudo <anything>

21
මෙය ඉතා භයානක අවවාදයකි ... මෙම වැරැද්ද පිටපත් කර අලවන්න, එවිට ඔබ ඔබේම සේවාදායකයෙන් ඉවත් වනු ඇත. එබැවින් විසූඩෝ භාවිතා කිරීමට උපදෙස්. තැටියට සුරැකීමට පෙර සින්ටැක්ස් නිවැරදි දැයි එය පරීක්ෂා කරයි. එබැවින්, මෙය භාවිතා කිරීමට කැමති ඕනෑම කෙනෙකුට. ඔබ සැලකිලිමත් වන දුරස්ථ සේවාදායකයක එය නොකරන්න. ඔබේ පිළිතුරෙහි ඒ පිළිබඳ අනතුරු ඇඟවීමක් ඇතුළත් කිරීමට ඔබට අවශ්‍ය විය හැකිය.
aychedee

10
විසූඩෝ භාවිතා නොකිරීම භයානක අදහසකි. මාව විශ්වාස කරන්න, මම දන්නවා.
ට්‍රොග්නන්ඩර්ස්

1
IMHO, අතින් සංස්කරණයකට වඩා පිටපත්-පේස්ට් ආරක්ෂිතයි. සුළු සරල කිරීමක්:echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
theartofrain

4
arttheartofrain - සාමාන්‍යයෙන්, මම එකඟ වෙමි, නමුත් visudoසූඩෝ ගොනුව බිඳ දැමීමට ඔබට ඉඩ නොදීම ගැන විශේෂයෙන් සතුටු වන අතර එමඟින් ඔබේ යන්ත්‍රයෙන් (හෝ අවම වශයෙන් සුඩෝ) ඔබව අගුළු නොදමනු ඇත.
ජෝන් වී

3
On ජොන්වී ඔබට පරිපාලක අයිතිවාසිකම් visudoද අහිමි විය හැකිය , නමුත් සාමාන්‍යයෙන් අහම්බෙන් නොවේ, මන්ද සුඩෝ ලිපිගොනු සඳහා ව්‍යාකරණvisudo අනුව හොඳින් සැකසූ වෙනස්කම් පමණක් ඉතිරි වේ . බොහෝ වැරදි කෘතිමව වැරදියි, එබැවින් ඒවායින් කිසිදු හානියක් සිදු නොවේ visudo. නම් /etc/sudoersහෝ ගොනුවක් /etc/sudoers.d වන අසනීප-පිහිටුවා, sudoභාවිතා නෑ ඇයි වන ආරක්ෂක පියවරක් ලෙස ඕනෑම කෙනෙකුට සඳහා උසස් කිරීමට වරප්රසාද ප්රතික්ෂේප visudoභයානකයි. ( සමහර විටpkexec නැවත පණගැන්වීමකින් තොරව එය නිවැරදි කළ හැකිය .)
එලියා කගන්

1

මම මේ පර්යේෂණ කරන ලදී ලෙස, මම තුළ රේඛාවක් තියෙනවා කියලා /etc/sudoersගොනුව අදහසක්, නමුත් නොවන බව නියෝගයක් බහලුම යටතේ ඕනෑම ගොනුවක් හෝ ෆෝල්ඩරයක් කරවන /etc/sudoers/*අන්තර්ගතය අබිබවා යා /etc/sudoers.

බැලූ බැල්මට එය අදහස් දැක්වීමේ රේඛාවක් ලෙස පෙනෙන බැවින් මෙය රහසිගත කුඩා නියෝගයකි. එය මේ වගේ ය:

#includedir /etc/sudoers.d

සීඅයිසීඩී නල මාර්ගයක භාවිතා කිරීම සඳහා මා විසින් මූල නොවන, මුරපද රහිත පරිශීලකයෙකු ආධ්‍යාත්මික ඩෝකර් රූපයක ක්‍රියාත්මක කර ඇත්තේ මේ ආකාරයට ය ubuntu:18.04:

RUN \
  useradd -U foo -m -s /bin/bash -p foo -G sudo && passwd -d foo && passwd -d root && \
  sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
  sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
  sed -i /etc/sudoers -re 's/^#includedir.*/## Removed the #include directive! ##"/g' && \
  echo "Customized the sudoers file for passwordless access!" && \
  echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
  echo "root ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
  echo "foo user:";  su foo -c 'whoami && id' && \
  echo "root user:"; su root -c 'whoami && id'

ඉහත කේතය සමඟ කුමක් සිදුවේද:

  • පරිශීලකයා සහ කණ්ඩායම fooනිර්මාණය කර ඇත.
  • පරිශීලකයා සහ කණ්ඩායම fooයන දෙකටම එකතු වේ .foosudo
  • නිවාස නාමාවලිය සකසා ඇත /home/foo.
  • කවචය සකසා ඇත /bin/bash.
  • දෙකම සඳහා මුරපද fooසහ rootමකා දමනු ලැබේ.
  • මෙම sedවිධානය කිරීමට පේළිගත යාවත්කාලීන කරන්නේ /etc/sudoersඉඩ ගොනු fooහා rootවෙත passwordless ප්රවේශ පරිශීලකයන් sudoවිධාන.
  • මෙම sedවිධානය අක්රීය #includedirඋප බහලුම් ඕනෑම ගොනු මෙම පේළිගත යාවත්කාලීන පරයා යන්න ඉඩ ඇති බව නියෝගයක්.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.