Ãû³Æ
sudo - ÒÔ³¬¼¶Ê¹ÓÃÕß (superuser; root) µÄÉí·ÖÖ´ÐÐÖ¸Áî
visudo - ±à¼ sudoers µµ°¸
Óï·¨
sudo command
ÃèÊö
Sudo ÔÊÐí¾¹ýͬÒâµÄʹÓÃÕßÒÔ³¬¼¶Ê¹ÓÃÕßµÄÉí·ÖÖ´ÐÐÖ¸Áî¡£ Sudo ²Î¿¼/etc/sudoers Õâ¸öµµ°¸À´Åж¨ËÊDZ»ÊÚȨµÄʹÓÃÕß¡£Sudo ½«»áÌáʾʹÓÃÕßÊäÈëÃÜÂëÀ´Æôʼһ¶Î N ·ÖÖÓµÄÔÊÐíʱ¼ä£¨ÆäÖÐ N ÊÇÔÚ°²×°µÄʱºò¶¨ÒåµÄÇÒÔ¤ÉèֵΪ 5 ·ÖÖÓ£©¡£
Sudoers Õâ¸öµµ°¸ÊÇÓÉÒ»¸öÑ¡ÔñÐÔµÄÖ÷»ú±ðÃû (host alias) ½ÚÇø£¬Ò»¸öÑ¡ÔñÐÔµÄÖ¸Áî±ðÃû (command alias) ½ÚÇøÒÔ¼°Ê¹ÓÃÕß˵Ã÷ (user specification)½ÚÇøËù×é³ÉµÄ¡£ËùÓеÄÖ¸Áî±ðÃû»òÖ÷»ú±ðÃû±ØÐëÐèÒÔËûÃÇ×Ô¼ºµÄ¹Ø¼ü×Ö×÷Ϊ¿ªÊ¼ (Host_Alias/Cmnd_Alias)¡£×¢Ò⣬ֻÓеÚÒ»´ÎʹÓÃÕߣ¨ÔÚʹÓÃÕß˵Ã÷½ÚÇøÀïÓмǼµÄʹÓÃÕߣ©Ê¹ÓÃʱ»áÓÐ˵Ã÷¡£
ʹÓÃÕß˵Ã÷½ÚÇø¸ñʽ£º
ʹÓÃÕß ½ÓȡȺ×é [: ½ÓȡȺ×é ] ...
½ÓȡȺ×é ::= Ö÷»úÏóáç = [op]Ö¸ÁîÏóáç [,[op]Ö¸ÁîÏóáç] ...
Ö÷»úÏóáç ::= Ò»¸öСдµÄÖ÷»úÃû³Æ»òÖ÷»ú±ðÃû¡£
Ö¸ÁîÏóáç ::= Ò»¸öÖ¸Áî»òÖ¸Áî±ðÃû¡£
op ::= Âß¼µÄ '!' ·ñ¶¨ÔËËãÔª¡£
Ö÷»ú±ðÃû½ÚÇø¸ñʽ£º
Host_Alias Ö÷»ú±ðÃû = Ö÷»úÁбí
Host_Alias ::= ÕâÊÇÒ»¸ö¹Ø¼ü×Ö¡£
Ö÷»ú±ðÃû ::= Ò»¸ö´óдµÄ±ðÃû¡£
Ö÷»úÁбí ::= ÒÔ¶ººÅ¼ä¸ôµÄһЩÖ÷»úÃû³Æ¡£
Ö¸Áî±ðÃû½ÚÇø¸ñʽ£º
Cmnd_Alias Ö¸Áî±ðÃû = Ö¸ÁîÁбí
Cmnd_Alias ::= ÕâÊÇÒ»¸ö¹Ø¼ü×Ö¡£
Ö¸Áî±ðÃû ::= Ò»¸ö´óдµÄ±ðÃû¡£
Ö¸ÁîÁбí ::= ÒÔ¶ººÅ¼ä¸ôµÄһЩָÁî¡£
ËùÓÐÔÚ '#' ·ûºÅááÃæµÄÎÄ×Ö¶¼»á±»µ±×÷ÊÇ×¢½â¡£
Ì«³¤µÄÐпÉÒÔʹÓõ¹Ð±Ïß '\' ×ÖÔªÀ´·Ö³ÉеÄÐС£
±£ÁôµÄ±ðÃû 'ALL' ÔÚ {Host,Cmnd}_Alias' Àï¶¼¿ÉÒÔʹÓá£
²»ÒªÓà 'ALL' À´¶¨ÒåÒ»¸ö±ðÃû£¬Õâ¸ö±ðÃûÎÞЧ¡£
×¢Òâµ½ 'ALL' °µÊ¾È«²¿µÄÖ÷»ú¸úÖ¸Áî¡£
Äã¿ÉÒÔʹÓÃÕâ¸öÓï·¨´ÓÕû¸ö·¶Î§ÖмõµôһЩÏîÄ¿£º
user host=ALL,!ALIAS1,!/etc/halt...
·¶Àý
# Host alias specification
Host_Alias HUB=houdini.rootgroup.com:\
REMOTE=merlin,kodiakthorn,spirit
Host_Alias MACHINES=kalkan,alpo,milkbones
Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit
# Command alias specification
Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm
Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh
Cmnd_Alias MISC=/bin/rm,/bin/cat:\
SHUTDOWN=/etc/halt,/etc/shutdown
# User specification
britt REMOTE=SHUTDOWN:ALL=LPCS
robh ALL=ALL,!SHELLS
nieusma SERVERS=SHUTDOWN,/etc/reboot:\
HUB=ALL,!SHELLS
jill houdini.rootgroup.com=/etc/shutdown,MISC
markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt
billp ALL=/usr/local/bin/top:MACHINES=SHELLS
davehieb merlin=ALL:SERVERS=/etc/halt:\
kodiakthorn=ALL
ÉÏÃæµÄ sudoers ˵Ã÷µµ°¸ÊÇÓÉ 4 ¸öÖ÷»ú±ðÃû˵Ã÷£¬4 ¸öÖ¸Áî±ðÃû˵Ã÷ÒÔ¼° 7 ¸öʹÓÃÕß˵Ã÷Ëù×é³ÉµÄ¡£Britt ±»ÔÊÐíÔÚÔ¶¶Ë»úÆ÷ (merlin, kodiakthorn, »¹ÓÐ spirit) ÉÏÖ´ÐÐ /etc/halt, /etc/shutdown, /usr/etc/lpc ÒÔ¼°/usr/ucb/lprm ¡£Rohn ±»ÔÊÐíÔÚÈκλúÆ÷ÉÏÖ´ÐгýÁË SHELL Ö¸ÁîȺÒÔÍâµÄÈκÎÖ¸Áî¡£Jill ±»ÔÊÐíÔÚ houdini ÉÏÖ´ÐÐ /etc/shotdown, /bin/rm, ÒÔ¼°/bin/cat ¡£Davehieb ¿ÉÒÔÔÚ merlin ÒÔ¼° kodiakthorn ÉÏÖ´ÐÐÈκÎÖ¸Áî²¢ÇÒ¿ÉÒÔ halt SERVERS ¡£
Sudoers µµ°¸Ó¦¸ÃÓà visudo Ö¸Áî±à¼£¬Ëü»áËø×¡¸Ãµµ²¢ÇÒ×öÎÄ·¨¼ì²é¡£ÕâÌṩÁËÒ»¸ö¿ÉÒÔ±ÜÃâÓÞ´ÀÎÄ·¨´íÎóµÄ»úÖÆ¡£
Sudo ±»Éè¼Æ³É¾ÓÉ 4.3 BSD syslogging À´¼Ç¼£¬µ«ÊÇÈç¹ûÕæµÄÏëÒªµÄ»°»¹ÊÇ¿ÉÒԼǼµ½Ò»¸öµµ°¸À´È¡´ú¡£
Èç¹ûÒ»¸öûÓб»ÊÚȨµÄʹÓÃÕßÖ´ÐÐÁË sudo µÄ»°£¬½«»áÓÐÒ»·â mail ´Ó¸ÃʹÓÃÕß¼ÄË͵½µ±µØµÄÊÚȨÕß´¦£¨ÔÚ°²×°µÄʱºò¶¨ÒåµÄ£©¡£
ËùÓеÄÉ趨¶¼ÊÇÔÚ°²×°µÄʱºó¶¨ÒåµÄ£¬´Ó sudo.h º¬Èëµµ¼° Makefile È¡µÃ¡£
δÀ´¼ÓÇ¿
ÔÊÐí³²×´µÄÖ÷»úÒÔ¼°Ö¸Áî±ðÃû¡£
ÔÊÐíÔÚ sudoers µµ°¸ÖÐʹÓà host specifier
ÒÔ±ãʹÓÃÈ«Çø·ûºÅ (user ALL,!SERVERS, ... = commands) ¡£
ÔÊÐíÔÚ sudores µµ°¸ÀïµÄʹÓÃÕß±ðÃû£¨¾ÍÈçͬÖ÷»ú£¯Ö¸Áî±ðÃûÒ»Ñù£©¡£
ʹ visudo ¶Ô sudoers µµ°¸×ö¸ü¹ã·ºµÄ¼ì²é¡£
µµ°¸
/etc/sudoers ¾ÊÚȨµÄʹÓÃÕßµµ°¸¡£
/etc/stmp visudo µÄ lock file ¡£
/usr/local/bin/sudo sudo µÄÖ´Ðеµ¡£
/usr/local/etc/visudo ÐÞ¸Ä sudoers µµ°¸µÄ¹¤¾ß¡£
×÷Õß
Jeff Nieusma
David Hieb
DISCLAIMER
Õâ¸ö³ÌʽµÄ·¢ÐÐÊÇÒòΪϣÍûËüÓÐÓô¦£¬µ«ÊÇûÓÐÈκα£Ö¤£»ÉõÖÁûÓжÔÌØ¶¨ÓÃ;µÄÏúÊÛ»òÊʺÏÓÐÒþº¬µÄ±£Ö¤¡£²ÎÔÄ GNU µÄ General Public License ÒÔ»ñµÃ¸üÏêϸµÄ×ÊѶ¡£
ÄãÓ¦¸Ã»áÁ¬Í¬Õâ¸ö³ÌʽһÆð½ÓÊÕµ½Ò»·Ý GNU General Public License£»Èç¹ûûÓеϰ£¬Ð´·âПø Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA ¡£
¾¯¸æ
Èç¹ûʹÓÃÕß¿ÉÒÔ´æÈ¡ shell scripts Ö¸ÁîȺ»òÔÊÐí shell escapes µÄ»°£¬Ã»Óмòµ¥µÄ°ì·¨¿ÉÒÔ·ÀֹʹÓÃÕߵõ½ root shell¡£