首页 > 代码库 > sudo权限管理

sudo权限管理

为什么使用sudo?

通常生产服务器会有多个用户或者部门需要登录和操作,如运维部门和开发部门。所以一般不会使用root的账号密码来操作,因为如果大家都知道root的密码非常不安全,万一哪天谁更改了root密码,就比较麻烦,但是呢,我们又必须给用户执行权限。那么我们必须用sodu来解决这一问题。


sudo:  switch user do,

 某个用户能够以另外一个用户的身份通过某主机执行某命令,但是执行命令前必须输入自己账户的密码

    -k:kill,让此前输入的认证信息失效,并重新认证。默认情况下,当用户执行sudo 命令后,5分钟内不用再次输入自己的密码

     -l:列出当前用户可以使用的所有sodu命令

例如:

[deploy@ZabbixServer ~]$ sudo -l
User deploy may run the following commands on this host:
    (ALL) NOPASSWD: ALL, (ALL) !/usr/bin/passwd root

上面表示用户deploy除了 更改root密码外,其他命令都能操作。


sudo 命令使用方法:

sudo COMMAND:不用切换到某个用户,就可以用该用户来执行某个命令

例如:

sudo useradd aaa


sudo的配置文件/etc/sudoers

该文件权限为400

# ls -l /etc/sudoers
-r--r----- 1 root root 4059 Aug 24 07:53 /etc/sudoers

visudo :不用加任何参数,专门用来编辑/etc/sudoers这个文件,只有root用户有权限


一个sudo条目的格式:

who                  which_host=(run as )                              command

谁                    从哪台主机远程连上来   以谁的身份           执行什么命令

上面的who也可以是组名,但是组名前需要加‘%’,例如%wheel



练习:

例如:允许deploy用户以root身份执行所有命令,怎么写?

deploy   ALL=(ALL)       ALL


如果希望deploy用户执行命令时不需要输入密码怎么写?

deploy   ALL=(ALL)       NOPASSWD: ALL


如果希望deploy用户能执行所有命令,但是不能更改root密码,不能切换到root用户,怎么写?

deploy  ALL=(ALL)       NOPASSWD: ALL,!/usr/bin/passwd root,!/bin/su


sudo在生产环境中的用法:

生产环境中每个用户都有自己的登录账号,例如:user1、user2等。我们允许wheel组的用户能执行所有命令,而deploy用户属于这个组。然后我们只需要赋予user1、user2 切换到deploy用户的权限即可。


过程如下:  创建deploy用户,并加入wheel组

#useradd  deploy
#usermod -a -G wheel deploy


编辑/etc/sudoers文件,赋予wheel组用户执行所有命令的权限

%wheel  ALL=(ALL)       NOPASSWD: ALL

最好是禁止wheel组用户切换到root用户、更改root密码、执行visudo命令的权限,所以可以这样设置

%wheel  ALL=(ALL)       NOPASSWD: ALL,!/usr/bin/passwd root,!/bin/su,!/usr/sbin/visudo


然后赋予用户user1切换到deploy用户的权限

在/etc/sudoers.d目录下,创建一个文件,文件名可以是用户名,在该文件中写入以下内容

# cat /etc/sudoers.d/user1 
user1  ALL=NOPASSWD:/bin/su - deploy

设置该文件权限为440



本文出自 “zengestudy” 博客,请务必保留此出处http://zengestudy.blog.51cto.com/1702365/1842926

sudo权限管理