xml地图|网站地图|网站标签 [设为首页] [加入收藏]
来自 关于我们 2020-01-01 13:13 的文章
当前位置: 新濠国际登录平台 > 关于我们 > 正文

新濠国际登录平台我来说两句,针对sudo编辑专门

  sudo是一种权限管理机制,管理员可以授权普通用户去执行root的操作,而不需要知道root的密码,它依赖于/etc/sudoers这个文件,可以授权给哪个用户在哪个主机上能够以管理员的身份执行什么样的管理命令,而且是有限的。/etc/sudoers文件相当于一个授权表,此文件的权限只有管理员可以查看并且不建议使用vim编辑器来进行编辑,跟cron一样有专门的编辑命令可以检测语法问题,以免产生语法错误导致系统崩溃;针对sudo编辑专门提供了一个命令visudo。

sudo命令的用法

因为root的权限太大,所以Linux下一般不能以管理员直接登录,或su - root去操作,这时我们就需要用到sudo这个命令去帮助我们执行一些普通用户没有权限的管理命令。

sudo命令的特点:

1、授权指定用户在指定主机上运行指定的管理命令;

2、详细记录用户基于sudo执行的命令的相关日志信息;

3、“检票系统”:时效性认证,用户第一次执行sudo时会要求输入密码来验正用户身份,成功后用户会获得一个有固定存活时长的“令牌”;5分钟

如何实现sudo功能?

/etc/sudoers:授权文件,只能由管理员编辑;但一般不用vim直接去编辑,因为可能会出现语法错误,所以一般用专用的编辑工具visudo命令去授权。

/etc/sudoers:

注意:别名定义: 别名必须使用全大写字符

内置变量:  ALL: 所有用户

User_Alias:

User_Alias NAME = item1, item2, ...

item:

用户名

%组名

#UID

$#GID

User_Alias(表示可以使用已经定义的别名)

例:  User_Alias ADMIN =CentOS,%lx,#500

表示定义ADMIN别名,有centos用户,lx组,UID为500的用户

Host_Alias:可以在哪些主机上运行

Host_AliasNAME = item1, item2, ...

item:

hostname

ip

network

Host_Alias

例:  Host_Alias ALLOWADDR =172.16.37.10,172.16.0.0/16

表示定义ALLOWADDR别名,有ip为172.16.37.10,网络地址为172.16.0.0/16

Runas_Alias

Runas_AliasNAME = item1, item2, ...

用法和User_Alias相同

Cmnd_Alias:

Cmnd_AliasNAME = item1, item2, ...

item:

命令

目录(目录下的所有命令)

Cmnd_Alias

例:  Cmnd_Alias COMMAND =/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin

表示定义COMMAND别名,有useradd,userdel,和/usr/sbin下的所有命令

定义时可取反:Cmnd_AliasPASSWD = /usr/bin/passwd [0-9A-Za-z]*,! /usr/bin/passwd root

sudo授权:

WHO        HOST=(WHOM)        COMMAND

例:centos  MYPC=(root)  /usr/sbin/useradd

新濠国际登录平台 1

标签:

NOPASSWD:表示标签之后的命令都不用输密码

PASSWD:表示标签之后的命令都用输密码

新濠国际登录平台 2

sudo命令:

-l: 查看当前用户可执行的sudo命令;

-u USERNAME COMMAND: 以指定的用户身份执行指定的COMMAND;

-k: 清除“令牌”

-b COMMAND: 在后台运行指定的COMMAND

-e /path/to/somefile:修改指定的文件;

例:sudo-u centos useradd user1

Linux教程分享:如何为sudo命令定义PATH环境变量 

Ubuntu的sudo与su命令使用与开启root帐户

sudo: sorry, you must have a tty to run sudo

Linux配置sudo权限

sudo配置临时取得root权限

Linux下解决用户不能执行sudo的方法

Linux系统管理员不可不知的命令:sudo

sudo使用之实现权限分配

本文永久更新链接地址:

因为root的权限太大,所以Linux下一般不能以管理员直接登录,或su - root去操作,这时我们就需要用到sudo这个命令去帮助我们...

Linux sudo命令与其配置文件/etc/sudoers

sudo命令格式

sudo [options] COMMAND

options:

  -l COMMAND:列出用户可执行或不可执行的命令信息;
  -k:清除用户成功认证所缓存的时间戳,默认缓存时间戳为5分钟;
  -p:改变询问密码的提示符号;
  -s<shell>:执行指定的shell;
  -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份

2012-05-04 11:00:56     我来说两句     

visudo

用户授权语句的格式:

USERS  LOCATION=(USERNAME|GROUP|runas_alias)  [NOPASSWD|PASSWD]  COMMAND

实例:root  ALL=(ALL)  ALL (第一个ALL指网络中的主机;第二个ALL指目标用户,以谁的身份运行命令;第三个ALL指命令名)
   user1  ALL=(user2,user3)  /bin/ls, /bin/rm
   user2  localhost=(root)    /bin/touch, /bin/rm
   user3  localhost=(root)    nopasswd:/bin/touch

其中:

  USERS 可以是:
    username:授权用户名;
    %groupname:授权用户组;
    User_alias:授权的用户或组别名

  LOCATION 可以是:
    ip:规则匹配的IP地址;
    hostname:规则匹配的主机名;
    NetAddr:规则匹配的网段;
    Host_alias:主机别名

  COMMAND 可以是:
    command:命令的绝对路径;
    Cmnd_alias:命令的别名组

而关于 Alias 定义的格式:

ALIAS_TYPE  NAME=item1,item2,item3...

注意:NAME必须全为大写字母。
  ALIAS_TYPE的类型包括:
    User_Alias:授权用户别名类型
    Host_Alias:主机别名类型
    Runas_Alias:作为哪些用户执行的别名类型
    Cmnd_Alias:命令别名类型

收藏    新濠国际登录平台 3我要投稿

应用实例1

[root@happiness ~]# visudo
    root    ALL=(ALL)       ALL
    user1   ALL=(user2,user3)     /bin/ls  #指定user1能执行user2,user3的ls命令
[root@happiness ~]# su - user1
  Last login: Tue Sep  4 16:09:47 CST 2018 on pts/0
[user1@happiness ~]$ sudo ls /home/user2  #sudo没指定用户时,默认以root执行,而user1没有root的ls权限,故报错
  [sudo] password for user1: 
  Sorry, user user1 is not allowed to execute '/bin/ls /home/user2' as root on happiness.
[user1@happiness ~]$ sudo -u user2 ls /home/user2  #sudo权限可用
  [sudo] password for user1: 
  user2txt
[user1@happiness ~]$ sudo -u user3 ls /home/user2
  ls: cannot open directory /home/user2: Permission denied
[root@happiness ~]# visudo
    root    ALL=(ALL)       ALL

    Defaults:user1        runas_default=user2  #指定user1默认以user2执行ls命令
[root@happiness ~]# su - user1
  Last login: Tue Sep  4 17:08:18 CST 2018 on pts/0
[user1@happiness ~]$ sudo -k
[user1@happiness ~]$ sudo ls /home/user3
ls: cannot open directory /home/user3: Permission denied
[user1@happiness ~]$ sudo ls /home/user2  #默认用user2执行并且不需要输入密码
  user2txt

Linux sudo命令与其配置文件/etc/sudoers

应用实例2

[root@happiness ~]# visudo
  
  
  
  USERADM ALL=(root) NOPASSWD:COMM1,PASSWD:COMM2
[root@happiness ~]# useradd user1
[root@happiness ~]# useradd user2
[root@happiness ~]# passwd user1
测试结果:
[root@happiness ~]# su - user1
[user1@happiness ~]$ sudo -l  #查看用户所拥有的sudo权限
Matching Defaults entries for user1 on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
    LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE
    LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin:/bin:/usr/sbin:/usr/bin

User user1 may run the following commands on this host:
    (root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd, !/usr/bin/passwd root, (root) PASSWD:
    /usr/sbin/shutdown, /usr/sbin/reboot
[user1@happiness ~]$ sudo passwd user2  #为user2设置密码
  Changing password for user user2.
  New password:
  [user1@happiness ~]$ sudo passwd root   #不允许更改root密码
  Sorry, user user1 is not allowed to execute '/bin/passwd root' as root on happiness.
[user1@happiness ~]$ sudo shutdown  #执行shutdown需要输入用户密码
  [sudo] password for user1: 

 

linux有一定了解的人多少也会知道点关于sudo命令。sudo命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在执行的时候却仍是以这个命令本身所属用户来完成的[注释1]。(su命令类似sudo命令,但是两者的差别在于前者su是一个粗粒度权限赋予, www.2cto.com 

对su最好的理解我觉得是change user running command permanent。即永久的切换到了su过去的用户,然后以这个su到的新用户干它能干的一切事情,而sudo则是指在执行某个命令的时候临时切换到这个命令的所属用户执行[注释1],而且sudo可以做到以单个命令为单位将权限赋予给其他用户,相比su显得更加灵活。)

 

大概了解了sudo的功能,那么你知道怎么配置sudo吗?下面来简要说明一下:

配置sudo的配置文件在/etc/sudoers里面,一般通过visudo命令来安全打开编辑。查看/etc/sudoers的用法可以使用命令: man 5 sudoers新濠国际登录平台,。在/etc/sudoers文件里面主要包括这两部分:

  1. 别名设置  www.2cto.com 

别名主要包括这几种:User_Alias,Host_Alias,Runas_Alias,Cmnd_Alias,分别是用户别名,主机别名,运行用户别名,命令别名。设置这几个别名的命令主要是为了配置方便,这个很类似linux用户群组或是数据库中角色的作用,有了别名便可以批量的赋予权限。

设置方法 Alias_Type alias_name = name1, name2, name3, 例如User_Alias User1 = user1, user2, user3。其他类型的alias设置方法类似。

  1. 真正的sudo entry

这个就是真正配置哪些用户可以使用哪些命令了(你甚至可以不使用别名设置那部分)。

本文由新濠国际登录平台发布于关于我们,转载请注明出处:新濠国际登录平台我来说两句,针对sudo编辑专门

关键词: