电脑技术学习

Linux命令Man解释:SUDO(8):以root身份执行指令

dn001
名称;

sudo;-;以超级使用者;(superuser;;root);的身分执行指令;

visudo;-;编辑;sudoers;档案;

语法;

sudo;command;

描述;

Sudo;允许经过同意的使用者以超级使用者的身分执行指令。;Sudo;参考/etc/sudoers;这个档案来判定谁是被授权的使用者。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;
robhALL=ALL,!SHELLS;
nieusma;;;;;SERVERS=SHUTDOWN,/etc/reboot:;
HUB=ALL,!SHELLS;
jillhoudini.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。;

参阅;

su(1);

标签: linux