ඉවත් නොවී ලිනක්ස් පරිශීලක කණ්ඩායම් පැවරුම් නැවත පූරණය කරන්න


389

භාවිතා කරමින් ද්විතීයික කණ්ඩායම් ලැයිස්තුවක් භාවිතා කිරීමේදී:

# usermod -G <grouplist> <user>

සියලුම සැසිවාරයන් ඉවත් නොකර මෙම කණ්ඩායම් පැවරුම බලාත්මක කිරීමට බල කළ හැකිද?

කණ්ඩායම් පැවරුම බලාත්මක කිරීම සඳහා සමස්ත සැසියම අත්‍යවශ්‍යයෙන්ම විනාශ කළ යුතු බැවින්, බොහෝ ධාවන කවච සහිත තිර සැසියක් පවතින අවස්ථාවක මෙය ඉතා ප්‍රයෝජනවත් වනු ඇත .

විධානය භාවිතා කර පරිශීලකයාගේ ප්‍රාථමික කණ්ඩායම ධාවන කවචයකින් වෙනස් කළ හැකි යැයි මම සිතමි newgrp- ද්විතීයික කණ්ඩායම් සඳහා ක්‍රියා කළ හැකි විකල්පයක් තිබේද?

ඉතා මැනවින්, සෑම එකක් තුළම අතින් ක්‍රියාත්මක නොවී සෑම කවචයකම ක්‍රියාත්මක වන යමක් මට අවශ්‍යය, නමුත් එය අසාර්ථක වුවහොත්, එක් එක් විධානයන් එකම විධානයක් ක්‍රියාත්මක කිරීමට තිරයට බල කිරීමේ ක්‍රමයක් විය හැකිය.


අවම වශයෙන් සමහර කවුළු / සැසි කළමණාකරුවන් සඳහා මෙය කළ හැකි බව මම දනිමි, සැසිය නව කණ්ඩායම තෝරා ගන්නා අතර මෙනු, පැනල් බොත්තම් හෝ වෙනත් ඕනෑම දෙයකින් ආරම්භ වන ඕනෑම නව ක්‍රියාවලියක් සඳහා එය ලබා ගත හැකිය. මම දැන් මෙහි පැමිණියේ එය නැවත සොයා ගැනීමටය, එබැවින් එය කරන්නේ කෙසේදැයි දැන්ම කිව නොහැක, එය බොහෝ විට කවුළු කළමනාකරුට විශේෂිත වේ.
mc0e

Answers:


224

භයානක ලෙස හැක්, නමුත් newgrpවිශේෂිත කණ්ඩායමක් සඳහා මෙය සාක්ෂාත් කර ගැනීම සඳහා ඔබට ස්ථර දෙකක් භාවිතා කළ හැකිය :

id -g

... ඔබට වත්මන් ප්‍රාථමික කණ්ඩායම් හැඳුනුම්පත ලබා දෙනු ඇත. orig_groupමෙම උදාහරණයේ අරමුණු සඳහා අපි මෙය අමතන්නෙමු . ඉන්පසු:

newgrp <new group name>

... මූලික වශයෙන් පිරිසට ඔබට මාරු විසින් ආපසු කණ්ඩායම් ලැයිස්තුව වෙත එක් වනු ඇත groupsහෝ id -G. දැන්, තවත්:

newgrp <orig_group>

... ඔබට නව කණ්ඩායම දැක ගත හැකි කවචයක් ලැබෙනු ඇති අතර ප්‍රාථමිකය මුල් එක වේ.

මෙය භයානක වන අතර ඔබට වරකට එක් කණ්ඩායමක් පමණක් එකතු වනු ඇත, නමුත් එය මගේ සම්පූර්ණ X සැසියේදී / ඉවත් නොවී කණ්ඩායම් එකතු කිරීමට කිහිප වතාවක්ම මට උදව් කර ඇත (උදා: පරිශීලකයෙකු ලෙස කණ්ඩායමක් ලෙස ෆියුස් එකතු කිරීම එවිට sshfs ක්‍රියා කරයි).

සංස්කරණය කරන්න: මේ සඳහා ඔබගේ මුරපදය ටයිප් කිරීම අවශ්‍ය නොවේ su.


6
නියම උපක්‍රමයක්, මම එයට කැමතියි
සයිමන්

2
එය කිරීමට ප්‍රමාණවත් බව මට පෙනී ගියේය newgrp <new group name>. මෙය උබුන්ටු 14.04
එඩ්වඩ් ෆෝක්

5
D එඩ්වර්ඩ්ෆෝක් හරි, නමුත් ඔබට එම කණ්ඩායම ඔබේ ප්‍රාථමිකය ලෙස තැබීමට අවශ්‍ය නොවනු ඇත ...
මිමෝරාලියා

4
සෑම එකක්ම newgrpනව කවචයක් නිර්මාණය කරන බව සලකන්න , එබැවින් ඔබට ඔබේ සැසිවාරයෙන් සම්පූර්ණයෙන් පිටවීමට අවශ්‍ය වූ විට ඔබ සියලු මාර්ගයෙන් පිටතට යාමට "පිටවීමේ පිටවීමේ පිටවීම" කළ යුතුය (:
jwd

2
ඔබ මඟහරවා ගත හැකිය @jwd exit; exit; exitභාවිතා කිරීමට ඔබට හැකිය execවැනි වත්මන් ෂෙල් වෙනුවට exec newgrp new_groupපසුව, exec newgrp orig_group.
ටකහිරෝයි

414

කවචයක් ඇතුළත සිට ඔබට පහත විධානය නිකුත් කළ හැකිය

su - $USER

id දැන් නව කණ්ඩායම ලැයිස්තුගත කරයි:

id

3
බොහෝ අවස්ථාවන්හි මෙය හොඳම ප්‍රවේශය යැයි මම සිතමි, නමුත් මුල් පෝස්ටරයට අවශ්‍ය වූයේ තිර සැසියක් තුළ බහු කවච යාවත්කාලීන කිරීමට ය. මෙම විසඳුම එක් එක් කවචයෙන් කළ යුතුව තිබුණි.
ඒඩ්‍රියන් රත්නපාල

4
මුල් විසඳුම තිරයේ තනි කවච සැසියක් පමණක් සවි කරනු ඇත. මම ඒක අත්හදා බැලුවා. මෙම විසඳුම ක්‍රියාත්මක වීමට හේතුව ඔබ මුල් පරිසරයෙන් උරුම වීමට වඩා සම්පූර්ණ නව සැසියක් බිහි කිරීමයි.
දෝෂය

1
ඔබට විධානය තරමක් සාමාන්‍ය ලෙස කළ හැකිය:su - $USER
bmaupin

2
මේ සඳහා ඔබට මුරපදයක් ටයිප් කිරීමට අවශ්‍ය වේ, ඔබ එය සැසිවාර ගණනාවකදී කිරීමට උත්සාහ කරන්නේ නම් එය අමුතු / අනවශ්‍ය විය හැකිය.
ලෙගෝලාස්

1
කරුණාකර මෙය කරන්නේ කුමක්දැයි ඔබට පැහැදිලි කළ හැකිද? වඩා හොඳ වන්නේ ඇයිද යන්න සහ වෙනත් විසඳුම් සමඟ ඇති වෙනස්කම් newgrp -සහ වැනි exec su -l $USER.
පැබ්ලෝ ඒ

174

මෙම සබැඳියෙන් මෙම නව උපක්‍රමය විශිෂ්ට ලෙස ක්‍රියා කරයි!

exec su -l $USER

මෙය සිදු කරන්නේ කෙසේදැයි මට අමතක වූ සෑම අවස්ථාවකම මම එය මෙහි පළ කරනු ඇතැයි සිතුවෙමි, මෙය ගූගල් හි එන පළමු සබැඳිය වේ.


19
පරිශීලකයා උපසිරැසියකට නොයැවීම සඳහා +1; ඔබට මේ සමඟ සුපුරුදු පරිදි ඉවත් වීමට / පිටවීමට හැකිය. එසේම, NOPASSWD: / etc / sudoers වලින් සකසා ඇත්නම්, ඒ වෙනුවට ඔබට exec sudo su -l $USERමුරපදය ඉල්ලා සිටීම වළක්වා ගත හැකිය .
අයිවන් එක්ස්

22
උපදෙස් දෙන්න: ඔබගෙන් සුඩෝ මුරපදයක් ඉල්ලනු ඇත. ඔබ එය වැරදියි නම්, ඔබේ පර්යන්තය වැසෙනු ඇත.
ටයිලර් කොලියර්

1
@TylerCollier අයිවන් කළේ සඳහන්NOPASSWD:
pepoluan

මෙය ක්‍රියාත්මක වන්නේ අන්තර්ක්‍රියාකාරී කවචයක් සඳහා පමණි, ඔබ මෙම විධානය ක්‍රියාත්මක වූ විගසම එය bash.sh ස්ක්‍රිප්ටයකට දැමීමට උත්සාහ කළහොත් ස්ක්‍රිප්ට් එක නතර වේ. මේ හා සම්බන්ධ ප්‍රශ්නය වන unix.stackexchange.com/questions/18897/… , ගිලෙස් පෙන්වා දෙන්නේ මෙය ලිනක්ස් ක්‍රියාවලි ක්‍රියාත්මක වන ආකාරය පමණක් බවයි. ඇන්සිබල් ඔබට සමූහය නැවුම් කිරීමට ඉඩ දෙන නමුත් එය ක්‍රියාත්මක වන්නේ localhost stackoverflow.com/questions/26677064/… නොවන දේශීය සම්බන්ධතා සඳහා පමණි . මගේ පළමු පිවිසුමට පෙර කණ්ඩායම පෙර එකතු කිරීම සඳහා EC2 හි Userdata භාවිතා කරමින් localhost සඳහා මම එය වටා වැඩ කර ඇත්තෙමි.
නියෝකයිල්

35

1. නව කණ්ඩායම සමඟ පිටතට නොගොස් නැවත ඇතුල් නොවී කවචයක් ලබා ගැනීම

ඔබ එක් කණ්ඩායමක් පමණක් එකතු කරන්නේ නම්, මම පහත සඳහන් දෑ භාවිතා කළෙමි:

exec sg <new group name> newgrp `id -gn`

මෙය ලෙගූලාස්ගේ ස්ථර දෙකේ නිව්ග්‍රැප් උපක්‍රමයේ විචලනයකි, නමුත් එය එක් පේළියක වන අතර ඔබේ ප්‍රාථමික කණ්ඩායමට අතින් ඇතුල් වීමට අවශ්‍ය නොවේ.

sgnewgrp නමුත් නව කණ්ඩායම් හැඳුනුම්පත සමඟ ක්‍රියාත්මක කිරීමට විධානයක් භාර ගැනීම. මෙම execඔබ "logout" වෙත දෙවරක් අවශ්ය නැහැ ඒ නිසා නව කටු, පවතින ෂෙල් විස්ථාපනය බවයි.

Su භාවිතා කිරීම මෙන් නොව, ඔබගේ මුරපදය ටයිප් කිරීමට අවශ්‍ය නොවේ. එය ඔබගේ පරිසරය නැවුම් නොකරයි (කණ්ඩායම එකතු කිරීම හැර), එබැවින් ඔබ ඔබගේ වර්තමාන වැඩ කරන නාමාවලිය රඳවා ගනී.

2. සැසියකදී සියලුම තිර කවුළුවල විධානය ක්‍රියාත්මක කිරීම

මෙම atතිරය තුල විධානය මඟින් ඔබ නියම (මෙය තිර විධානය, එය විධාන නොවේ සටහන්) ඕනෑම කවුළු විධානයක් දිවෙන.

පවතින සියලුම තිර සැසි වෙත විධානය යැවීමට ඔබට පහත විධානය භාවිතා කළ හැකිය:

screen -S <session_name> -X at \# stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"

idතිර සැසිය තුළ ක්‍රියාත්මක වීම සඳහා බැක්ටික්ස් වලින් ගැලවීමේ අවශ්‍යතාවය සහ ඔබේ විධානය අවසානයේ තිරය ' එන්ටර්' එබීමට ^ M ලබා ගන්න.

තිරයේ stuffවිධානය ඔබ වෙනුවෙන් විධාන පෙළ ටයිප් කරන බව සලකන්න . එම නිසා තිරයේ කවුළුවලින් අඩක් ලිඛිත විධානයක් විධාන විමසුමේ තිබේ නම් හෝ කවචයක් හැර වෙනත් යෙදුමක් ක්‍රියාත්මක කරන්නේ නම් (උදා: ඉමාක්ස්, ඉහළ) අමුතු දෙයක් සිදුවිය හැකිය. මෙය ගැටළුවක් නම්, මට අදහස් කිහිපයක් තිබේ:

  • අර්ධ ලිඛිත ඕනෑම විධානයකින් මිදීමට, ඔබට විධානය ආරම්භයට "^ C" එකතු කළ හැකිය.
  • ඊමාක්ස් කවුළුවක විධානය ක්‍රියාත්මක නොකිරීමට, ඔබට කවුළු මාතෘකාව ආදිය පෙරීමට 'at' ලෙස ඉල්ලා සිටිය හැකිය (ඉහත උදාහරණයේ දී, මම සියලු කවුළුවලට ගැලපෙන "#" භාවිතා කරමි, නමුත් ඔබට කවුළු මාතෘකාව අනුව පෙරණය කළ හැකිය, පරිශීලකයා , ආදිය).

නිශ්චිත කවුළුවක විධානය ක්‍රියාත්මක කිරීමට (කවුළු අංකයෙන් හඳුනාගෙන ඇත), පහත සඳහන් දෑ භාවිතා කරන්න:

screen -S <session_name> -p 0 -X stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"

ඇත්තෙන්ම හොඳ පිළිතුරක්. කුඩා නිවැරදි කිරීම: sgවිධානය තනි තර්කයක් ලෙස අපේක්ෂා කරන අතර තවත් තර්ක නොසලකා හරින්න (උත්සාහ කරන්න sg some_group echo test). එබැවින් sg new_group_name newgrp `id -gn` ඇත්ත වශයෙන්ම සමාන වේ sg new_group_name newgrp. එය ක්‍රියාත්මක වන බව පෙනෙන්නට හේතුව, newgrpකිසිදු තර්කයක් නොමැතිව ආයාචනා කළ විට එය / etc / passwd හි පෙරනිමි කණ්ඩායම භාවිතා කරයි, එය සාමාන්‍යයෙන් වත්මන් කණ්ඩායමට ගැලපේ. නිවැරදි කිරීම නම් විධානය උපුටා දැක්වීම ය:sg new_group_name "newgrp `id -gn`"
ටොම්


12

ඔබට මේක කරන්න පුළුවන්.

ඔබට භාවිතා කිරීමට අවශ්‍ය තරම් කණ්ඩායම් එකතු කරන්න usermod -G. ධාවන සැසියක් ඇති පරිශීලකයා ලෙස, newgrp -'-' තර්කය සමඟ ධාවනය කරන්න.

මෙය කණ්ඩායම් හැඳුනුම්පත පෙරනිමියට නැවත යථා තත්ත්වයට පත් කරයි, නමුත් එය ද්විතීයික කණ්ඩායම් ද සැකසෙනු ඇත. ඔබ ධාවනය වන මෙම පරික්ෂා කිරීමට පුළුවන, groupsපෙර හා පසු, වත්මන් සැසියක් usermodසහ newgrp.

මෙය සෑම විවෘත සැසියකින්ම ක්‍රියාත්මක කළ යුතුය - මම තිරය ගැන වැඩි යමක් නොදනිමි. කෙසේ වෙතත්, සියලු විවෘත සැසි නැවත ධාවනය කර ධාවනය newgrpකළ හැකි නම්, ඔබ හොඳ විය යුතුය. කණ්ඩායම් හෝ කණ්ඩායම් හැඳුනුම්පත් දැන ගැනීම ගැන ඔබට කරදර විය යුතු නැත.

ඔබට සුබ පැතුම්.


11
X සැසියක් තුළ xterm එකක උත්සාහ කළ නමුත් එය ක්‍රියාත්මක වූයේ නැත
dwery

3
tmux හි සැසියක් සඳහා උත්සාහ කළ අතර එය එහි ද ක්‍රියාත්මක වූයේ නැත
මයිකල්

2
ඇමේසන් ලිනක්ස් 2 මත උත්සාහ කළද එය ක්‍රියාත්මක වූයේ නැත
සිරිල් ඩුචොන්-ඩොරිස්

2
newgrp -නව ෂෙල් ක්‍රියාවලියක් ආරම්භ කරයි
Piotr Findeisen

මිස්ටර්_ටොම්ගේ පිළිතුර පිළිබඳ ඔබේ අදහස් දැක්වීමට අනුව, මෙය අනෙක් සියලුම පිළිතුරු මෙන් ම ක්‍රියාමාර්ගයකි. මිස්ටර්_ටොම්ගේ පිළිතුර තවමත් නිවැරදි ය.
scravy

11

කණ්ඩායම් සාමාන්‍යයෙන් ප්‍රවේශවීමේදී ගණනය කරනු ලැබේ, පිටතට ගොස් නැවත ඇතුල් නොවී කණ්ඩායම් ගණනය කිරීම් නැවත සිදු කිරීමට බල කිරීමට මා දන්නා ක්‍රමයක් නොමැත.

මෙහි ඡන්දය දුන් බොහෝ පිළිතුරු නැවුම් පරිසරයක් සහිත නව කවචයක් ඉල්ලා සිටින වැඩකරන ක්‍රමයක් භාවිතා කරන බව පෙනේ (නැවත පුරනය වීමට සමාන). සාමාන්‍යයෙන් පිරිසිදු ලොග්අවුට් සහ පිවිසුම් වලින් පසුව නැවුම් කවචයකින් නැවත ආයාචනා කරන තෙක් මව් කවචය සහ අඛණ්ඩව ක්‍රියාත්මක වන අනෙකුත් සියලුම වැඩසටහන් වලට නව කණ්ඩායම් සාමාජිකත්වය නොලැබේ.


ඇත්ත වශයෙන්ම, මෙය සත්‍ය නොවන බව මට හොඳටම විශ්වාසයි - මම මීට පෙර ලිනක්ස් පෙට්ටියක එය කිරීමට ක්‍රමයක් සොයා ගත්තා. කෙසේ වෙතත්, මගේ ජීවිතය සඳහා, මට අණ කුමක්දැයි මතක නැත. මම එය සොයා ගත්තා නම්, මම එය පළ කරමි. සංස්කරණය කරන්න: එය හමු විය, මම එය පිළිතුරක් ලෙස පළ කරමි.
lunchmeat317

1
මෙය පෙන්වා දීමට ස්තූතියි, මෙය මගේ අවබෝධය ද වේ. මෙහි ඇති අනෙක් සෑම පිළිතුරක්ම නව කවචයක් විවෘත කරයි, එය එක් විවෘත කවචයක් ප්‍රතිස්ථාපනය කළත් තිරය නැවත ආරම්භ කළත් කුමක් වුවත්. විධානයක් හෝ ස්ක්‍රිප්ට් එකක් නිකුත් කිරීමට ඉන්ද්‍රජාලික උවදුරක් නොමැති අතර ඔබේ X සැසිය ඇතුළුව සෑම ධාවන සැසියක්ම නව කණ්ඩායම් සාමාජිකත්වය පිළිබිඹු කරයි.
සීරීම්

4

සාරාංශ ගත කිරීමට:

exec newgrp <newlyaddedgroupname1>
exec newgrp <newlyaddedgroupname2>
...
exec newgrp -

'Exec' භාවිතා කිරීම යනු දැනට පවතින කවචය newgrp විධානය මඟින් ආරම්භ කරන ලද නව කවචය සමඟ ප්‍රතිස්ථාපනය කිරීමයි (එබැවින් නව කවචයෙන් පිටවීම ඔබව ඉවත් කරයි).

newgrp -ඔබේ සාමාන්‍ය ප්‍රාථමික කණ්ඩායම යථා තත්වයට පත් කිරීම සඳහා අවසාන අවශ්‍යතාවය ඇත, එබැවින් ඔබ පසුව නිර්මාණය කරන ලිපිගොනු ඒවායේ කණ්ඩායම් හිමිකරු ලෙස ඇත.

සටහන: මුල් පෝස්ටරයේ ප්‍රශ්නය වූයේ දැනට පවතින ක්‍රියාවලීන් තුළ අලුතින් එකතු කරන ලද කණ්ඩායම් දෘශ්‍යමාන කරන්නේ කෙසේද යන්නයි. මෙම gpasswdසහ usermodවිධාන තිබෙන ක්රියාවලීන් බලපාන නැහැ; අලුතින් එකතු කරන ලද (හෝ මකා දැමූ!) කණ්ඩායම් ඔබගේ ගිණුමේ, එනම් / etc / group සහ / etc / gshadow ලිපිගොනු තුළ දිස් වේ (අතුරුදහන් වේ), නමුත් පවතින ක්‍රියාවලීන් සඳහා අවසර වෙනස් නොවේ. කිරීමට ඉවත් ඔබ දැනට ක්රියාත්මක වන ක්රියාදාමයන් ඝාතනය කිරීමට ඇති අවසර; newgrp -/ etc / group නැවත කියවා කණ්ඩායම් ලැයිස්තුව යළි පිහිටුවන්නේ නැත; ඒ වෙනුවට, එය ක්‍රියාවලියට පෙර සම්බන්ධ වූ කණ්ඩායම් පමණක් භාවිතා කරන බවක් පෙනේ.


මාර්ගය වන විට, exec su - <username>කණ්ඩායම් කට්ටලයක් සහිත නව පිවිසුම් කවචයක් ලබා ගැනීමට භාවිතා කළ හැකි නමුත් එය ස්ක්‍රිප්ට් වල ක්‍රියා නොකරනු ඇත, මන්ද නව කවචයක් ටර්මිනලයේ විධාන කියවනු ඇත. su -c "command ..." <myusername>ඔබේ ස්ක්‍රිප්ට් එක නැවත ආරම්භ කිරීමට ඔබට භාවිතා කළ හැකිය , නමුත් එහි ප්‍රති process ලයක් ලෙස පාලක පර්යන්තයක් නොමැති අතර තිර සංස්කාරකයක් හෝ වෙනත් අන්තර්ක්‍රියාකාරී විධානයක් උත්සාහ කළහොත් දෝෂයක් සිදුවනු ඇත.
ජිමාව්

මෙය පහත් කොට සැලකුවේ ඇයි? යමෙකුට එහි ඇති නරක කුමක්දැයි පැහැදිලි කළ හැකිද, මන්ද එය මට සිදුවූයේ සහ මම එයට වඩාත්ම කැමති යැයි සිතන නිසාද?
jasonmp85

ගාහ්, මම එය පරීක්ෂා කිරීමට පෙර ඡන්දය දුන්නා. newgrp -නැහැ නැහැ ඇති "ප්රාථමික කණ්ඩායම" වෙනුවට. පැට්‍රික් කොන්හෙඩිගේ පිළිතුර මෙහි ඇති හොඳම පිළිතුරයි, මන්ද එය ප්‍රාථමික කණ්ඩායම බලහත්කාරයෙන් හෝ වෙනස් නොකරයි.
jasonmp85

1

මෙය ඔබ සතුව ඇත්නම් උපක්‍රමය කරන sudoඅතර සමහර අවස්ථාවලදී ඔබගේ මුරපදය තවත් වරක් ඇතුළත් කිරීමෙන් එය ඔබව ගලවා ගත හැකිය:

sudo su $USER

මට විශාල රැකියාවක් තිබෙන නිසා නැවත ආරම්භ නොකර ඩොකර් වැඩ කිරීමට උත්සාහ කිරීම මට වැඩ කළ එකම දෙය
සෑම් ජොන්සන්

1

මට සමාන ගැටළුවක් ඇති අතර පිවිසී නැති පරිශීලකයින් සඳහාද. Nscd නැවත ආරම්භ කිරීම උදව් නොකළ නමුත් මෙම විධානය ක්‍රියාත්මක කිරීමෙන් එය සිදු විය : nscd -i group. එය කණ්ඩායම් ගොනුව නැවත පූරණය කිරීමට nscd (හැඹිලි ඩීමන්) ට උපදෙස් දිය යුතුය.


1

මට newgrp විධානය වැඩ කිරීමට නොහැකි විය. මෙය / etc / sudoers මත රඳා පවතීදැයි මට විශ්වාස නැත, නමුත් සාමාන්‍යයෙන් මට සුඩෝ සඳහා මගේ මුරපදය ටයිප් කළ යුතු අතර මෙය මගේ මුරපදය අවශ්‍ය නොවී ක්‍රියාත්මක විය:

[leo60228@leonix:~]$ groups
users wheel

[leo60228@leonix:~]$ sudo echo hi
[sudo] password for leo60228:
hi

[leo60228@leonix:~]$ sudo -k # reset sudo timeout

[leo60228@leonix:~]$ exec sudo -i -u $(whoami) # no password necessary

[leo60228@leonix:~]$ groups
users wheel docker

0

මට මෙය ෂෙල් ස්ක්‍රිප්ට් එකකින් කිරීමට අවශ්‍ය විය (ස්ක්‍රිප්ට් වර්තමාන පරිශීලකයෙකු කණ්ඩායමකට එක් කරයි, පසුව කණ්ඩායම් සාමාජිකත්වය අවශ්‍ය විධාන ක්‍රියාත්මක කරයි). මෙම newgrpවිධානය එය පමණක් නව ෂෙල් වෙනුවට අත්තනෝමතික අණ (මම නැවත ක්රියාත්මක මුල් commandline args වර්තමාන ෂෙල් තිර රචනය කිරීමට අවශ්ය) ධාවනය කළ දී බිඳෙන සුලුය.

මෙන්න මගේ විසඳුමයි, එය බොහෝ බාෂ්-අයිම්ස් භාවිතා කරයි: (අවට ස්ක්‍රිප්ටයට යම් ආකාරයක ශාඛාවක් අවශ්‍ය බව සලකන්න, මෙම ශ්‍රිතය ක්‍රියාත්මක කිරීමට අවශ්‍ය කණ්ඩායම දැනට ක්‍රියාකාරී නොවන්නේ නම් පමණි):

(සටහන: පිටපතෙන් ගම්‍ය වන්නේ එය ධාවනය වූ බවයි sudo adduser $user docker, එයින් අදහස් කරන්නේ එය sudo dockerවෙනුවට සෑම තැනකම ධාවනය කළ හැකි dockerනමුත් එය මේ අවස්ථාවේ දී නුසුදුසු බවය)

# save these for later
ORIGINAL_ARGS=("$@")

# This function is a little insane. The problem is this: user running
# this script is not a member of docker group, but used 'sudo' to add
# themselves to group. Without logging out and back in, the only way
# to gain access to that group is via the 'newgrp' command, which
# unfortunately starts a new shell rather than an arbitrary command...
#
# Also, we're going to newgrp twice: first to add the new group and
# again to restore the original group (but the new group remains in
# the 'groups' output).
#
# So this horrendous hack dups stdin to fd3 for later. Then runs
# 'newgrp' piping in a script that runs 'newgrp' a second time, piping
# in another script that restores stdin from fd3 and execs the
# original command...
restart-newgrp-newgrp() {
  # dup original stdin to fd3
  exec 3<&0

  local group="$1"
  local command="$0"
  local arg
  for arg in "${ORIGINAL_ARGS[@]}"; do
    printf -v command "%s %q" "$command" "$arg"
  done

  # restore original stdin from fd3; also replace any single-quote in
  # command with '"'"' to embed it in a single-quoted string
  local script
  printf -v script "exec newgrp %q <<<'exec <&3-; exec %s'" "$(id -gn)" "${command//\'/\'\"\'\"\'}"

  exec newgrp "$group" <<<"$script"
}

0

ඔබේ පරිසර විචල්‍යයන් ආරක්ෂා කර ගැනීමට අවශ්‍ය නම් උත්සාහ කරන්න exec sudo -E -u "$USER" "$SHELL". execවත්මන් කවචය නව එකක් සමඟ ප්‍රතිස්ථාපනය කරයි, -Eපරිසරය ආරක්ෂා කරයි, -u "$USER"පරිශීලකයා ඔබටම වෙනස් කරයි, සහ $SHELLකවචය භාවිතා කිරීමට ඇති විධානය නියම කරයි.

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.