当前位置:   article > 正文

Linux sudo与/etc/sudoers_linux 件/etc/sudoers

linux 件/etc/sudoers

sudo介绍

  1. sudo命令可以让普通用户在执行需要超级用户权限的命令时,临时提升为超级用户。例如,普通用户可以使用sudo执行系统管理任务,如安装软件、修改系统配置等。
  2. 访问控制:sudo命令通过sudoers文件中的配置,可以对用户和用户组进行细粒度的访问控制。管理员可以指定哪些用户可以使用sudo以及可以执行哪些命令。
  3. 审计和日志记录:sudo命令可以记录用户执行的每个sudo命令,包括命令的时间、执行者和执行的命令本身。这对于安全审计和故障排除非常有用。
  4. 环境变量控制:sudo命令可以通过Defaults行中的配置,控制sudo命令执行时的环境变量。这有助于确保以root权限执行命令时,环境变量不会被滥用或篡改。
  5. 密码验证:sudo命令通常需要用户输入自己的密码来验证身份。这增加了安全性,确保只有授权的用户可以执行特权命令。
  1. sudo apt install net-tools
  2. sudo dmesg
  3. sudo lshw

/etc/sudoers文件介绍

  1. root@bsp-PowerEdge-R6525:~# cat /etc/sudoers
  2. #
  3. # This file MUST be edited with the 'visudo' command as root.
  4. #
  5. # Please consider adding local content in /etc/sudoers.d/ instead of
  6. # directly modifying this file.
  7. #
  8. # See the man page for details on how to write a sudoers file.
  9. #
  10. Defaults env_reset
  11. Defaults mail_badpass
  12. Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
  13. # Host alias specification
  14. # User alias specification
  15. # Cmnd alias specification
  16. # User privilege specification
  17. root ALL=(ALL:ALL) ALL
  18. # Members of the admin group may gain root privileges
  19. %admin ALL=(ALL) ALL
  20. # Allow members of group sudo to execute any command
  21. %sudo ALL=(ALL:ALL) ALL
  22. # See sudoers(5) for more information on "#include" directives:
  23. #includedir /etc/sudoers.d

  1. Defaults env_reset: 这个行指定了默认的环境变量重置规则,当用户使用sudo命令时,环境变量将被重置为默认值。
  2. Defaults mail_badpass: 这个行指定了当用户输入错误密码时,系统会发送邮件通知。
  3. Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin": 这个行指定了sudo命令的安全路径,即sudo命令可以在这些路径下执行。
  4. root ALL=(ALL:ALL) ALL: 这个行指定了用户root可以在任何主机上以任何用户身份执行任何命令。
  5. %admin ALL=(ALL) ALL: 这个行指定了admin组的成员可以在任何主机上以任何用户身份执行任何命令。
  6. %sudo ALL=(ALL:ALL) ALL: 这个行指定了sudo组的成员可以在任何主机上以任何用户身份执行任何命令。
  7. #includedir /etc/sudoers.d: 这个行是一个注释,指示可以使用#include指令来包含其他sudoers文件的路径。在这个例子中,它指定了/etc/sudoers.d目录下的文件将被包含进来。

visudo修改/etc/sudoers文件

如何给用户添加sudo权限

  1. 修改/etc/sudoers
  2. 在下面添加
  3. # User privilege specification
  4. root ALL=(ALL:ALL) ALL
  5. +++
  6. arron ALL=(ALL:ALL) ALL
  7. arron ALL=(ALL:ALL) ALL: 这个行指定了用户arron可以在任何主机上以任何用户身份执行任何命令。

添加输出密码提示

  1. 修改/etc/sudoers
  2. +++
  3. Defaults badpass_message="Password is wrong, please try again"

添加重试次数

  1. 修改/etc/sudoers
  2. +++
  3. Defaults passwd_tries=5

sudo生效持续时间(默认5分钟)

timestamp_timeout Number of minutes that can elapse before sudo will ask for a passwd again. The timeout may include a fractional component if minute granularity is insufficient, for example 2.5. The default is 15. Set this to 0 to always prompt for a password. If set to a value less than 0 the user's time stamp will not expire until the system is rebooted. This can be used to allow users to create or delete their own time stamps via “sudo -v” and “sudo -k” respectively.

  1. 修改/etc/sudoers
  2. +++
  3. Defaults timestamp_timeout =10

等待用户输入时间

passwd_timeout Number of minutes before the sudo password prompt times out, or 0 for no timeout. The timeout may include a fractional component if minute granularity is insufficient, for example 2.5. The default is 0.

  1. 修改/etc/sudoers
  2. +++
  3. Defaults passwd_timeout=2

sudo log设置

Logging

sudoers can log both successful and unsuccessful attempts (as well as errors) to syslog(3), a log file, or both. By

default, sudoers will log via syslog(3) but this is changeable via the syslog and logfile Defaults settings. See LOG

FORMAT for a description of the log file format.

Defaults@SERVERS log_year, logfile=/var/log/sudo.log

  1. 修改/etc/rsyslog.conf文件
  2. +++
  3. local2.debug /var/log/sudo.log
  4. 修改/etc/sudoers
  5. +++
  6. Defaults logfile=/var/log/sudo.log
  7. Defaults loglinelen=0
  8. Defaults !syslog
  9. 创建日志文件
  10. touch /var/log/sudo.log
  11. systemctl restart rsyslog

su介绍

su命令是在Unix和类Unix系统上使用的命令,用于切换用户身份。下面是su命令的一些常见用法和功能:

1. 切换用户:su命令可以让当前用户切换到另一个用户的身份,例如从普通用户切换到root用户。默认情况下,su命令会切换到root用户,但也可以指定其他用户。

2. 执行命令:su命令可以在切换用户后,直接执行命令。例如,可以使用su命令切换到root用户,然后执行需要root权限的命令。

3. 环境变量:su命令可以在切换用户时,保留原用户的环境变量。这对于需要在新用户身份下执行命令,但需要使用原用户的环境变量的情况非常有用。

4. 密码验证:su命令通常需要用户输入目标用户的密码来验证身份。这增加了安全性,确保只有授权的用户可以切换到目标用户的身份。

su命令用法:

1. 切换到root用户:

```

su

```

执行上述命令后,系统会提示输入root用户的密码。输入密码后,即可切换到root用户身份。

2. 切换到其他用户:

```

su username

```

执行上述命令后,系统会提示输入目标用户的密码。输入密码后,即可切换到目标用户身份。

3. 切换并执行命令:

```

su -c "command"

```

执行上述命令后,系统会提示输入root用户的密码。输入密码后,系统会以root用户身份执行指定的命令。

4. 切换并保留原用户的环境变量:

```

su -m username

```

执行上述命令后,系统会提示输入目标用户的密码。输入密码后,系统会切换到目标用户身份,并保留原用户的环境变量。

5. 切换并指定shell:

```

su -s /bin/bash username

```

执行上述命令后,系统会提示输入目标用户的密码。输入密码后,系统会切换到目标用户身份,并使用/bin/bash作为shell。

  1. root@admin:/home# adduser arron-build
  2. Adding user `arron-build' ...
  3. Adding new group `arron-build' (1010) ...
  4. Adding new user `arron-build' (1010) with group `arron-build' ...
  5. Creating home directory `/home/arron-build' ...
  6. Copying files from `/etc/skel' ...
  7. New password:
  8. Retype new password:
  9. passwd: password updated successfully
  10. Changing the user information for arron-build
  11. Enter the new value, or press ENTER for the default
  12. Full Name []:
  13. Room Number []:
  14. Work Phone []:
  15. Home Phone []:
  16. Other []:
  17. Is the information correct? [Y/n]
  18. root@admin:/home#
  19. root@admin:/home#
  20. root@admin:/home#
  21. root@admin:/home#
  22. root@admin:/home# visudo
  23. root@admin:/home#
  24. root@admin:/home# su arron-build
  25. arron-build@admin:/home$

su和sudo区别

1. su命令需要目标用户的密码,而sudo命令需要当前用户的密码。使用su命令切换到目标用户身份时,需要输入目标用户的密码。而使用sudo命令执行需要root权限的命令时,需要输入当前用户的密码。

2. su命令切换到目标用户身份后,会保留原用户的环境变量。而sudo命令执行命令时,默认情况下会清除原用户的环境变量,只保留少量的安全环境变量。

3. su命令切换到目标用户身份后,会一直保持该身份,直到使用exit命令退出。而sudo命令执行完命令后,会自动返回原用户身份。

4. su命令需要使用root用户或具有sudo权限的用户才能使用。而sudo命令只需要当前用户具有sudo权限即可使用。

总的来说,sudo命令更加灵活和安全,因为它只需要输入当前用户的密码,而且执行命令时会清除大部分环境变量,从而减少了潜在的安全风险。但是,在需要长时间使用root权限的情况下,su命令更加方便,因为它可以一直保持目标用户身份,而不需要反复输入密码。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号