文件及内容处理 - visudo、sudo

1. visudo:编辑/etc/sudoers文件的专属命令

visudo命令的功能说明

visudo命令专门用来编辑/etc/sudoers这个文件的。

visudo命令的语法格式

visudo [-chqsV] [-f sudoers]

visudo命令的常用参数说明:

visudo 参数不多,表1为 visudo 命令的参数及说明:

表1: visudo 命令的参数及说明

参数选项 解释说明
-c 手动执行语法检查

visudo命令的实践操作

范例1: 执行 visudo 对普通用户oldboy和oldgirl授权

[root@oldboyedu  ~]# visudo #作用就是相当于 vim /etc/sudoers 一样
100 root    ALL=(ALL)       ALL
101 oldboy  ALL=(ALL)      NOPASSWD: ALL  #在100行左右添加
102 oldgirl ALL=(ALL)      NOPASSWD: /usr/bin/useradd,/usr/bin/userdel #添加的内容

上面的格式简单介绍

待授权的用户或组 机器=(授权角色) 可以执行的命令
user MACHINE= COMMANDS
oldboy ALL=(ALL) ALL

提示:每次执行visudo并修改内容后,需要语法检查:

[root@oldboyedu  ~]# visudo -c
/etc/sudoers: parsed OK

2. sudo:以另外一个用户身份(默认root用户)执行事先在sudoers文件允许的命令

sudo命令的功能说明

sudo 命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。使用权限:在 /etc/sudoers 中有出现的使用者。

sudo命令的语法格式

sudo -l [-AknS] [-a type] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
sudo -v [-AknS] [-a type] [-g group] [-h host] [-p prompt] [-u user]

sudo命令的常用参数说明:

sudo 参数不多,表1为 sudo 命令的参数及说明:

表1: sudo 命令的参数及说明

参数选项 解释说明
-V 显示版本编号
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

sudo命令的实践操作

范例1: 查看用户被visudo 授权后拥有的权限

[root@db01 ~]# whoami #查看当前用户
root
[root@db01 ~]# su - oldboy #切换 oldboy 用户
上一次登录:三 6月 12 10:13:34 CST 2019从 10.0.0.1pts/0 上
[oldboy@db01 ~]$ whoami #用户已改变
oldboy
[oldboy@db01 ~]$ ls /root #查看 root 用户家目录,权限不够
ls: 无法打开目录/root: 权限不够
[oldboy@db01 ~]$ sudo ls /root #加 sudo 就 ok 了,是因为前面已经配置了 visudo
test

范例2: 查看oldboy 用户授权的结果情况:

[oldboy@db01 ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE 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

用户 oldboy 可以在 db01 上运行以下命令:
    (ALL) NOPASSWD: ALL #ALL 代表所有,相当于与 root 相同权限了

今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津

Shell命令-用户用户组管理之visudo、sudo的更多相关文章

  1. Shell命令-用户用户组管理之id、su

    文件及内容处理 - id.su 1. id:查看用户的uid,gid及归属的用户组 id命令的功能说明 id 命令用于显示用户的 ID,以及所属群组的 ID.id 会显示用户以及所属群组的实际与有效I ...

  2. Shell命令-用户用户组管理之useradd、usermod

    文件及内容处理 - useradd.usermod 1. useradd:添加用户 useradd命令的功能说明 useradd 命令用于建立用户帐号.useradd 可用来建立用户帐号.帐号建好之后 ...

  3. Shell命令-用户用户组管理之userdel、groupadd

    文件及内容处理 - userdel.groupadd 1. userdel:删除用户 userdel命令的功能说明 userdel 命令用于删除用户帐号.userdel 可删除用户帐号与相关的文件.若 ...

  4. Shell命令-用户用户组管理之passwd、chage

    文件及内容处理 - passwd.chage 1. passwd:修改用户密码 passwd命令的功能说明 passwd命令用来更改使用者的密码 passwd命令的语法格式 passwd [-k] [ ...

  5. 数据仓库003 - 复习Linux shell命令 - 用户用户组 sudo 权限 du-sh find 

    一.用户用户组 [root@localhost ~]# ll /usr/sbin/user* -rwxr-x--- root root -- /usr/sbin/useradd -rwxr-x--- ...

  6. Linux命令--用户用户组管理

    新增用户组 : groupadd groupadd [-g GID] 组名 不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的 修改用户组信息 : groupmod grou ...

  7. Linux学习之用户管理命令与用户组管理命令(十五)

    Linux学习之用户管理命令与用户组管理命令 目录 用户管理命令 用户添加命令useradd 修改用户密码passwd 修改用户信息usermod 修改用户密码状态chage 删除用户userdel ...

  8. linux笔记:用户管理命令和用户组管理命令

    用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手 ...

  9. linux下用户管理命令、用户组管理命令

    useradd 添加新用户 1.基本语法 useradd 用户名                   (功能描述:添加新用户) useradd -g 组名 用户名      (功能描述:添加新用户到某 ...

随机推荐

  1. python中线程 进程 协程

    多线程:#线程的并发是利用cpu上下文的切换(是并发,不是并行)#多线程执行的顺序是无序的#多线程共享全局变量#线程是继承在进程里的,没有进程就没有线程#GIL全局解释器锁#只要在进行耗时的IO操作的 ...

  2. Azure 架构师认证考试

    Azure认证路线 AZ-300 AZ-301 https://blog.csdn.net/pg_edb/article/details/86794505 免费题 https://iteablue.c ...

  3. Sql之for update

    for updateselect * from xxxxxxx where namemc='筛查' for update那是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁 ...

  4. JavaScript调用mysql查询bigint数据精度失真解决方案

    最近我遇上了如题这个问题,后端用node.js写了一个读取mysql数据的接口,之前使用了很久都没发现什么问题,在查询订单表的订单ID时返回的值却是错的 正确的值是 19102818002800002 ...

  5. QT向界面中嵌套新的界面

    简单说下 想要实现的内容 我们有一个主窗口mainwindow,需要向其中放入新的界面,你可以自己定义里面内容. 大致的效果图如下 实现起来就是利用QT的layout布局 使用水平布局QHboxlay ...

  6. Windows10 安装grpc-go 详细步骤

    准备依赖 git clone https://github.com/grpc/grpc-go.git $env:GOPATH\src\google.golang.org\grpc git clone ...

  7. 任意视频批量转码MP4-H264助手

    使用说明 简单的粗暴的小工具,利用windows命令行调用ffmpeg完成任意格式视频转换成H264编码的MP4视频,以确保视频可以在主流浏览器中直接播放,如:Chrome.Firefox等. 只需要 ...

  8. Gitlab安装过程

    sudo yum install -y curl policycoreutils-pythonopenssh-server sudo systemctl enable sshd sudo system ...

  9. tensorflow2.0安装

    版本: python3.5 Anaconda 4.2.0 tensorflow2.0 cpu版本 1.安装命令 pip3 install tensorflow==2.0.0.0a0 -i https: ...

  10. C++入门到理解阶段二基础篇(6)——C++数组

    概述 C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 numbe ...