首页服务器Linux服务器 Linux使用Sudo委派权限

Linux使用Sudo委派权限

sudo权限委派介绍 su 切换身份:su –l username –c ‘command' sudo 来自sudo包 man 5 sudoers sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用…

sudo权限委派介绍

  • su 切换身份:su –l username –c ‘command'
  • sudo
  • 来自sudo包
  • man 5 sudoers
  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使  用 sudo,会提示联系管理员
  • sudo可以提供日志,记录每个用户使用sudo操作
  • sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机
  • sudo使用时间戳文件来完成类似“检票”的系统,默认存活期为5分钟的“入场券”
  • 通过visudo命令编辑配置文件,具有语法检查功能 :
  •               visudo –c 检查语法
                  visudo -f /etc/sudoers.d/test

sudo

  • 配置文件:/etc/sudoers, /etc/sudoers.d/
  • 时间戳文件:/var/db/sudo
  • 日志文件:/var/log/secure
  • 配置文件支持使用通配符glob: 
  • ?:任意单一字符
    *:匹配任意长度字符 
    [wxc ] 匹配其中一个字符
    [!wxc] 除了这三个字符的其它字符
    /x : 转义
    [[alpha]] :字母 示例: /bin/ls [[alpha]]*
  • 配置文件规则有两类: 
  • 1、别名定义:不是必须的  
      2、授权规则:必须的

sudoers

  • 授权规则格式: 
  • 用户 登入主机=(代表用户) 命令
  • 示例:
  • root ALL=(ALL) ALL
  • 格式说明:
  • user: 运行命令者的身份 
  •  host: 通过哪些主机 
      (runas):以哪个用户的身份  
      command: 运行哪些命令

别名

  • Users和runas:
  • username  
         #uid  
        %group_name  
        %#gid  
        user_alias|runas_alias
  • host: 
  • ip或hostname 
  • network(/netmask) 
        host_alias
  • command: 
  • command name  
      directory  
      sudoedit  
      Cmnd_Alias

最近,我编写了一个简短的Bash程序,将MP3文件从一个网络主机上的USB拇指驱动器复制到另一个网络主机上。这些文件被复制到我为志愿者组织运行的服务器上的一个特定目录,从那里可以下载和播放这些文件。

我的程序还做了一些其他的事情,比如在文件被复制之前更改它们的名称,以便它们在网页上按日期自动排序。它还删除USB驱动器上的所有文件,验证传输是否正确完成。这个不错的小程序有几个选项,例如-h为了展示帮助,-t用于测试模式,以及其他几个。

尽管我的程序非常出色,但它必须作为root运行才能执行其主要功能。不幸的是,这个组织只有少数人对管理我们的音频和计算机系统有兴趣,这使我能够找到半技术人员,并训练他们登录到用于执行传输和运行这个小程序的计算机中。

这并不是说我不能亲自运行这个项目,而是由于各种原因,包括旅行和生病,我并不总是在那里。即使在我在场的时候,作为“懒惰的系统管理员”,我也喜欢让别人为我做我的工作。因此,我编写脚本来自动化这些任务,并使用sudo来指定几个用户来运行这些脚本。许多Linux命令要求用户是root用户才能运行。这可以保护系统免受意外损坏,比如我自己的愚蠢和恶意用户的故意破坏。

做你做得很好的事

sudo程序是一个方便的工具,它允许我作为一个具有根访问权限的系统管理员,将所有或几个管理任务的责任委托给计算机的其他用户。它允许我在不损害根密码的情况下执行该委托,从而在主机上保持高度的安全性。

例如,让我们假设我给了常规用户“ruser”对我的Bash程序“myprog”的访问权限,它必须作为root运行才能执行其部分功能。首先,用户使用自己的密码以ruser身份登录,然后使用以下命令运行myprog。

 myprog  

sudo程序检查/etc/sudoers文件并验证ruser是否允许运行myprog。如果是这样的话,sudo请求用户输入他们的密码-而不是根密码。在ruser输入密码后,程序将运行。此外,sudo用程序运行的日期和时间、完整的命令以及运行它的用户记录对myprog的访问事实。此数据已登录。/var/log/security.

我发现让sudo运行每个命令的日志来进行培训是很有帮助的。我能看出谁做了什么,他们是否正确地输入了命令。

我这样做是为了授权我自己和另一个用户运行一个程序;然而,sudo可以用来做更多的事情。它允许sysadmin将管理网络功能或特定服务的权限委托给一个人或一组受信任的用户。它允许在保护根密码安全性的同时委派这些函数。

配置sudoers文件

作为一个系统管理员,我可以使用/etc/sudoers文件以允许用户或用户组访问单个命令、定义的命令组或所有命令。这种灵活性是使用sudo进行委托的力量和简单性的关键。

一开始我发现sudoers文件非常混乱,所以下面我从我使用它的主机复制并解构了整个sudoers文件。希望当你通过这个分析的时候,它对你来说不会很模糊。顺便说一句,我发现基于RedHat的发行版中的默认配置文件往往有大量的注释和示例来提供指导,这使事情变得更简单,减少了在线搜索的需求。

不要使用标准编辑器修改sudoers文件。使用visudo命令,因为它的设计目的是在保存文件并退出编辑器后立即启用任何更改。除了Vi之外,还可以使用与visudo.

让我们从一开始就用几种别名来分析这个文件。

宿主别名

主机别名部分用于创建可用于提供访问的命令或命令别名的主机组。其基本思想是为组织中的所有主机维护这个单一文件,并将其复制到/etc每一个主人。因此,可以将某些主机(如服务器)配置为一个组,使某些用户能够访问特定的命令,例如启动和停止httpd、DNS和网络等服务的能力;挂载文件系统的能力等等。

可以在主机别名中使用IP地址而不是主机名。

## Sudoers allows particular users to run various commands as## the root user, without needing the root password.## 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.## Host Aliases## Groups of machines. You may prefer to use hostnames (perhaps using## wildcards for entire domains) or IP addresses instead.# 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, mikemUser_Alias AUDIO = dboth, ruser## Command Aliases## These are groups of related commands...## 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# Refuse to run if unable to disable echo on the tty.Defaults  visiblepwDefaults  env_resetDefaults  env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE 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:usrsbin:usrbin:usrlocalbin## Next comes the main part: which users can run what software on## which machines (the sudoers file can be shared between multiple## systems).## Syntax:##   user  MACHINE=COMMANDS## The COMMANDS section may have other options added to it.## Allow root to run any commands anywhereroot  =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## Allows people in group wheel to run all commandswheel =ALL    ALL## Same thing without a password# %wheel    ALL=(ALL)    NOPASSWD: ALL## Allows members of the users group to mount and unmount the## cdrom as root# %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## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)#includedir /etc/sudoers.d############################################################# Added by David Both to provide limited access to myprog #############################################################AUDIO  guest1=usrlocalbinmyprog
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/Linux/9504.html
上一篇Linux初始化系统盘后重新挂载数据盘方法
下一篇 Linux下完全删除用户的两种方法
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部