linux中sudo的用法和sudoers配置详解

sudo 是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。它的特性主要有这样几点:

1.sudo能够限制用户只在某台主机上运行某些命令。

2.sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

3.sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。

4.sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。

sudo的使用

权限:在 /etc/sudoers 中有出现的使用者

使用方式:sudo -V

sudo -h

sudo -l

sudo -v

sudo -k

sudo -s

sudo -H

sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s

用法:sudo command

说明:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行

参数:

-V 显示版本编号

-h 会显示版本编号及指令的使用方式说明

-l 显示出自己(执行 sudo 的使用者)的权限

-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码

-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)

-b 将要执行的指令放在背景执行

-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称

本文URL:http://www.bianceng.cn/OS/Linux/201410/45603.htm

-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)

-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell

-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )

command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

范例:

sudo -l 列出目前的权限

sudo -V 列出 sudo 的版本资讯

指令名称:sudoers(在fc5下显示不能找到此命令,但用man可以查到其用法。)

用来显示可以使用sudo的用户

sudoers的配置

sudoers 是sudo的主要配置文件,linux下通常在/etc目录下,如果是solaris,缺省不装sudo的,编译安装后通常在安装目录的etc目录下,不过不管sudoers文件在哪儿,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。

言归正传,下面介绍如何配置sudoers

首先写sudoers的缺省配置:

#############################################################

# sudoers file.

#

# This file MUST be edited with the 'visudo' command as root.

#

# See the sudoers man page for the details on how to write a sudoers file.

#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification

# User privilege specification

root    ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands

# %wheel        ALL=(ALL)       ALL

# Same thing without a password

# %wheel        ALL=(ALL)       NOPASSWD: ALL

# Samples

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

# %users  localhost=/sbin/shutdown -h now

##################################################################

1. 最简单的配置,让普通用户support具有root的所有权限

执行visudo之后,可以看见缺省只有一条配置:

root    ALL=(ALL) ALL

那么你就在下边再加一条配置:

support ALL=(ALL) ALL

这样,普通用户support就能够执行root权限的所有命令

以support用户登录之后,执行:

sudo su -

然后输入support用户自己的密码,就可以切换成root用户了

2. 让普通用户support只能在某几台服务器上,执行root能执行的某些命令

首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种

Host_Alias

Cmnd_Alias

User_Alias

Runas_Alias

1) 配置Host_Alias:就是主机的列表

Host_Alias      HOST_FLAG = hostname1, hostname2, hostname3

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,或者oracle)的列表

Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

5) 配置权限

配置权限的格式如下:

USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG

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

USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG

配置示例:

############################################################################

# sudoers file.

#

# This file MUST be edited with the 'visudo' command as root.

#

# See the sudoers man page for the details on how to write a sudoers file.

#

# Host alias specification

Host_Alias      EPG = 192.168.1.1, 192.168.1.2

# User alias specification

# Cmnd alias specification

Cmnd_Alias      SQUID = /opt/vtbin/squid_refresh, !/sbin/service, /bin/rm

Cmnd_Alias      ADMPW = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd, !/usr/bin/passwd root

# Defaults specification

# User privilege specification

root    ALL=(ALL) ALL

support EPG=(ALL) NOPASSWD: SQUID

support EPG=(ALL) NOPASSWD: ADMPW

# Uncomment to allow people in group wheel to run all commands

# %wheel        ALL=(ALL)       ALL

# Same thing without a password

# %wheel        ALL=(ALL)       NOPASSWD: ALL

# Samples

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

# %users  localhost=/sbin/shutdown -h now

###############################################################

本文出自 “richard的笔记-积微成著” 博客,请务必保留此出处http://zxf261.blog.51cto.com/701797/748756

时间: 2024-09-18 01:53:02

linux中sudo的用法和sudoers配置详解的相关文章

linux中vsftpd下虚拟用户+被动模式配置详解

下面说说在linux下部署vsftp的过程吧,小小笔记. 一.安装 这里我说下最简单的rpm包安装,因为光盘中有,何必编译呢? yum install db4* vsftpd -y 二.配置 1.新建系统用户 useradd vsftpd -s /sbin/nologin 限制vsftpd用户登录,此用户将最为vsftpd服务的宿主用户 useradd ftp -s /sbin/nologin 这里是Vsftpd虚拟宿主用户,默认情况下这个用户应该有. 当然这些用户你可以用另外的名字. 2.修改

linux中php-fpm进程数优化与分析详解

在几个不是很繁忙的线上服务器发现php-fpm进程数达到500多,且存在一些运行时间长达几个月的进程. 进行了以下排查,以确定:phpfpm运行是否有问题,是否需要重启. 查看这些进程是否被正常启动 由于php-fpm.log中,会以notice级别打印worker进程的启动和回收时间,故可以通过以下语句检查有哪些php没有被记录到(ps axuf可以查看到进程的父子关系):  代码如下 复制代码 $cd /path/to/php-fpm.log $for word in `ps axu | g

linux系统中Rsync + Lsync实时文件同步配置详解

使用Rsync + Lsync可实现实时文件同步,本文就介绍如何配置Rsync + Lsync.并测试文件同步功能. 服务器信息: 主:10.86.255.154 从:10.86.255.155 1.从服务设定. 1.1.安装配置rsync xinet. # yum -y install rsync xinet # cp /etc/xinetd.d/rsync /etc/xinetd.d/rsync.bkp0625 # vim /etc/xinetd.d/rsync  # default: of

linux中reboot与shutdown重启/关机命令详解

我们在操作Linux vps/服务器的时候肯定会有需要重启系统,或者关闭系统等操作.有些用户是直接到VPS主机商家面板上操作的,这样一来比较麻烦,二来有些面板还不易于使用容易导致面板卡死.所以最好的方法就是通过SSH命令操作,老蒋这里分享2个命令,reboot与shutdown都可以用来作为重启VPS/关机重启操作. 第一.reboot 使用方法:直接在SSH ROOT权限用户下输入reboot命令就可以看到The system is going down for reboot NOW的提示,目

linux中Docker把应用放到容器里详解

在现实生活中,容器就是用来装东西的东西.把你的应用放到容器里,容器里的环境你可以自由定制,你可以在里面安装配置应用需要的任何东西,然后你可以把这个装载着应用的容器拿到任何地方去运行,这些地方不需要知道容器里面到底有什么,它只需要知道怎么样去运行这个容器就行了.Docker 提供了一系列的工具,让我们把应用放到容器里变得更简单. 镜像与容器 镜像与容器,image and container.基于镜像可以去创建容器,镜像有点像是容器的模板,比如你用 centos 镜像创建一个容器,这个容器里的环境

Linux中rz命令和sz命令使用详解大全_linux shell

sz命令 用途说明:sz命令是利用ZModem协议来从Linux服务器传送文件到本地,一次可以传送一个或多个文件.相对应的从本地上传文件到Linux服务器,可以使用rz命令. 常用参数 -a 以文本方式传输(ascii). -b 以二进制方式传输(binary). -e 对控制字符转义(escape),这可以保证文件传输正确. 如果能够确定所传输的文件是文本格式的,使用 sz -a files 如果是二进制文件,使用 sz -be files rz命令 -b 以二进制方式,默认为文本方式.(Bi

linux中]/var/log目录日志的作用详解

位于/var/log/目录之下有许多日志文件,这里记录一下相关用途.其中一些只有特定版本采用,如dpkg.log只能在基于Debian的系统中看到. /var/log/messages - 包括整体系统信息,其中也包含系统启动期间的日志.此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中. /var/log/dmesg - 包含内核缓冲信息(kernel ring buffer).在系统启动时,会在屏幕上显示许多与硬件有关的信息.可以用

Linux中使用rpm安装软件包的方法详解

最近我在研究linux系统,简单得总结了一些常用得命令 主要是rpm安装命令 卸载 与查询 tar 解压缩 ,tar软件安装 文件删除 rm 可用于文件以及文件夹删除,另外rmdir用来删除空文件夹 用户相关 useradd 以及 passwd 权限相关 chmod 等 移动与重命名 mv tar:     tar xvfz xampp-linux-1.7.7.tar.gz -C /opt   [.tar.gz]     tar xvfj FileZilla.tar.bz2 -C /opt   

nginx调用php-fpm出错解决方法和nginx配置详解_nginx

装完了nginx和php-5.5,配置好了nginx调用php后,就开始启动php-fpm. 使用下面的命令 复制代码 代码如下: /usr/local/php/sbin/php-fpm 就可以启动了. 在nginx的目录中创建个php的检测脚本index.php 结果在打开http://localhost/index.php 悲剧的发现居然无法打开 .查看日志文件,看了下报错原因 复制代码 代码如下: 2013/07/01 22:34:26 [error] 3214#0: *64 FastCG