0
点赞
收藏
分享

微信扫一扫

Linux sudo权限

幺幺零 2023-10-10 阅读 35

sudo权限的配置

sudo(superuser do)是 Linux 系统中一种很常用的权限管理机制,允许非 root 用户以特定的身份执行特定的命令。sudo 命令通过 /etc/sudoers 配置文件实现。

编辑 sudo 权限命令

在终端输入以下命令进入 sudo 配置文件:

sudo visudo

注:不要直接编辑 /etc/sudoers 文件,因为这可能导致配置文件错误,从而无法使用 sudo 命令。

/etc/sudoers 配置文件说明

sudoers 文件包含 sudo 命令所需的所有配置信息。默认情况下,sudoers 文件只能由 root 用户编辑并修改。sudoers 文件的默认位置是 /etc/sudoers。

# User privilege specification
username host = (runas) command

# User alias specification
User_Alias ALIAS_NAME = username1, username2, ...

# Runas alias specification
Runas_Alias ALIAS_NAME = user1, user2, ...

# Host alias specification
Host_Alias ALIAS_NAME = host1, host2, ...

# Command alias specification
Cmnd_Alias ALIAS_NAME = /bin/command1, /bin/command2, ...

参数解释

  • username:表示用户名。
  • host:表示主机名或 IP 地址。
  • runas:表示以哪个用户的身份运行命令,默认为 root。
  • command:表示可执行的命令或命令序列。

用户配置sudo权限1

your_user_name ALL=(ALL)   ALL

默认5分钟后刚才输入的sodo密码过期,下次sudo需要重新输入密码,如果觉得在sudo的时候输入密码麻烦,把刚才的输入换成如下内容即可:

your_user_name ALL=(ALL) NOPASSWD: ALL

用户配置sudo权限1

将用户添加进sudo组

root@myths-X450LD:/home# usermod -G sudo test

用户组配置 sudo 权限

默认情况下,sudo 只能给单个用户授权,但也可以为用户组或别名授权。具体操作如下:

  1. 添加一个用户组

sudo groupadd sudoers

  1. 将用户添加到该用户组中

sudo usermod -aG sudoers username

  1. 修改 sudoers 配置文件

编辑 sudoers 文件,在文件末尾添加以下内容:

%sudoers ALL=(ALL) ALL

注意:如果要为用户组授权,请在前面加上 %。

注意事项

在修改 sudoers 文件之前,最好备份原文件以便出现问题时进行恢复。

sudo 命令可能带来安全风险,因此要谨慎使用。

sudoers 文件中的语法必须正确,否则会导致 sudo 命令无法正常工作。

sudoers 文件必须具有正确的权限和所有者,通常为 root 用户。

sudoers 文件不支持匹配通配符,所以必须确切地指定主机和命令。

sudo 权限是 Linux 系统管理中重要的一部分,通过合理的配置,可以使系统更加安全和高效。在使用 sudo 命令时,应该总是遵循最佳实践,以避免任何潜在的安全风险。

sudo命令

sudo 命令是 Linux 系统中一个重要的命令,它允许非 root 用户以特定的身份执行特定的命令。在实际使用过程中,如果没有正确地配置 sudo 权限,则可能会导致系统安全问题。

在 Linux 中,使用 sudo 命令可以让普通用户以 root 用户的身份执行该命令。这种方法更加安全,因为只有特定的命令才能以 root 权限执行。

sudo 命令的基本语法如下:

sudo [options] command

  1. sudo su

sudo su 命令可以切换到 root 用户。这个命令基本上等同于输入 su 命令并输入 root 用户的密码。

sudo su

  1. sudo -s

sudo -s <shell> 命令可以以 root 用户的身份切换到 shell,其中 <shell> 是您想要使用的 shell。

sudo -s /bin/bash

  1. sudo -l

sudo -l 命令可以列出当前用户可用的 sudo 权限。

sudo -l

sudo -i,加载用户变量,并跳转到目标用户home目录;

sudo -s,不加载用户变量,不跳转目录;


sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。


su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。

sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。 要求执行该命令的用户必须在sudoers中才可以


sudo -i 直接运行sudo命令加-i参数 要求执行该命令的用户必须在sudoers中才可以

sudo su 运行sudo命令给su命令提权,运行su命令。 要求执行该命令的用户必须在sudoers中才可以

sudo -i 运行结果 PWD=/root

sudo su 运行结果 PWD=/home/用户名(当前用户主目录)

sudo权限的应用

授权普通用户可以重启服务器

username ALL=NOPASSWD: /sbin/reboot

其中,username为普通用户的用户名,/sbin/reboot为需要授权的命令。NOPASSWD表示该用户可以在执行命令时不需要输入密码。

授权普通用户可以添加其他用户

username ALL=NOPASSWD: /usr/sbin/useradd

其中,username为普通用户的用户名,/usr/sbin/useradd为需要授权的命令。NOPASSWD表示该用户可以在执行命令时不需要输入密码。

在特定时间段内允许sudo权限

username ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/sbin/useradd, /bin/su
Runas_Alias       OP = operator, maintainer
Cmnd_Alias        ADMIN_CMD = /etc/init.d/network restart, /etc/init.d/httpd start, /etc/init.d/httpd stop, /etc/init.d/httpd reload, /etc/init.d/sshd restart
OP ALL=(root) ADMIN_CMD, NOPASSWD: /usr/bin/mysqld_safe

上述配置文件允许用户在每周二的22点至23点之间运行sudo命令,可以添加以下这行代码实现:

Defaults:jimmy !authenticate from=2200 to=2300

其中jimmy为普通用户的用户名,!authenticate表示该用户无需输入密码即可使用sudo命令,from和to则表示时间段。

记录sudo命令的使用

Defaults logfile=/var/log/sudo.log

让sudo命令支持shell脚本

Defaults env_reset, env_keep += "BASH_ENV"

在sudo命令后加上以下参数:

sudo -E <shell_script>

其中-E用于保留当前用户的环境变量,使shell脚本能够正常执行。

visudo命令

visudo命令的使用语法如下:

visudo [options]

options为可选参数

选项

作用

-c

检查sudoers文件语法错误

-f

指定要编辑的sudoers文件,默认为/etc/sudoers

-q

在检查sudoers文件时,只输出错误信息而不进行其他操作

-s

指定编辑的sudoers文件为模拟模式,不会真正写入sudoers文件中

sudo权限授权

方法

区别

user

将授权信息添加到指定用户的权限列表中

ALL

将授权信息添加到所有用户或组的权限列表中

NOPASSD

授权用户在执行该命令时无需输入密码

PASSWD

授权用户在执行该命令时需要输入密码

/path/ 或 /file

授权用户可以执行的命令路径或文件路径,必须使用完整的路径

#

注释符号,后面的内容将被视为注释,不起实际作用

Defaults

设置sudo的默认配置信息,包括日志路径、运行超时时间等

举报

相关推荐

0 条评论