මුරපද විමසුමක් නොමැතිව නිශ්චිත වැඩසටහනක් root ලෙස ක්‍රියාත්මක කරන්නේ කෙසේද?


176

මුරපදයක් නොමැතිව මට සුඩෝ ලෙස යමක් ධාවනය කිරීමට අවශ්‍යයි, එබැවින් මම මෙය භාවිතා visudoකර මගේ sudoersගොනුවට එකතු කළෙමි :

MYUSERNAME ALL = NOPASSWD: /path/to/my/program

පසුව මම එය අත්හදා බැලුවෙමි:

$ sudo /path/to/my/program
[sudo] password for MYUSERNAME: 

එය මුරපදයක් ඉල්ලන්නේ ඇයි? මුරපදයක් ඉල්ලීමකින් තොරව, root නොවන පරිශීලකයෙකු සමඟ root ලෙස විධාන ක්‍රියාත්මක කරන්නේ / භාවිතා කරන්නේ කෙසේද?

Answers:


97

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

එය සිදු කිරීමෙන්, sudoසාමාන්‍යයෙන් හැර අනෙක් සියලුම විධානයන් /path/to/my/programසඳහා මුරපදයක් ඉල්ලා සිටිනු ඇත, එය ඔබගේ මුරපදය ඉල්ලීමකින් තොරව ධාවනය කිරීමට සැමවිටම ඉඩ දෙයි.


7
/path/to/my/programපයිතන් පිටපතක් නම් මෙය තවමත් ක්‍රියාත්මක වේද?
sadmicrowave

මෙම හැකි වැඩසටහන වෙනුවට අන්වර්ථ, bash සඳහා කට්ටලයක් (එනම් විය .bashrc)? නැත්නම් ඇතුළත ෂෙල් පිටපතක්ද /usr/local/sbin? අත්හදා බැලීමට.
නිකොස් ඇලෙක්සැන්ඩ්‍රිස්

1
නිකොස් - නැත එය අන්වර්ථයක් විය නොහැක. එය සැබෑ මාවතකට යොමු විය යුතුය.
පෝල් හෙඩර්ලි

sudoers? කොහෙද? ඔබේ පිළිතුර භාවිතා කිරීමට බරයි (
වාසිලී සුරිකොව්

As වාසිලීසුරිකොව්: එය සාමාන්‍යයෙන් ක්‍රියාත්මකයි /etc, නමුත් සමහර පද්ධති එය වෙනත් තැනක තබයි . ඔබට එය සොයාගත නොහැකි නම්, උත්සාහ කරන්න man sudoers. එම පද්ධතිය සඳහා ඉදිකරන ලද manඅවස්ථාවේදී එම ගොනුව සඳහා දේශීය ස්ථානය පිටුවට ආදේශ කළ යුතුය sudo.
වොරන් යං

142

ගැළපෙන ඇතුළත් කිරීම් කිහිපයක් තිබේ නම් /etc/sudoers, සුඩෝ අවසාන එක භාවිතා කරයි. එබැවින්, ඔබට මුරපද විමසුමක් මඟින් ඕනෑම විධානයක් ක්‍රියාත්මක කළ හැකි නම් සහ මුරපද විමසුමක් නොමැතිව විශේෂිත විධානයක් ක්‍රියාත්මක කිරීමට ඔබට අවශ්‍ය නම්, ඔබට අවසාන වශයෙන් ව්‍යතිරේකය අවශ්‍ය වේ.

myusername ALL = (ALL) ALL
myusername ALL = (root) NOPASSWD: /path/to/my/program

(root)ක්‍රමලේඛය root ලෙස ක්‍රියාත්මක කිරීමට ඉඩ ලබා දීම සඳහා භාවිතා කිරීම සැලකිල්ලට ගන්න . (ඔබ ඇඟවුම් සිතා බැලුවහොත් මිස අවමයට වඩා වැඩි අවසරයක් ලබා නොදෙන්න.)

උබුන්ටු ධාවනය නොකරන හෝ පෙරනිමි සුඩෝ වින්‍යාසය වෙනස් කළ පා readers කයන් සඳහා සටහන (උබුන්ටුගේ සුඩෝ පෙරනිමියෙන් හරි) : ඉහළ වරප්‍රසාද සහිත ෂෙල් ස්ක්‍රිප්ට් ධාවනය කිරීම අවදානම්, ඔබ පිරිසිදු පරිසරයකින් ආරම්භ කළ යුතුය (කවචය ආරම්භ වූ පසු, එය ප්‍රමාද වැඩියි ( ෂෙල් ස්ක්‍රිප්ට් මත සැකසීමට ඉඩ දෙන්න බලන්න ), එබැවින් එය බලා ගැනීමට ඔබට සූඩෝ අවශ්‍ය වේ). ඔබ සතුව ඇති Defaults env_resetබවට /etc/sudoersහෝ මෙම විකල්පය සම්පාදක කාල පෙරනිමිය බවට වග බලා ගන්න ( sudo sudo -V | grep envඇතුළත් විය යුතුය Reset the environment to a default set of variables).


3
ex to jhon වෙතින් sudo su an no pass -----> joOH ALL = (ALL) NOPASSWD: / bin / su
bortunac

5
riadrian ඔබට අත්තනෝමතික විධානයන් root ලෙස ඉඩ දීමට අවශ්‍ය නම්, එය සාදන්න john ALL=(ALL) NOPASSWD: all. ඒ හරහා යෑමෙන් පලක් නැත su.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

ප්‍රශ්නය: මගේ ෂෙල් ස්ක්‍රිප්ටයේ අවසරය වෙනස් කළ යුතු අතර එය ආරක්‍ෂාව සඳහා root පරිශීලකයාට පමණක් වෙනස් කර කියවිය හැකිය. මුරපදයක අවශ්‍යතාවයකින් තොරව සියලු අවසරයන් ලබා දී ඇති ස්ක්‍රිප්ට් එක වෙනස් කිරීම ගැන මම සිතමි, එවිට එය ඔහුට / ඇයට අවශ්‍ය දේ කරයි. නිසැකවම, මෙම වරප්‍රසාදය ඇත්තේ කුමන ස්ක්‍රිප්ට් දැයි දැන ගැනීමට ප්‍රහාරකයාට සූඩෝ ගොනුව කියවීමට පවා නොහැකි නමුත්, ඔහු / ඇය ඒවා ගබඩා කර ඇති ෆෝල්ඩරය සොයාගත් පසු තවමත් මගේ සියලු අභිරුචි ස්ක්‍රිප්ට් සමඟ උත්සාහ කළ හැකිය. .
ජෙෆ්රි ලෙබොව්ස්කි

1
E ජෙෆ්රි ලෙබොව්ස්කි ඔබට ස්ක්‍රිප්ට් (සෘජුව හෝ වක්‍රව) ක්‍රියාත්මක කරන සුඩෝ රීතියක් තිබේ නම්, ස්ක්‍රිප්ට් ගොනුවට සහ ස්ක්‍රිප්ට් ගොනුව සහ ඩිරෙක්ටරියට ලිවිය හැක්කේ root (හෝ කෙසේ හෝ මූල වරප්‍රසාද ඇති පුද්ගලයින්ට) පමණි. එහි මව් නාමාවලිය සහ එසේ ය. ඕනෑම කෙනෙකුට ස්ක්‍රිප්ට් ගොනුව කියවිය හැකි වීම ප්‍රශ්නයක් නොවේ (එහි මුරපදයක් හෝ යමක් අඩංගු නොවේ නම්, නමුත් එය නරක අදහසකි, මුරපදයක් තිබේ නම් එය එහි ගොනුවේ තිබිය යුතුය, එසේ නොමැතිනම් අහම්බෙන් එය කාන්දු වීමේ අවදානමක් ඇත. මෙම වෙබ් අඩවියේ ඇති ප්‍රශ්නයක කේතයේ එම කොටස පිටපත් කිරීම.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

1
නැවත ඇරඹීම අවශ්‍ය වන්නේ ඉතා ස්වල්පයක් පමණි. වෙනස් කිරීමෙන් පසු sudoers, ඔබට විශේෂ දෙයක් කිරීමට අවශ්‍ය නැත: sudoසෑම අවස්ථාවකදීම එය පරීක්ෂා කරයි.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

24

අවවාදයයි : මෙම පිළිතුර අනාරක්ෂිත යැයි සැලකේ. පහත අදහස් බලන්න

සම්පූර්ණ විසඳුම: අපේක්ෂිත ප්‍රති output ලය ලබා ගැනීමට පහත පියවර ඔබට උපකාරී වනු ඇත:

  1. නව ස්ක්‍රිප්ට් ගොනුවක් සාදන්න ( create_dir.shඔබට අවශ්‍ය ස්ක්‍රිප්ට් නම වෙනුවට ආදේශ කරන්න):

    vim ~/create_dir.sh
    

    ස්ක්‍රිප්ට් පරිශීලකයාගේ නිවාස නාමාවලිය තුළ සාදනු ඇත

  2. පමණක් බව ඇතැම් විධානයන් එකතු කල rootහෝ sudoපරිශීලක root බහලුම මට්ටමින් ෆොල්ඩරයක් නිර්මාණය වැනි ක්රියාත්මක කළ හැකිය:

    mkdir /abc
    

    සටහන:sudo මෙම විධානයන්ට එකතු නොකරන්න . සුරකින්න සහ පිටවීම (භාවිතා කරමින් :wq!)

  3. එය භාවිතයෙන් එයට අවසර ලබා දෙන්න:

    sudo chmod u+x create_dir.sh
    
  4. මෙම ස්ක්‍රිප්ටයට මුරපදයක් අවශ්‍ය නොවන පරිදි වෙනස්කම් කරන්න.

    1. sudoersගොනුව විවෘත කරන්න:

      sudo visudo -f /etc/sudoers
      
    2. අවසානයේ පහත පේළිය එක් කරන්න:

      ahmad ALL=(root) NOPASSWD: /home/ahmad/create_dir.sh
      

      ahmadඔබගේ පරිශීලක නාමය කුමක් වුවත් ප්‍රතිස්ථාපනය කරන්න . මෙය අවසාන පේළිය බවට වග බලා ගන්න. සුරැකීමට සහ පිටවීමේ.

  5. දැන් විධානය ක්‍රියාත්මක කිරීමේදී sudoඑයට පෙර එකතු කරන්න :

    sudo ./create_dir.sh
    

    මෙය මුරපදයක් ඉල්ලීමකින් තොරව විධාන විධානාවලිය ගොනුව තුළ ක්‍රියාත්මක කරයි.

මෙහි සඳහන් පහසු පියවර අනුගමනය කරන්න http://step4wd.com/2013/09/14/run-root-commands-in-linux-ubuntu-without-password/


ඔබ මෙහි අදාළ පියවරයන් ලබා දී වඩාත් සවිස්තරාත්මක තොරතුරු සඳහා සබැඳිය උපස්ථයක් ලෙස භාවිතා කරන්නේ නම් වඩා හොඳය. එම සබැඳිය තවදුරටත් වලංගු නොවුවද ඔබේ පිළිතුර හැකි අගයක් රඳවා ගනී.
ඇන්තන්

16
මෙම උපදෙස් අනාරක්ෂිත ය. පරිශීලකයාට ඔහුගේ / ඇයගේ නිවසේ අයිතිය (අනුමාන වශයෙන්) ඇති බැවින් එහි sudoකොටස sudo chmod u+x create_dir.shඅනවශ්‍යය. පරිශීලකයාට ලිවිය හැකි බැවින් create_dir.sh, ඔබ එම පරිශීලකයාට නොමිලේ root shell එකක් ලබා දී ඇත.
ලෙකන්ස්ටයින්

1
ELekensteyn එයින් අදහස් කරන්නේ පරිශීලකයා ලෙස ක්‍රියාත්මක වන ඕනෑම වැඩසටහනකට ය. මුරපදයක් නොමැතිව සුඩෝ සමඟ ඕනෑම දෙයක් ධාවනය කිරීමට පරිශීලකයාට ඉඩ දෙන්න.
pydsigner

2
මට යමක් මග හැරී තිබේද? ඔබේ වරප්‍රසාද ඉහළ නැංවීමට ඔබ chmodවිශ්වාසය තබන බැවින් සමස්තය අනවශ්‍ය බව මම විශ්වාස කරමි sudo.
ජී-මෑන් පවසන්නේ 'මොනිකා නැවත

12

මම හිතන්නේ ඔබේ වාක්‍ය ඛණ්ඩය වැරදියි. අවම වශයෙන් මා වැඩ කරන පහත සඳහන් දෑ භාවිතා කරමි:

myusername ALL=(ALL) NOPASSWD: /path/to/executable

7
මෙම (ALL)කොටස එය හැර හරියටම එම බලපෑමක් ඇති කොට ඇත, විකල්ප වේ. තිබීම (root)වඩා හොඳ වනු ඇත, නමුත් එය නොමැතිවීම ගැටලුව පැහැදිලි නොකරයි.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

මෙම විධානය සඳහා sudo සඳහා +1 මිස වෙන කිසිවක් නැත! සමස්ත පද්ධතියම බිඳ දැමීමට හේතුවක් නැත ...
ජොහාන්

3
O ජොහාන්: එය දැනටමත් ප්‍රශ්නයක් විය.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

6

ඔබට sudo භාවිතා කිරීමෙන් වැළකී සිටීමට හෝ sudoers වින්‍යාස ගොනුව වෙනස් කිරීමට අවශ්‍ය නම්, ඔබට මෙය භාවිතා කළ හැකිය:

sudo chown root:root path/to/command/COMMAND_NAME
sudo chmod 4775 path/to/command/COMMAND_NAME

මෙමඟින් sudo අවශ්‍යතාවයකින් තොරව විධානය root ලෙස ක්‍රියාත්මක වේ.


ඇවැත්නි, මම මීට පෙර මෙම විසඳුම ගැන අසා නැත, සිත අවුල් කරවන
දෙයක්

හොඳම පිළිතුර සොයා ගැනීමට මට මේ දේවල් පහළට අනුචලනය කළ යුත්තේ ඇයි? මෙම සරල ආරක්ෂිත විසඳුමට ස්තූතියි.
රයන්නර්ඩ්

1
@RyanNerd: මෙය ආරක්ෂිත විසඳුමක් නොවේ. මුරපදයකින් තොරව OP දැන් විධානය root ලෙස ධාවනය කළ හැකිවා පමණක් නොව, ඕනෑම කෙනෙකුට දැන් root පරිශීලකයා ලෙස විධානය ක්‍රියාත්මක කළ හැකිය.
ඊතන් ෆුරමන්

"chmod 4775 ගොනු නාමය" එක් ක්‍රමයකි. දෙවනුව, සම්පූර්ණ ගොනු අවසරයන් නැවත අර්ථ දැක්වීමකින් තොරව SETUID වෙත වඩා හොඳ ක්‍රමයක් වන්නේ "chmod u + s ගොනු නාමය"
16851556

5

ඔබට මංජාරෝ වැනි ඩිස්ට්‍රෝ එකක් තිබේ නම්, ඔබ මුලින්ම / etc / sudoers හි අර්ථ දැක්වීම ඉක්මවා යන ගොනුවක් සමඟ ගනුදෙනු කළ යුතුය, ඔබට එය මකා දැමිය හැකිය හෝ ඔබේ නව වින්‍යාසයන් එක් කිරීමට එම ගොනුව සමඟ කෙලින්ම වැඩ කළ හැකිය.

මෙම ගොනුව:

sudo cat /etc/sudoers.d/10-installer

එය බැලීමට ඇති එකම ක්‍රමය මූල වරප්‍රසාද යටතේ ය, ඔබට එය නොමැතිව මෙම නාමාවලිය ලැයිස්තු ගත කළ නොහැක, මෙම ගොනුව මංජාරෝ විශේෂිත ය, ඔබට මෙම වින්‍යාසය වෙනත් නමකින් සොයාගත හැකි නමුත් එකම නාමාවලියෙන්.

ඔබ කැමති ගොනුවක් තුළ, ඔබට අවශ්‍ය වින්‍යාසය ලබා ගැනීමට පහත පේළි (ය) එකතු කළ හැකිය:

කණ්ඩායමක් සඳහා සත්‍යාපනය නොසලකා හරින්න

%group ALL=(ALL) NOPASSWD: ALL

හෝ පරිශීලකයෙකු සඳහා සත්‍යාපනය නොසලකා හරින්න

youruser ALL=(ALL) NOPASSWD: ALL

හෝ නිශ්චිත පරිශීලකයෙකු සඳහා ක්‍රියාත්මක කළ හැකි සත්‍යාපනය නොසලකා හරින්න

youruser ALL=(ALL) NOPASSWD: /path/to/executable

ඉක්මන් සටහන: සත්‍යාපනයකින් තොරව SUDO භාවිතා කිරීමට ඔබ දොරක් විවෘත කරයි, එයින් අදහස් කරන්නේ ඔබේ පද්ධතියෙන් සියල්ල වෙනස් කරමින් සියල්ල ක්‍රියාත්මක කළ හැකි බවත්, වගකීමෙන් යුතුව එය භාවිතා කරන බවත්ය.


4

සුඩෝ අන්වර්ථ නොවන බව තහවුරු කරන්න. මේ වගේ දුවන්න

/usr/bin/sudo /path/to/my/program

උදාහරණයක් ලෙස මේ වගේ ෂෙල් අන්වර්ථයක්:

alias sudo="sudo env PATH=$PATH"

මෙම හැසිරීමට හේතු විය හැක.


ඔබ හරි, මගේ අදහස මෙතැනින් ඉවත් වී ඇත , ඒ ගැන කණගාටුයි. ඒ කෙසේ වුවත් මම කුතුහලයක් කරනවා - ඔබ සැකසුම් වෙනස් කිරීමට අනුවර්ත නාමකරණයට බලාපොරොත්තු වන්නේ කෙසේද sudoerssudo විසින්. නැතහොත් sudoමුරපද පරිහරණය කිරීම සඳහා මෙම දෝෂ පණිවිඩය සැමවිටම මුද්‍රණය කරන දෙයකට හරවා යැවීම ගැන ඔබ කතා කරනවාද? මෙහි එය එසේ විය නොහැක්කකි ...
පීටර්

2
මට OP එක වගේ ප්‍රශ්නයක් තිබුණා. එය alias sudo="sudo env PATH=$PATH"මගේ තුළ තිබීම නිසා ඇති විය ~/.bashrc. එය මා වෙනුවෙන්ම විසඳා ගැනීම සහ අන්ධ ලෙස මගේ ව්‍යාපාරය ගැන සිතනවා වෙනුවට, මෙම ත්‍රෙඩ් එක දිගේ එන ඕනෑම කෙනෙකුට හැකි විසඳුමක් ලෙස මම මගේ පිළිතුර ඉදිරිපත් කළෙමි.
Sepero

1
එය හොඳයි, නමුත් එය පැහැදිලිව පෙනෙන විට (මේ අවස්ථාවේ දී අවම වශයෙන් සමහර පුද්ගලයින්ටවත් නොවේ) යම් සන්දර්භයක් සැපයීමට සහ මිනිසුන් අන්ධ ලෙස මැජික් උමතු භාවිතා කිරීමෙන් වලක්වා ගැනීම සඳහා පිළිතුරට පැහැදිලි කිරීමක් කිරීම හොඳය. +2 (- (- 1) + +1). :)
පීටර්ෆ්

2

ඔබ ඔබේ ස්ක්‍රිප්ට් ක්‍රියාත්මක කරන විට එය ක්‍රියාත්මක කළ යුතුය sudo /path/to/my/script.

සංස්කරණය කරන්න: ඔබගේ පිළිතුර වෙනත් පිළිතුරක් මත පදනම්ව, ඔබට මෙය අයිකනයකින් ක්‍රියාත්මක කිරීමට අවශ්‍යය. .desktopටර්මිනලයේ මෙන් ඔබේ වැඩසටහන සුඩෝ සමඟ ක්‍රියාත්මක කරන ගොනුවක් සෑදීමට ඔබට අවශ්‍ය වනු ඇත .

gtk-sudoදෘශ්‍ය මුරපද විමසුමක් සඳහා භාවිතා කිරීම ගැනද ඔබට සලකා බැලිය හැකිය .

ඔබ බොහෝ දේ සලකා බැලිය යුත්තේ ඔබ මූල ලෙස දේවල් ධාවනය නොකළ යුතු බවත්, ඔබට මාර්ග අවසරයන් අවශ්‍ය නොවන පරිදි පද්ධතිය පාරට down තින් වෙනස් කිරීම යන්නට වඩා හොඳ ක්‍රමයක් වනු ඇති බවත්ය.



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

2

මෙය මට ගැටලුව විසඳීය (වෙනත් පිළිතුරු කිහිපයක්ද උත්සාහ කර ඇත, එය උදව් වන්නට ඇත):

මා ඇමතූ ස්ක්‍රිප්ට් එක, මට /usr/binලිඛිත අවසරයක් නොමැති ඩිරෙක්ටරියක් (මට සාමාන්‍යයෙන් එහි ඕනෑම ලිපිගොනු කියවිය හැකි වුවද). ස්ක්‍රිප්ට් එක chmodded + x (ක්‍රියාත්මක කළ හැකි අවසරය), නමුත් එය තවමත් ක්‍රියාත්මක නොවීය. මෙම ගොනුව මගේ නිවාස නාමාවලියෙහි මාර්ගයකට ගෙන යාම වෙනුවට /usr/binමුරපදයක් ඇතුළත් නොකර සුඩෝ සමඟ එය ඇමතීමට මට හැකි විය.

මා සැක කළ දෙයක් (අනාගත පා readers කයන්ට පැහැදිලි කිරීම): ඔබ ඔබේ පිටපත සුඩෝ ලෙස ධාවනය කළ යුතුය. ස්ක්‍රිප්ට් එක අමතනsudo විට ටයිප් කරන්න. ඔබේ ස්ක්‍රිප්ට් තුළ ඇත්ත වශයෙන්ම root අවශ්‍ය විධානය සඳහා භාවිතා නොකරන්න (මගේ නඩුවේ යතුරුපුවරු පසුබිම වෙනස් කිරීම). සමහර විට එය ද ක්‍රියාත්මක වන නමුත් ඔබට එය අවශ්‍ය නොවන අතර එය නොකිරීමට වඩා හොඳ විසඳුමක් සේ පෙනේ.sudo


දෙවන ඡේදයේ මගේ ගැටලුවට පිළිතුරක් තිබුණි
එම්. අහමඩ් සාෆර්

Um මුහම්මද් අහ්මද්සෆර් එය උදව් කිරීම ගැන සතුටුයි!
ලූක්

4
මුරපදයක් නොමැතිව සැක සහිත විධානය ක්‍රියාත්මක කිරීමට sudoඔබට සුදුසු අයිතිවාසිකම් (සකසා ඇති sudoers) තිබේ නම්, ස්ක්‍රිප්ට් එකක ඇතුළත භාවිතා කිරීම ඉතා සුදුසුය . එමඟින් දේවල් ටිකක් ආරක්ෂිත වේ.
පීටර්ෆ්

අනෙක් පිළිතුරු සමඟ සංවාදයක් ලෙස නොව පියවරෙන් පියවර 'ඔබ මෙය කරන්නේ කෙසේද' යන්න නැවත ලිවීමට මෙම පිළිතුර භාවිතා කළ හැකිය
Walrus the Cat

Al වොල්රස්ට් කැට් හොඳ කරුණක්. මගේ පිළිතුර නැවත කියවීමෙන්, මම ටිකක් ව්‍යාකූල වන්නට ඇතැයි සිතමි. මේ මොහොතේ වුවද, නිශ්චිත තත්වය කුමක්දැයි මට මතක නැත, එබැවින් මට වඩා හොඳ ලිවීමක් කළ නොහැක. ඔබ එය වටහා ගන්නේ නම්, සමහර විට පිළිතුරු කිහිපයක එකතුවක්, සෑම ආකාරයකින්ම නව පිළිතුරක් ඉදිරිපත් කරන්න!
ලූක්

1

තවත් හැකියාවක් වනුයේ ඔබේ ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කිරීම සඳහා ස්ථාපනය කිරීම, වින්‍යාස කිරීම සහ සුපිරි විධානය භාවිතා කිරීමයි

super /path/to/your/script

ඔබ සමහර ද්විමය ක්රියාත්මක කිරීමට අවශ්ය නම් ක්රියාත්මක (උදා: ඔබ සම්පාදනය ඇති බව ELF කලහ ඒ, සමහර සී මූල කේතය සිට ද්විමය) නොවේ මූල ලෙස script-, ඔබ විය හැකි එය විකිපිඩියාව setuid (සහ ඇත්ත වශයෙන්ම /bin/login, /usr/bin/sudoහා /bin/suහා superසියල්ල තාක්ෂණය භාවිතා කරන්නේ ). කෙසේ වෙතත්, ඉතා ප්‍රවේශම් වන්න, ඔබට විශාල ආරක්ෂක වළක් විවෘත කළ හැකිය .

සංයුක්තව, ඔබේ වැඩසටහන paranoically සංකේත කළ යුතුය (එසේ විය හැකි සතුරු පරිශීලක උපකල්පනය "කටයුතු" පෙර සියලු තර්ක සහ පරිසරය හා පිටත තත්ත්වය පරීක්ෂා), ඔබ භාවිතා කළ හැකි seteuid (2) සහ මිතුරන් (ද බලන්න setreuid (2) ) ප්රවේශමෙන් ( හැකියාවන් (7) සහ අක්තපත්‍ර (7) සහ ක්‍රියාත්මක කිරීම (2) ද බලන්න ...)

එවැනි ද්විමය ස්ථාපනය කිරීමේදී ඔබ භාවිතා කරනු ඇත chmod u+s( chmod (1) කියවන්න ).

නමුත් ඉතා ප්‍රවේශම් වන්න .

එවැනි දෙයක් කේතනය කිරීමට පෙර උසස් ලිනක්ස් ක්‍රමලේඛනය ඇතුළුව සෙටූයිඩ් පිළිබඳ බොහෝ දේ කියවන්න .

ස්ක්‍රිප්ටයක් හෝ ෂෙබාං- එඩ් කළ දෙයක් සැකසිය නොහැකි බව සැලකිල්ලට ගන්න. නමුත් ඔබට (සී වලින්) කුඩා සෙටූයිඩ්-ද්විමය එතීමට කේත කළ හැකිය.


0

ඉතා මැනවින් ඔබ අභිරුචිකරණය කරන්නේ නම් ඔබ හරහා ක්‍රියාත්මක කළ හැකි විධානයන් කෙලින්ම සංස්කරණය කිරීම වෙනුවට sudoවෙනම ගොනුවක මෙම වෙනස්කම් සිදු කළ යුතුය . ගොනුව (ය) සංස්කරණය කිරීමට ඔබ සැමවිටම භාවිතා කළ යුතුය . ඔබ කවදාවත් දිය යුතු මත විධාන./etc/sudoers.d/sudoersvisudoNOPASSWDALL

උදාහරණයක්: sudo visudo -f /etc/sudoers.d/mynotriskycommand

අවසර ලබා දෙන ඔබේ රේඛාව ඇතුළු කරන්න: myuser ALL= NOPASSWD: /path/to/your/program

ඉන්පසු සුරකින්න සහ පිටවන්න visudo, ඔබට සින්ටැක්ස් දෝෂ තිබේ නම් ඔබට අනතුරු අඟවයි.

ඔබේ මුරපදය සඳහා ඔබෙන් විමසනු ලබන නිමැවුමේ කිසියම් විධානයකට පෙර sudo -lපරිශීලක විශේෂිත NOPASSWDවිධානයන් කිසිවක් දිස්වන්නේ නම්, ඔබේ පරිශීලකයාට ලබා දී ඇති අවසරයන් බැලීමට ඔබට ධාවනය කළ හැකිය %groupyouarein ALL=(ALL) ALL.

ඔබ මෙම sudoers.d ලිපිගොනු විශාල ප්‍රමාණයක් නිර්මාණය කරන බව ඔබ දුටුවහොත් සමහර විට ඔබට ඒවා පරිශීලකයාට නම් කිරීමට අවශ්‍ය වනු ඇත, එවිට ඒවා දෘශ්‍යමාන කිරීමට පහසු වේ. ගොනුව තුළ ඇති FILE NAMES සහ RULES ඇණවුම් කිරීම ඉතා වැදගත් බව මතක තබා ගන්න, අවසන් වරට පැටවූ ජයග‍්‍රහණ, එය පෙර ඇතුළත් කිරීම්වලට වඩා වැඩි හෝ අඩු අවසරයකින් යුක්ත වේ.

00-99 හෝ aa / bb / cc උපසර්ගයක් භාවිතා කිරීමෙන් ඔබට ගොනු නාම අනුපිළිවෙල පාලනය කළ හැකිය, නමුත් සංඛ්‍යාත්මක උපසර්ගයක් නොමැති ඕනෑම ලිපිගොනු ඔබ සතුව ඇත්නම්, ඒවා අංකිත ලිපිගොනු පසු පටවනු ඇත. සැකසුම්. මෙයට හේතුව ඔබේ භාෂා සැකසුම් මත පදනම්ව “ශබ්දකෝෂ වර්ග කිරීම” කවචය මුලින් වර්ග අංක භාවිතා කරන අතර පසුව “නඟින” අනුපිළිවෙලට වර්ග කිරීමේදී ඉහළ සහ කුඩා අකුරු අතර සම්බන්ධ විය හැකිය.

ධාවනය කරන්න printf '%s\n' {{0..99},{A-Z},{a-z}} | sortසහ printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sortඔබගේ වත්මන් භාෂාව පිටපත් යන්න බැලීමට AaBbCcආදිය හෝ ABCපසුව abcහොඳම "පසුගිය" ලිපිය භාවිතා කිරීම උපසර්ගය වනු ඇත දේ තීරණය කිරීමට.


0

මුරපදය ඉල්ලීමකින් තොරව ඕනෑම පරිශීලකයෙකුට වැඩසටහන sudo ලෙස ක්‍රියාත්මක කිරීමට ඉඩ දීම සඳහා ඔබට පහත පේළිය එක් කළ හැකිය

%sudo ALL=(root) NOPASSWD: /path/to/your/program

තුල /etc/sudoers

% Sudo එය සාදන බව සලකන්න .


එය සුඩෝ රීතියක් ඉටු කිරීමට එක් ක්‍රමයක් වන අතර, මෙම රීතිය මත NOPASSWD ධජය සැකසීම තවමත් මුරපද විමසුමක් ඇති කළේ මන්ද යන ප්‍රශ්නයට එය පිළිතුරු සපයන්නේ නැත. එය සිදු වූයේ මන්දැයි අදහසක් සඳහා පිළිගත් පිළිතුර බලන්න.
ජෙෆ් ෂලර්

0

පහත දැක්වෙන්නේ ඔබට මුරපදයකින් තොරව විධානයක් ක්‍රියාත්මක කිරීමට අවශ්‍ය අවස්ථාව සඳහා නිශ්චිත විකල්ප සමූහයක් තිබේ නම් පමණි, එහිදී විකල්පයන්ගෙන් කොටසක් විචල්‍ය වේ. AFAIK sudoers ප්‍රකාශ වල විචල්‍යයන් හෝ අගය පරාසයන් භාවිතා කළ නොහැක, එනම් ඔබට පැහැදිලිවම ප්‍රවේශ වීමට ඉඩ දිය හැකි command option1නමුත් command option2භාවිතා නොකෙරේ :

user_name ALL=(root) /usr/bin/command option1

නමුත් මෙම ව්යුහය නම් command option1 value1, එහිදී value1වෙනස් විය හැක, ඔබ එක් එක් හැකි වටිනාකම සඳහා පැහැදිලි sudoers රේඛා තිබිය යුතු බව value1. ෂෙල් ස්ක්‍රිප්ට් එය වටා මගක් සපයයි.

මෙම පිළිතුර එම්. අහමඩ් සාෆර්ගේ පිළිතුරෙන් ආනුභාව ලත් අතර එහි ආරක්ෂක ගැටළුව විසඳයි.

  1. ඔබ නොමැතිව විධානය අමතන තැන ෂෙල් ස්ක්‍රිප්ට් එකක් සාදන්න sudo.
  2. ස්ක්‍රිප්ට් එක root-වරප්‍රසාදිත ෆෝල්ඩරයක සුරකින්න (උදා /usr/local/bin/), ගොනුව root සතු (උදා chown root:wheel /usr/local/bin/script_name) වෙනත් අයට ලිවීමේ ප්‍රවේශයක් නොමැතිව කරන්න (උදා chmod 755 /usr/local/bin/script_name).
  3. Visudo භාවිතා කරමින් sudoers සඳහා ව්‍යතිරේකය එක් කරන්න:

    user_name ALL=(root) NOPASSWD: /usr/local/bin/script_name.

  4. ඔබගේ ස්ක්‍රිප්ට් ධාවනය කරන්න sudo script_name.

උදාහරණයක් ලෙස, මට මැකෝස් හි දර්ශන නින්දේ වේලාව වෙනස් කිරීමට අවශ්‍යයි. මෙය සිදු කරන්නේ:

sudo pmset displaysleep time_in_minutes

මුරපද ටයිප් කිරීමේ කරදරය යුක්තිසහගත නොකරන අහිංසක ක්‍රියාවක් නින්දේ වේලාව වෙනස් කිරීම ගැන මම සලකා බලමි, නමුත් pmsetබොහෝ දේ කළ හැකි අතර මෙම වෙනත් දේවල් සුඩෝ මුරපදය පිටුපස තබා ගැනීමට මම කැමතියි.

එබැවින් මට පහත පිටපත ඇත /usr/local/bin/ds:

#!/bin/bash
if [ $# -eq 0 ]; then
        echo 'To set displaysleep time, run "sudo ds [sleep_time_in_minutes]"'
else
        if [[ $1 =~ ^([0-9]|[1-9][0-9]|1[0-7][0-9]|180)$ ]]; then
                pmset displaysleep $1 
        else
                echo 'Time must be 0..180, where 0 = never, 1..180 = number of minutes'
        fi
fi

sudoersගොනුව අවසානයේ මට පහත පේළිය ඇත:

user_name ALL=(root) NOPASSWD: /usr/local/bin/ds

කල් ඉකුත්වීම මිනිත්තු 3 කින් සැකසීමට, මම මගේ ස්ක්‍රිප්ට් එක සාමාන්‍ය පරිශීලක ගිණුමෙන් ධාවනය කරමි user_name:

sudo ds 3

PS මගේ බොහෝ ස්ක්‍රිප්ට් ආදාන වලංගු කිරීම අනිවාර්ය නොවේ, එබැවින් පහත සඳහන් දෑ ද ක්‍රියාත්මක වේ:

#!/bin/bash
pmset displaysleep $1 

0

විකල්පයක් ලෙස ඔබට පයිතන් පුඩෝ පැකේජය භාවිතා කළ හැකිය .

ස්ථාපනය:

user$ sudo -H pip3 install pudo # you can install using pip2 also

මූල වරප්‍රසාදය යටතේ විධාන ක්‍රියාත්මක කිරීම සඳහා පයිතන් ස්වයංක්‍රීයකරණය සඳහා භාවිතා කරන කේත ස්නිපටය පහත දැක්වේ:

user$ python3 # or python2
>>> import pudo
>>> (ret, out) = pudo.run(('ls', '/root')) # or pudo.run('ls /root')
>>> print(ret)
>>> 0
>>> print(out)
>>> b'Desktop\nDownloads\nPictures\nMusic\n'

මූල වරප්‍රසාදය යටතේ විධාන ක්‍රියාත්මක කිරීම සඳහා cmd උදාහරණය පහත දැක්වේ:

user$ pudo ls /root
Desktop  Downloads  Pictures  Music
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.