Bash හි යළි හරවා යැවීම සමඟ sudo භාවිතා කරන විට “අවසරය ප්‍රතික්ෂේප කිරීම” විසඳන්නේ කෙසේද?


151

ලිපිගොනු සංස්කරණයට ඉඩ දීම සඳහා සූඩෝ භාවිතා කරන විට, මට නිතිපතා 'අවසරය ප්‍රතික්ෂේප කරනු ලැබේ'.

උදාහරණයක් ලෙස, මගේ මූසිකය ජරා හා මන්දගාමී ය, එබැවින් මට ඡන්දය අක්‍රීය කිරීමට අවශ්‍යය:

sudo echo "options drm_kms_helper poll=N">/etc/modprobe.d/local.conf

මුරපදයක් ඉල්ලා සිටින අතර පසුව ලබා ගන්න:

bash: /etc/modprobe.d/local.conf: Permission denied

එබැවින් මම ඡන්දය ප්‍රකාශ කිරීම අක්‍රීය කිරීම සඳහා තාවකාලික වෙනසක් කිරීමට උත්සාහ කළෙමි:

sudo echo N> /sys/module/drm_kms_helper/parameters/poll

නැවතත් පද්ධතිය ප්‍රතිචාර දැක්වූයේ:

bash: /sys/module/drm_kms_helper/parameters/poll: Permission denied

අදහස් තිබේද?


Answers:


177

නිමැවුම් යළි හරවා යැවීම ( >ක්‍රියාකරු හරහා ) සිදු කරන්නේ කවචය මිස ප්‍රතිරාවය නොවේ . ඔබ root ලෙස ප්‍රවේශ විය යුතුය

sudo -i

එවිට ඔබට යළි-යොමුවීමක් භාවිතා කළ හැකිය

echo N> /sys/module/drm_kms_helper/parameters/poll

එසේ නොමැතිනම් ඔබට sudo සමඟ bash string ධාවනය කළ හැකිය

sudo bash -c "echo N> /sys/module/drm_kms_helper/parameters/poll"

1
ඔබට සුඩෝ සමඟ දෝංකාරය ධාවනය කළ නොහැකිද? මට ලැබුණු saji@laptop:~$ sudo echo "Hi" [sudo] password for saji: Hi
ප්‍රති result ලය ගැන

ඔබට ගොනුවේ ලිවිය හැකිය, "යමක්"> ප්‍රතිරාවය කරන්න. ඒක පයිප්ප පාවිච්චි කරනවා .. ඒක තමයි ගැටලුව.
ශාන්තනු

4
හරි, එය එසේ නම්, කරුණාකර ධාවනය වන දෝංකාරය ගැටලුවක් බව පිළිබිඹු කිරීම සඳහා කරුණාකර ඔබේ පිළිතුර යාවත්කාලීන කරන්න.
saji89

ඔබ echoවැනි දෙයක් නොකරන්නේ නම් ඔබට ෂෙල් බිල්ඩින් සුඩෝ ලෙස ධාවනය කළ නොහැක sudo bash -c 'echo …'. කෙසේ වෙතත්, පොසික්ස් පද්ධති සාමාන්‍යයෙන් ඕඑස් එක්ස් echoවැනි බාහිර විධානයක් සපයයි /bin/echo, එමගින් රිඩෝමරෝල් නොමැතිව ක්‍රියාත්මක කළ හැකිය. මේ අනුව, echoඔබ සාමාන්‍යයෙන් ක්‍රියාත්මක කරන echoවිධානය සහ ඔබ sudo සමඟ ධාවනය කරන විධානය බොහෝ විට වෙනස්, නමුත් සමාන විධානයන් දෙකකි.
කොජිරෝ

එය එසේ නම්, මෙම ප්‍රශ්නයට පිළිතුරු දෝංකාරය යෝජනා කළේ ඇයි? askubuntu.com/questions/840431/…
හර්ෂ

79

ප්‍රතිදාන යළි හරවා යැවීම සිදු කරනු ලබන්නේ විධානය ක්‍රියාත්මක කර ඇති කවචයෙනි . ඉතින්, සෑම දෙයක්ම බිටු බවට පත් කිරීම, මෙහි සිදුවන්නේ කුමක්ද *:

  • විධාන රේඛාව සමඟ විධානය sudo echo "options drm_kms_helper poll=N"ක්‍රියාත්මක කරන shell ඉන්වොයිස්sudoecho "options drm_kms_helper poll=N"

  • සූඩෝ, මුරපදයක් ඉල්ලයි ලෙසද හැඳින්වේ ෂෙල් හා අල්ලාහ් විවෘත echo "options drm_kms_helper poll=N"කරන ලද ලකුණු, echoඑය පසුකර අණ"options drm_kms_helper poll=N"

  • echo, rootවරප්‍රසාද සමඟ ධාවනය වන අතර , එහි සම්මත නිමැවුමට නූල මුද්‍රණය කරයි.

  • echoවිධානය අවසන් වේ, සුපර් යූසර් ෂෙල් පිටවීම, sudoඅවසන් වේ

  • විධානය ක්‍රියාත්මක කර ඇති කවචය ප්‍රතිදානය එකතු කර එය හරවා යැවීමට උත්සාහ කරයි /etc/modprobe.d/local.conf. එයට "අවසරය ප්‍රතික්ෂේප" දෝෂයක් ලැබේ.

මෙය නිවැරදි කිරීමට ක්‍රම සඳහා hant ශාන්තනු පිළිතුර බලන්න.


(*) - ඉහත අනුපිළිවෙල, මෙම විධානය අසමත් ඇයි තේරුම් ගැනීමට උපකාරී වේ ඇති අතර යථාර්ථය දේවල් තරමක් යල්-පිණිස සිදු: මුල් ෂෙල් හරවා යැවීමේ දැන්වීම් සහ කැඳවමින් පෙර ලිවීම සඳහා ගොනුව විවෘත කිරීමට උත්සාහ sudo ...විධාන. ගොනුව විවෘත කිරීමේදී අසමත් වූ විට කවචය ගොනුවට ලිවිය යුතු විධානය පවා ක්‍රියාත්මක නොකරයි (මෙය පෙන්වා දීම සඳහා anPanosRontogiannis ට ස්තූතියි).

මෙන්න ඉක්මන් පරීක්ෂණයක්:

$ touch ./onlyroot.txt
$ sudo chown root:root ./onlyroot.txt
$ sudo bash -c "whoami | tee who.txt" > onlyroot.txt
bash: onlyroot.txt: Permission denied

ඉහත පරීක්ෂණයේදී "root" යන වචනය අඩංගු whoami | tee who.txtගොනුවක් නිර්මාණය කිරීමට යන ලදී who.txt. කෙසේ වෙතත්, ඇමතුම් කවචයේ ප්‍රතිදාන යළි හරවා යැවීම අසමත් වූ විට, විධානය ක්‍රියාත්මක නොකිරීම නිසා "who.txt" ගොනුවද අස්ථානගත වී ඇත.


1
බොහෝ විට ෂෙල් එක 'ෆෝක්ස්' කර සූඩෝ 'ක්‍රියාත්මක කිරීමට' උත්සාහ කිරීමට පෙර /etc/modprobe.d/local.conf විවෘත කිරීමට උත්සාහ කරයි, එයින් අදහස් වන්නේ ඔබේ විස්තර කරන පළමු පියවර 4 කිසි විටෙකත් සත්‍ය වශයෙන්ම සිදු නොවන බැවින් ගොනුව විවෘත කළ නොහැකි බවයි.
පැනෝස් රොන්ටොජියානිස්

1
AnPanosRontogiannis: ස්තූතියි, මම පිළිතුර යාවත්කාලීන කර ඇත
Sergey

63

ඔබට teeමෙවැනි විධානයක් භාවිතා කළ හැකිය :

sudo tee /sys/module/drm_kms_helper/parameters/poll <<<10

නැතහොත් එහි විධානයේ ප්‍රතිදානය නම්:

echo 10 | sudo tee /sys/module/drm_kms_helper/parameters/poll

ඉලක්ක ගොනුව නැවත ලිවීමට වඩා එකතු කිරීමට ඔබට අවශ්‍ය තත්වයක් ඔබට තිබේ නම් - එනම්, ඔබ භාවිතා කරන teeආකාරයට >>වඩා හැසිරීමට .>tee -a


4
Root ලෙස +1 දැව සදහා අත්පොත කටයුතු සඳහා නරක අදහසක්, සහ ය ඇත්තටම , කියවා කාර්යයන් සඳහා නරක අදහසක්.
l0b0

2
එසේම, sudo tee /sys/module/drm_kms_helper/parameters/poll > /dev/nullඔබට එය මුද්‍රණය කිරීමට අවශ්‍ය නැතිනම් stdout.
ෆේබියන් ටැම්ප්

16

මා මෙහි සඳහන් කර නොමැති ප්‍රවේශයක් නම්, සම්පූර්ණ විධාන රේඛාවම එහි කවචයේ ක්‍රියාත්මක කිරීමයි. මෙම sudomanpage ම මෙම ප්රවේශය උදාහරණයක් ලබා දෙයි:

/ නිවාස කොටසේ ඇති නාමාවලි වල භාවිත ලැයිස්තුවක් සැකසීම. මෙය සීඩී සහ ගොනු යළි හරවා යැවීම ක්‍රියාත්මක කිරීම සඳහා උප කවචයක විධාන ක්‍රියාත්මක කරන බව සලකන්න.

$ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"

ස්තූතියි. සරල විසඳුමක්
ඔරොත්තු දීමේ

4

තවත් විකල්පයක් වන්නේ තාවකාලික ගොනුවක් භාවිතා කිරීමයි. මෙය bash ස්ක්‍රිප්ටයක ප්‍රයෝජනවත් වේ.

temp=$(mktemp)
echo "Hello, world!" > $temp
sudo cp $temp /etc/wherever

3

sudo dd of=

ඔබට අවශ්‍ය පරිදි එකතු කිරීමට:

echo inbytes | sudo dd of=outfile oflag=append conv=notrunc

හෝ ගොනුව මුල සිටම ප්‍රතිනිර්මාණය කිරීමට:

echo inbytes | sudo dd of=outfile

වාසි:

  • හොදින් සලකනව වඩා teeපසු කිසි /dev/nullහරවා යැවීමේ
  • shපැහැදිලි උපසිරැසියක් නොමැති බැවින් වඩා හොඳය (නමුත් නැවත හරවා යැවීම සඳහා ව්‍යංගයකි)
  • ddබොහෝ ප්‍රබල විකල්ප ඇත, උදා: status=progressමාරුවීමේ ප්‍රගතිය දැකීමට

වැඩ කරන්නේ sudo විධානය වෙත stdin ඉදිරියට යවන බැවිනි.


1
මේක හොඳයි. අපගේ ddවර්‍තමාන ගොනු පද්ධති නැවත ලියන්නේ කෙසේදැයි අපි සිතන්නෙමු, එය එදිනෙදා කටයුතුවලටද වැටහෙන්නේ නැත - තවද මූල ලෙස වෙනත් විධානයන් ද වැරදි ලිපිගොනු / උපාංගවල භාවිතා කරන්නේ නම් විශාල හානියක් සිදු කරයි. හරියටsudo tee , මෙහි නූල්sudo dd සමඟ වැඩ කරනු ඇත , උදා sudo dd of=outfile <<<'hello world'. [සංස්කරණය කිරීමට ස්තූතියි. NB with sh -c 'cmd', shයනු ෂෙල් එකක් වන උපසිරැසියකි, නමුත් සියලු බාහිර විධානයන් එකකින් ආරම්භ වන අර්ථයෙන් හැර සැබවින්ම උපසිරැසියක් නොවේ .]
එලියා කගන්
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.