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

名称;

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;从该使用者寄送到当地的授权者处(在安装的时候定义的) 。;

推荐阅读