菜鸟学Linux 第042篇笔记 sudo



sudo 详解

用于给其它用户授权可执行的命令



环境

50台服务器

网络:定义网络属性

用户:用户管理

linux root

Tom root



linux用户: 管理员和普通用户


su - run a shell with substitute user and group IDs


sudo, sudoedit - execute a command as another user

sudo COMMAND

某个用户能够以另外一个用户的身份通过某主机执行某命令

管理员授予某用户可以执行管理员的命令,但在执行时如果为管理员所授予的命令

需要在输入自己的账户密码时才可执行

sudo 配置文件/etc/sudoers

配置该文件的命令

visudo (su - run a shell with substitute user and group IDs)

sudo条目定义格式

who which_hosts=(runas) command


Alias

who: User_Alias

which_hosts: Host_Alias

Runas: Runas_Alias  run as some user  以哪个用户运行

Command: Cmnd_Alias

别名必须全部而且只能使用大写英文字母组合


别名:类似组


定义别名

User_Alias USERADMIN=

用户的用户名

组名,使用%引导

也可包含其它已经定义的别名

Host_Alias

主机名

IP

网络地址

其它主机别名

Runas_Alias

用户名

%组名

其它Runas别名

Cmnd_Alias

命令(建议绝对路径)

目录(表示此目录内的所有命令)

其它事先定义过的命令别名

e.g.

Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, 

/usr/bin/passwd, ! /usr/bin/passwd root


使用visudo定义hadoop用户以root管理员执行useradd命令

visudo

最后一行添加

hadoop ALL=(root) /usr/sbin/useradd,/user/sbin/usermod

添加后该用户登录到shell即可运行useradd和usermod命令

sudo /usr/bin/useradd someuser

持续5分钟不需要再输入密码



sudo命令

-l If no command is specified, the -l (list) option will list the

                allowed (and forbidden) commands for the invoking user (or the

                user specified by the -U option) on the current host. 

-k 执行时可以使5分钟不用输入密码提前结束




命令前加tag

PASSWD 执行时需要输入用户密码

NOPASSWD 执行时不需要输入密码

其它用户以管理员身份执行某命令日志里会有记录

less /var/log/secure

这也是为何该文件的权限特殊的原因,600