Linux中sudoers文件详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中sudoers文件详解相关的知识,希望对你有一定的参考价值。

参考技术A     笔者在添加新用户后或者在centos系统上使用sudo时会提示没有权限,需要编辑修改/etc/sudoers,于是笔者将WSL Ubuntu、树莓派4B,centos7系统的这个文件罗列出来看看到底怎么配置。

    sudo的作用是啥呢?Sudoers allows particular users to run various commands as the root user, without needing the root password。

1、WSL Ubuntu

     文件的第一句话:This file MUST be edited with the 'visudo' command as root. 这个文件需要root用户使用visudo来编辑修改,这个编辑器库检查语法,避免修改错误。

    /etc/sudoers.d/目录下的文件也同样有效,提示可以在目录下新建个配置文件来避免直接修改sudoers文件。Please consider adding local content in /etc/sudoers.d/ instead of directly modifying this file.

    文件里面最重要的是三个配置:

超级用户拥有所有权限

# User privilege specification  

root    ALL=(ALL:ALL) ALL

 admin用户组拥有所有权限

# Members of the admin group may gain root privileges  

%admin ALL=(ALL) ALL

 允许使用sudo来获得所有权限

# Allow members of group sudo to execute any command    

%sudo  ALL=(ALL:ALL) ALL

这条配置的含义是:

第一个,指定的是用户,也可以是别名;

第二个,ALL指定的是用户所在的主机,可以是ip,也可以是主机名;

第三个,括号里指定的也是用户,指定以什么用户身份执行sudo

第四个,ALL指定的是执行的命令;

文件最后包含sudoers.d目录。

#includedir /etc/sudoers.d

2、树莓派4B

    相比于WSL Ubuntu,树莓派resdebian就只有其中两条主要的配置。

# User privilege specification

root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command

%sudo  ALL=(ALL:ALL) ALL

3、CentOS7

    相比于上面,CentOS7的sudoers文件就丰富的多,可以定义具体的权限。但也有些区别。

    root ALL=(ALL) ALL  。括号中只有一个ALL。

wheel用户在运行所有命令,可以不输入密码。

%wheel ALL=(ALL) NOPASSWD: ALL

允许使用用户挂载U盘

%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

允许使用用户关机

%users localhost=/sbin/shutdown -h now

    配置文件中列出很多别名NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS。比如PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall。

    那么下面的配置就是允许sys用户组可以执行别名定义的应用。

    %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

Linux /etc/sudoers 文件详解

[[email protected] ~]# cat /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码 
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或  
## ## 用户组所使用  
## This file must be edited with the ‘visudo‘ command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
#主机别名
## Groups of machines. You may prefer to use hostnames (perhap using 
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 或IP地址代替,这时可以配置主机别名

# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2
## User Aliases
#用户别名
## These aren‘t often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名  
# User_Alias ADMINS = jsmith, mikem

## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,  
## 可以通过sudo调用所有别名包含的命令,下面是一些示例

## Networking
#网络操作相关命令别名  
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,
 /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig,
 /sbin/mii-tool
## Installation and management of software
#软件安装管理相关命令别名  
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
#服务相关命令别名 
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
#本地数据库升级命令别名  
Cmnd_Alias LOCATE = /usr/sbin/updatedb
## Storage
#磁盘操作相关命令别名
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
#代理权限相关命令别名 
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
#进程相关命令别名
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
#驱动命令别名
Cmnd_Alias DRIVERS = /sbin/modprobe
#环境变量的相关配置
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear. 
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty
Defaults    env_reset
Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
                        LS_COLORS MAIL PS1 PS2 QTDIR USERNAME
                        LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION
                        LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC
                        LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS
                        _XKB_CHARSET XAUTHORITY"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax:
##语法
##      user    MACHINE=COMMANDS
##  用户 登录的主机=(可以变换的身份) 可以执行的命令  
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项  
##
## Allow root to run any commands anywhere 
## 允许root用户执行任意路径下的任意命令 
root    ALL=(ALL)       ALL
## Allows members of the ‘sys‘ group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
## 允许wheel用户组中的用户执行所有命令  
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel        ALL=(ALL)       NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令 
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now
## 允许users用户组中的用户像root用户一样使用shutdown命令

 

文章转载至:https://blog.csdn.net/weixin_40246773/article/details/84027752

以上是关于Linux中sudoers文件详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux中的sudoer详解

为啥Linux中的sudoers文件用iv打开是空的?

sudoers文件详解

linux中 如何将sudoers只读文件改成可读写文件??

linux详解sudoers

Linux visudo配置详解