002、sudo权限
本文最后更新于 66 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

sudo权限

一般情况下,使用su命令在用户之间切换,需要知道对方密码。比如su切换到root下,需要知道root密码。
但使用sudo命令,就不需要知道root密码,只需要输入自己账号密码即可!前提是需要将相关账号设置sudo权限
sudo权限: 是为了让普通用户执行只有root用户才能执行的操作命令(这种方式无需知道root密码)
sudo所在文件:/etc/sudoers,编辑该文件的命令是visudo,不过只能在root账号下可以使用该命令,且如果上一次visudo编译未退出状态下,不能重新visudo进行编辑(也可以直接vi编辑/etc/sudoers文件)
强烈推荐使用visudo命令修改sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。

sudo的工作过程如下:

1)当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2)确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
3)若密码输入成功,则开始执行sudo后续的命令
4)root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
5)若欲切换的身份与执行者的身份相同,也不需要输入密码

Sudo的特性:

sudo能够限制用户只在某台主机上运行某些命令。
sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。也就是说,我刚刚输入了sudocat /etc/issue 然后可以再次只需要输入cat/etc/issue即可,不需要再次输入sudo。
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。

常用sudo权限的安全设置一般可以满足下面4个条件:

1.禁止普通用户使用sudo 命令切换到root模式下
2.用户使用sudo命令,必须每次都输入密码
3.用户组管理(组内添加和删除用户)以及组权限管理设置
4.使用别名(用户名以及命令的别名)进行设置
1.禁止普通用户使用sudo su切换到root用户模式下

总所周知,只要给普通用户设置了sudo权限,那么它就可以使用“sudo su root”命令切换到root用户下(只要知道自己的密码即可,sudo权限只要输入自己的密码),这是很不安全的。必须禁止这种做法。
只需要在sudo的配置文件里添加下面内容即可。
sudo切换到root模式下有以下几种方式:
1)sudo su -
2)sudo -s
3)sudo su root
4)sudo su - root
5)sudo -u root su
在root账号下输入visudo(或/etc/sudoers)命令,设置如下:

root        ALL=(ALL)       ALL

wangshibo   ALL=(ALL)       ALL,!/bin/bash,!/bin/su

如上设置,表示wangshibo用户在使用sudo权限后,禁止使用bash和su命令。也就是说:禁止了该用户使用sudo切换到root模式下了。

其中:
!/bin/bash 是禁止了sudo -s的切换
!/bin/su 是禁止了sudo中带su的切换

禁止账号间使用su命令切换

su的缺点
1)不安全su工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中。
2)麻烦:需要把root密码告知每个需要root权限的人。
可以在/etc/pam.d/su文件里设置禁止用户使用su命令

#vim /etc/pam.d/su
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid

如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。
如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

授权规则说明
root ALL=(ALL) ALL

以上是/etc/sudoers配置文件中默认定义的用户sudo设置,其中解释如下:
1)第一个字段root指定的是用户:可以是用户名,也可以是别名。每个用户设置一行,多个用户设置多行,也可以将多个用户设置成一个别名后再进行设置。
2)第二个字段ALL指定的是用户所在的主机:可以是ip,也可以是主机名,表示这个sudo设置后的文件(/etc/sudoers)只在这个主机上生效,ALL表示在所有主机上都生效!限制的一般都是本机,也就是限制使用这个文件的主机,如果指定为:192.168.1.88= 表示这个文件只有在这台主机上生效,如果拷贝到别的机子上是不起作用的!一般都指定为:ALL 表示所有的主机,不管文件拷到那里都可以用。
3)第三个字段(ALL)括号里指定的也是用户:指定以什么用户身份执行sudo,即使用sudo后可以享有所有账号下的权限。如果要排除个别用户,可以在括号内设置,比如ALL=(ALL,!root,!ops)。也可以设置别名
4)第四个字段ALL指定的是执行的命令:即使用sudo后可以执行所有的命令。也可以设置别名

2.用户使用sudo命令,必须每次都输入密码
在/etc/sudoers文件里添加内容“Defaults timestamp_timeout=0”

即表示每次使用sudo命令时都要输入密码。

3.用户组管理(组内添加和删除用户)以及组权限管理设置

进行用户权限管理,设置sudo权限时,可以设置组的权限,不同的组有不同的权限,然后将用户拉到相应权限的组内。
将一个用户拉入到一个组内,有下面两种方法:

1)usermod -G 组名 用户名
2)gpasswd -a 用户名 组名     #添加到组内
   gpasswd -d 用户名 组名     #从组内删除
%wheel  ALL=(ALL)   ALL,!/bin/bash,!/bin/su

以上设置表示wheel组内的用户在使用sudo权限后,禁止使用bash和su命令,也就是禁止了该组内用户使用sudo切换到root模式下了。

4.使用别名进行sudo权限设置

Alise设置别名有以下四种情况:

Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias

1)配置Host_Alias:就是主机的列表,可以使用主机名,也可以使用ip,不过在同一个别名内不能同时混用主机名和ip地址!

Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
Host_Alias HOST_FLAG1 = 192.168.1.12, 192.1681.13, 192.168.1.14
Host_Alias HOST_FLAG2 = hostname1, 192.1681.13, 192.168.1.14                 #这种设置是错误的!不能在同一个别名内混用主机名和ip

2)配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.
命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患,因此使用的时候也是使用绝对路径!

Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4

3)配置User_Alias:就是具有sudo权限的用户的列表

User_Alias USER_FLAG = user1, user2, user3

4)配置Runas_Alias:就是用户以什么身份执行(例如root)的列表

Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

使用别名配置权限的格式如下:

USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG

如果不需要密码验证的话,则按照这样的格式来配置

USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD:COMMAND_FLAG

案例说明:
例如1:把wangsb,wangbz,songj用户设置成别名ADMINS,都拥有duso权限

#visudo
User_Alias ADMINS = wangsb, songj,wangbz
......
ADMINS ALL=(ALL) ALL

例如2:把visudo、chown、chmod等命令设置成别名DELEGATING,别名ADMINS里面的用户都禁用DELEGATING里面的命令

#visudo
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
......
ADMINS ALL=(ALL) ALL,!DELEGATING
.......
[root@hqsb_web1 ~]# visudo
.......
Defaults timestamp_timeout=0       #表示每次sudo时都要强行输入密码
.......
kevin  ALL=(ALL)       /usr/bin/tail,/bin/gzip,/usr/bin/vim,/bin/chown,/bin/chmod,/Data/app/nginx/sbin/nginx    #kevin用户在使用sudo时只能使用这几个命令,其他sudo命令全部禁止!

grace  ALL=(ALL)       ALL,!/bin/bash,!/bin/su,!/bin/chown,!/bin/chmod,!/sbin/init,!/sbin/reboot,!/sbin/poweroff    #grace用户使用sudo时,禁止后面设置的命令,其他的都可以使用。

sudo权限配置文件

## 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 (perhaps 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/bin/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>".
# 一些环境变量的相关配置,具体情况可见man soduers
Defaults requiretty

Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## 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中户组中的用户使用NETWORKING等所有别名中配置的命令
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE
, DRIVERS

## Allows people in group wheel to run all commands
## 允许wheel用户组中的用户执行所有命令
%wheel ALL=(ALL) ALL

## 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这台服务器
# %users localhost=/sbin/shutdown -h now

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明)
#includedir /etc/sudoers.d
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇