centos sudo不能运行_如何在Linux中配置sudo访问权限
Linux 系统中 root 用户拥有 Linux 中全部控制权力。Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为。
如果其他用户想去实施一些行为,不能为所有人都提供 root 访问权限。因为如果他或她做了一些错误的操作,没有办法去纠正它。
为了解决这个问题,有什么方案吗?
我们可以把 sudo 权限发放给相应的用户来克服这种情况。
sudo
命令提供了一种机制,它可以在不用分享 root 用户的密码的前提下,为信任的用户提供系统的管理权限。
他们可以执行大部分的管理操作,但又不像 root 一样有全部的权限。
什么是 sudo?
sudo
是一个程序,普通用户可以使用它以超级用户或其他用户的身份执行命令,是由安全策略指定的。
sudo 用户的访问权限是由 /etc/sudoers
文件控制的。
sudo 用户有什么优点?
在 Linux 系统中,如果你不熟悉一个命令,sudo
是运行它的一个安全方式。
- Linux 系统在
/var/log/secure
和/var/log/auth.log
文件中保留日志,并且你可以验证 sudo 用户实施了哪些行为操作。 - 每一次它都为当前的操作提示输入密码。所以,你将会有时间去验证这个操作是不是你想要执行的。如果你发觉它是不正确的行为,你可以安全地退出而且没有执行此操作。
基于 RHEL 的系统(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL))和基于 Debian 的系统(如 Debian、Ubuntu 和 LinuxMint)在这点是不一样的。
我们将会教你如何在本文中提及的两种发行版中执行该操作。
这里有三种方法可以应用于两个发行版本。
- 增加用户到相应的组。基于 RHEL 的系统,我们需要添加用户到
wheel
组。基于 Debain 的系统,我们添加用户到sudo
或admin
组。 - 手动添加用户到
/etc/group
文件中。 - 用
visudo
命令添加用户到/etc/sudoers
文件中。
如何在 RHEL/CentOS/OEL 系统中配置 sudo 访问权限?
在基于 RHEL 的系统中(如 Redhat (RHEL)、 CentOS 和 Oracle Enterprise Linux (OEL)),使用下面的三个方法就可以做到。
方法 1:在 Linux 中如何使用 wheel 组为普通用户授予超级用户访问权限?
wheel 是基于 RHEL 的系统中的一个特殊组,它提供额外的权限,可以授权用户像超级用户一样执行受到限制的命令。
注意,应该在 /etc/sudoers
文件中激活 wheel
组来获得该访问权限。
# grep -i wheel /etc/sudoers## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
假设我们已经创建了一个用户账号来执行这些操作。在此,我将会使用 daygeek
这个用户账号。
执行下面的命令,添加用户到 wheel
组。
# usermod -aG wheel daygeek
我们可以通过下面的命令来确定这一点。
# getent group wheel
wheel:x:10:daygeek
我将要检测用户daygeek
是否可以访问属于 root 用户的文件。
$ tail -5 /var/log/secure
tail: cannot open /var/log/secure for reading: Permission denied
当我试图以普通用户身份访问/var/log/secure
文件时出现错误。 我将使用sudo
访问同一个文件,让我们看看这个魔术。
$ sudo tail -5 /var/log/secure
[sudo] password for daygeek:
Mar 17 07:01:56 CentOS7 sudo: daygeek : TTY=pts/0 ; PWD=/home/daygeek ; USER=root ; COMMAND=/bin/tail -5 /var/log/secure
Mar 17 07:01:56 CentOS7 sudo: pam_unix(sudo:session): session opened for user root by daygeek(uid=0)
Mar 17 07:01:56 CentOS7 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 07:05:10 CentOS7 sudo: daygeek : TTY=pts/0 ; PWD=/home/daygeek ; USER=root ; COMMAND=/bin/tail -5 /var/log/secure
Mar 17 07:05:10 CentOS7 sudo: pam_unix(sudo:session): session opened for user root by daygeek(uid=0)
方法 2:在 RHEL/CentOS/OEL 中如何使用 /etc/group 文件为普通用户授予超级用户访问权限?
我们可以通过编辑 /etc/group
文件来手动地添加用户到 wheel
组。
只需打开该文件,并在恰当的组后追加相应的用户就可完成这一点。
$ grep -i wheel /etc/group
wheel:x:10:daygeek,user1
在该例中,我将使用 user1
这个用户账号。
我将要通过在系统中重启 Apache httpd 服务来检查用户 user1
是不是拥有 sudo 访问权限。让我们看看这个魔术。
$ sudo systemctl restart httpd
[sudo] password for user1:$ sudo grep -i user1 /var/log/secure
[sudo] password for user1:
Mar 17 07:09:47 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart httpd
Mar 17 07:10:40 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart httpd
Mar 17 07:12:35 CentOS7 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/grep -i httpd /var/log/secure
方法 3:在 Linux 中如何使用 /etc/sudoers 文件为普通用户授予超级用户访问权限?
sudo 用户的访问权限是被 /etc/sudoers
文件控制的。因此,只需将用户添加到 sudoers
文件中 的 wheel
组下即可。
只需通过 visudo
命令将期望的用户追加到 /etc/sudoers
文件中。
# grep -i user2 /etc/sudoers
user2 ALL=(ALL) ALL
在该例中,我将使用 user2
这个用户账号。
我将要通过在系统中重启 MariaDB 服务来检查用户 user2
是不是拥有 sudo 访问权限。让我们看看这个魔术。
$ sudo systemctl restart mariadb
[sudo] password for user2:$ sudo grep -i mariadb /var/log/secure
[sudo] password for user2:
Mar 17 07:23:10 CentOS7 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/systemctl restart mariadb
Mar 17 07:26:52 CentOS7 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/grep -i mariadb /var/log/secure
在 Debian/Ubuntu 系统中如何配置 sudo 访问权限?
在基于 Debian 的系统中(如 Debian、Ubuntu 和 LinuxMint),使用下面的三个方法就可以做到。
方法 1:在 Linux 中如何使用 sudo 或 admin 组为普通用户授予超级用户访问权限?
sudo
或 admin
是基于 Debian 的系统中的特殊组,它提供额外的权限,可以授权用户像超级用户一样执行受到限制的命令。
注意,应该在 /etc/sudoers
文件中激活 sudo
或 admin
组来获得该访问权限。
# grep -i 'sudo|admin' /etc/sudoers# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
假设我们已经创建了一个用户账号来执行这些操作。在此,我将会使用 2gadmin
这个用户账号。
执行下面的命令,添加用户到 sudo
组。
# usermod -aG sudo 2gadmin
我们可以通过下面的命令来确定这一点。
# getent group sudo
sudo:x:27:2gadmin
我将要检测用户2gadmin
是否可以访问属于 root 用户的文件。
$ less /var/log/auth.log
/var/log/auth.log: Permission denied
当我试图以普通用户身份访问/var/log/auth.log
文件时出现错误。 我将要使用sudo
访问同一个文件,让我们看看这个魔术。
$ sudo tail -5 /var/log/auth.log
[sudo] password for 2gadmin:
Mar 17 20:39:47 Ubuntu18 sudo: 2gadmin : TTY=pts/0 ; PWD=/home/2gadmin ; USER=root ; COMMAND=/bin/bash
Mar 17 20:39:47 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by 2gadmin(uid=0)
Mar 17 20:40:23 Ubuntu18 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 20:40:48 Ubuntu18 sudo: 2gadmin : TTY=pts/0 ; PWD=/home/2gadmin ; USER=root ; COMMAND=/usr/bin/tail -5 /var/log/auth.log
Mar 17 20:40:48 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by 2gadmin(uid=0)
或者,我们可以通过添加用户到 admin
组来执行相同的操作。
运行下面的命令,添加用户到 admin
组。
# usermod -aG admin user1
我们可以通过下面的命令来确定这一点。
# getent group admin
admin:x:1011:user1
让我们看看输出信息。
$ sudo tail -2 /var/log/auth.log
[sudo] password for user1:
Mar 17 20:53:36 Ubuntu18 sudo: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/usr/bin/tail -2 /var/log/auth.log
Mar 17 20:53:36 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user1(uid=0)
方法 2:在 Debian/Ubuntu 中如何使用 /etc/group 文件为普通用户授予超级用户访问权限?
我们可以通过编辑 /etc/group
文件来手动地添加用户到 sudo
组或 admin
组。
只需打开该文件,并在恰当的组后追加相应的用户就可完成这一点。
$ grep -i sudo /etc/group
sudo:x:27:2gadmin,user2
在该例中,我将使用 user2
这个用户账号。
我将要通过在系统中重启 Apache httpd 服务来检查用户 user2
是不是拥有 sudo
访问权限。让我们看看这个魔术。
$ sudo systemctl restart apache2
[sudo] password for user2:$ sudo tail -f /var/log/auth.log
[sudo] password for user2:
Mar 17 21:01:04 Ubuntu18 systemd-logind[559]: New session 22 of user user2.
Mar 17 21:01:04 Ubuntu18 systemd: pam_unix(systemd-user:session): session opened for user user2 by (uid=0)
Mar 17 21:01:33 Ubuntu18 sudo: user2 : TTY=pts/0 ; PWD=/home/user2 ; USER=root ; COMMAND=/bin/systemctl restart apache2
方法 3:在 Linux 中如何使用 /etc/sudoers 文件为普通用户授予超级用户访问权限?
sudo 用户的访问权限是被 /etc/sudoers
文件控制的。因此,只需将用户添加到 sudoers
文件中的 sudo
或 admin
组下即可。
只需通过 visudo
命令将期望的用户追加到 /etc/sudoers
文件中。
# grep -i user3 /etc/sudoers
user3 ALL=(ALL:ALL) ALL
在该例中,我将使用 user3
这个用户账号。
我将要通过在系统中重启 MariaDB 服务来检查用户 user3
是不是拥有 sudo
访问权限。让我们看看这个魔术。
$ sudo systemctl restart mariadb
[sudo] password for user3:$ sudo tail -f /var/log/auth.log
[sudo] password for user3:
Mar 17 21:12:32 Ubuntu18 systemd-logind[559]: New session 24 of user user3.
Mar 17 21:12:49 Ubuntu18 sudo: user3 : TTY=pts/0 ; PWD=/home/user3 ; USER=root ; COMMAND=/bin/systemctl restart mariadb
Mar 17 21:12:49 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user3(uid=0)
Mar 17 21:12:53 Ubuntu18 sudo: pam_unix(sudo:session): session closed for user root
Mar 17 21:13:08 Ubuntu18 sudo: user3 : TTY=pts/0 ; PWD=/home/user3 ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/auth.log
Mar 17 21:13:08 Ubuntu18 sudo: pam_unix(sudo:session): session opened for user root by user3(uid=0)
centos sudo不能运行_如何在Linux中配置sudo访问权限相关推荐
- centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国
Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...
- linux如何配置网络设置_如何在Linux中配置网络
linux如何配置网络设置 将Linux计算机连接到网络非常简单,除非不是这样. 在本文中,我讨论了基于Red Hat的Linux发行版的主要网络配置文件,并介绍了两个网络启动服务:古老的网络启动和有 ...
- tightvnc 远程开机_如何在Linux中安装和访问TightVNC远程桌面?
tightvnc 远程开机 TightVNC is a very handy remote desktop application which is based on VNC protocol. Ti ...
- 如何在Linux中配置JDK环境变量
如何在Linux中配置JDK环境变量 目录 如何在Linux中配置JDK环境变量 一.下载JDK 二.配置环境变量 三.刷新配置 一.下载JDK Java Downloads | Oracle 得到安 ...
- shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?
每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...
- linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国
在向你展示如何在 Linux 中更改 Mac 地址之前,让我们首先讨论为什么要更改它.-- Dimitrios Savvopoulos 在向你展示如何在 Linux 中更改 MAC 地址之前,让我们首 ...
- linux 更改ssh端口_如何在Linux中更改SSH端口-简易指南
linux 更改ssh端口 The default port on SSH is 22. But for security reasons, it's a good idea to change SS ...
- linux更改root密码_如何在Linux中更改root密码
linux更改root密码 Let's go over the simple commands to change the root password in Linux. Linux root ref ...
- linux中更改用户密码_如何在Linux中更改用户密码
linux中更改用户密码 In this tutorial, we will focus on how you can change a user's password in Linux. We wi ...
最新文章
- Mapped Statements collection does not contain value for TaskMapper.selectByPrimaryKey
- Geotools应用简要指南
- 【鸿蒙 HarmonyOS】UI 组件 ( 单选按钮 | RadioButton 与 RadioContainer 组件 )
- BZOJ 2208[Jsoi2010]连通数
- DHCP详细配置实验总结
- linux shell之控制台打印各种颜色字体和背景
- iis5.0+php5.0+mysql5.0配置完全手册_IIS5.0+PHP5.0+MySQL5.0配置完全手册
- Java开发人员常用网站收录
- linux命令stat,查看文件详细信息
- 系统修复对电脑的影响有哪些
- 【java笔记】scanner类和匿名对象的使用
- 苹果电脑有哪些很优秀的录屏软件呢?
- java网上书店系统_基于Java的网上书店管理系统
- 证件照尺寸及背景颜色值
- 【数据集链接已添加】注塑成型工艺的虚拟量测和调机优化_第四届工业大数据竞赛题目发布
- containers详解
- 我不相信长夜将至,因为火把就在自己手中。
- Process用法与进程详解
- 怡和嘉业在创业板上市:总市值约186亿元,前三季度业绩同比翻倍
- CI130X智能语音芯片应用于空气炸锅,可实现离线语音控制空气炸锅,高抗噪高识别率
热门文章
- Mysql执行计划含义,mysql执行计划介绍
- java值传递string_关于java:按值传递(StringBuilder与String)
- mix2s 升级android p,小米推送小米MIX2S 安卓P稳定版更新 这两个隐藏升级你发现了吗?...
- PostgreSQL 插入、删除、更新、事务
- Java反射 Constructor类
- Java 作用域修饰符
- python xgboost实战_史上最详细的XGBoost实战
- 江苏计算机一级怎么自学,江苏计算机一级自学教程推荐:计算机基础及MS Office应用上机指导(2018年版)...
- Oracle 数据怎么实时同步到 MongoDB | 亲测干货分享建议收藏
- 基于Java SSM springboot+VUE+redis实现的前后端分类版网上商城项目