编辑文件时,visudo打开一个类似vi的编译工具,并且有简单的语法检查功能。User_Alias定义用户别名,用户组以%开头表示;Runas_Alias定义用来执行命令的用户别名;Cmnd_Alias定义命令别名,别名下的成员必须是文件或目录的绝对路径;
授权规则:
授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]….
User_Alias SYSADM=jialiangnet Runas_Alias RUSERS=beinan,bnnb Cmnd_Alias CMDLIST=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]* SYSADM ALL=(RUSERS) NOPASSWD: ALL SYSADM ALL= CMDLIST SYSADM ALL=(OP) CMDLIST beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod
sudo会继承当前Shell的环境变量,测试如下:
$ export A="a" $ sudo -u w-in-iv echo $A a
但是,有些环境变量被自动移去,有些程序需要读取这些环境变量,例如:LD_LIBRARY_PATH等。
$ sudo -V Environment variables to remove: BASH_ENV ENV TERMCAP TERMPATH TERMINFO_DIRS TERMINFO _RLD* LD_* PATH_LOCALE NLSPATH HOSTALIASES RES_OPTIONS LOCALDOMAIN IFS
对于需要上述环境变量的程序,
sudo -u w-in-iv sh -c "source /home/w-in-iv/.bash_profile; /home/w-in-iv/a.sh"
Comments
There are currently no comments
New Comment