【Linux】让渡用户权限(/etc/sudoers)

摘要

本文将讨论如何在 Linux 中让渡根用户的部分权限给其它普通用户。

引言

我们知道 Linux 的上帝只有也只能有一个,就是根用户 root,作为掌握根用户的系统管理员,理论上最好也只有一个。但在很多情况下,如多人共管主机,某些用户请求执行某些需要根用户权限的命令,或者系统管理员忙不过来的时候,就需要共享部分根用户权限给其他人了。

将系统根用户密码告诉很多人,从安全角度考虑显然不是一个好的选择,这往往会成为灾难事件的开端。那么应该如何做呢?

sudo 命令给我们提供了一个不需要根用户密码,也能执行根用户权限命令的途径。通过 sudo 命令,我们可以分配给普通用户一些合理的权限,让他们执行一些只有根用户,或其它特定用户才能完成的任务。比如,运行一些像 reboot、shutdown 之类的系统命令,或者编辑系统配置文件。这样,不仅减少了根用户登录次数和管理时间,也提高了系统的安全性。

用法

一开始系统默认仅有 root 可以执行 suto 命令,通过修改 /etc/sudoers 文件可以让别的用户也能执行 sudo 命令。注意,该文件也只有 root 用户可以修改。

使用 cat /etc/sudoers 查看该文件,可以发现其中有这行 root ALL=(ALL) ALL,其标准格式如下:

授权用户/组 主机=[(允许切换到哪些用户或组)] [是否需要输入密码] 命令1,命令2,...

  • 第一字段:代表了可使用 sudo 命令的用户或用户组。如果是用户组,前面需要加一个 %。这里是 root 表示允许 root 用户使用 sudo 命令。
  • 第二字段:表示登录用户的来源主机名。ALL 表示允许用户在任意主机上登录并执行 sudo 命令。
  • 第三字段:如果省略, 相当于 (root:root),表示可以通过sudo 提权到 root;如果为 (ALL) 或者 (ALL:ALL),表示能够提权到 (任意用户:任意用户组)注意:如果没省略,必须使用 ( ) 包含起来。
  • 第四字段:可选项是 NOPASSWD:,表示执行 sudo 时不需要提供密码。
  • 第五字段:用户可使用的命令列表。如果有多个请使用逗号分隔,命令必须使用绝对路径。ALL 表示允许所有命令。

如果在 /etc/sudoers 中增加一行 stus ALL=(ALL) ALL,表示 stus 用户可以在任何地方登录,以任意用户身份执行任何命令。

[root@centos]# chmod 640 /etc/sudoers # 增加写权限
[root@centos]# vi /etc/sudoers # 添加一行 stus ALL=(ALL) ALL 并保存退出

接下来,我们就是可以使用 stus 用户来执行一些只有 root 用户才有权限执行的命令,比如查看 /etc/sudoers 文件:

[stus@centos]$ sudo -u root cat /etc/sudoers

随便一提,使用 sudo 命令以 root 身份执行命令的时候可以省略 -u 选项,命令是默认转换为 root 身份执行。

提示

还需注意,stus ALL=(ALL) ALL 相当于给了 stus 用户等同于 root 的权限,除非我们完全信任 stus,否则最好不要这样做。例如,如果只给了 stus 用户关机的权限,且只能在名为 centos 的主机(即本地主机)上才能执行,可以在 /etc/sudoers 中添加一行:stus centos=(root) /sbin/shutdown -h 5

参考

中国大学 MOOC | Linux 系统管理 | 主题 06 管好用户 | 小节 6 让渡用户权限

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这些命令用于查看和检查系统的配置和日志文件。以下是每个命令的简要说明: 1. `cat /etc/pam.d/system-auth`: 显示 `/etc/pam.d/system-auth` 文件的内容,该文件用于管理系统级身份验证和授权。 2. `cat /etc/pam.d/sshd`: 显示 `/etc/pam.d/sshd` 文件的内容,该文件用于管理 SSH 服务的身份验证和授权。 3. `cat /etc/profile`: 显示 `/etc/profile` 文件的内容,该文件是一个全局配置文件,用于设置用户环境变量和执行系统级别的脚本。 4. `cat /etc/passwd`: 显示 `/etc/passwd` 文件的内容,该文件包含了系统中所有用户的基本信息,但不包含密码。 5. `cat /etc/shadow`: 显示 `/etc/shadow` 文件的内容,该文件包含了系统中用户的加密密码。 6. `cat /etc/group`: 显示 `/etc/group` 文件的内容,该文件包含了系统中用户组的信息。 7. `cat /etc/hosts.equiv`: 显示 `/etc/hosts.equiv` 文件的内容,该文件用于定义可信任主机列表,允许这些主机使用 rsh 或 rlogin 进行远程登录。 8. `cat /etc/hosts.rhosts`: 显示 `/etc/hosts.rhosts` 文件的内容,该文件用于定义远程主机和用户之间的信任关系。 9. `ps aux | grep telnet`: 列出所有正在运行的进程,并过滤出包含 "telnet" 关键字的进程。 10. `ps aux | grep rlogin`: 列出所有正在运行的进程,并过滤出包含 "rlogin" 关键字的进程。 11. `ps aux | grep ftp`: 列出所有正在运行的进程,并过滤出包含 "ftp" 关键字的进程。 12. `cat /etc/ssh/sshd_config`: 显示 `/etc/ssh/sshd_config` 文件的内容,该文件包含了 SSH 服务器的配置选项。 13. `umask`: 显示当前用户的默认文件权限掩码。 14. `ls -l /etc/passwd`: 显示 `/etc/passwd` 文件的详细信息,包括权限、所有者和修改时间等。 15. `ls -l /etc/group`: 显示 `/etc/group` 文件的详细信息,包括权限、所有者和修改时间等。 16. `ls -l /etc/shadow`: 显示 `/etc/shadow` 文件的详细信息,包括权限、所有者和修改时间等。 17. `ls -l /etc/xinetd.conf`: 显示 `/etc/xinetd.conf` 文件的详细信息,该文件是 xinetd 服务的配置文件。 18. `ls -l /etc/sudoers`: 显示 `/etc/sudoers` 文件的详细信息,该文件用于配置 sudo 命令的权限。 19. `ls -l /etc/httpd.conf`: 显示 `/etc/httpd.conf` 或 `/etc/apache2/apache2.conf` 文件的详细信息,这些文件是 Apache HTTP 服务器的配置文件。 20. `ls -l /etc/httpd-mpm.conf`: 显示 `/etc/httpd-mpm.conf` 文件的详细信息,该文件定义了 Apache MPM(多处理模块)的配置选项。 21. `ls -l /etc/conf/tomcat-users.xml`: 显示 `/etc/conf/tomcat-users.xml` 文件的详细信息,该文件包含了 Tomcat 服务器的用户配置。 22. `ls -l /etc/conf/web.xml`: 显示 `/etc/conf/web.xml` 文件的详细信息,该文件是 Java Web 应用程序的配置文件。 23. `ls -l /etc/conf/server.xml`: 显示 `/etc/conf/server.xml` 文件的详细信息,该文件是 Tomcat 服务器的主配置文件。 24. `ls -l /etc/my.cnf`: 显示 `/etc/my.cnf` 或 `/etc/mysql/my.cnf` 文件的详细信息,这些文件是 MySQL 数据库服务器的配置文件。 25. `ls -l /var/mysqllog/logbin.log`: 显示 `/var/mysqllog/logbin.log` 文件的详细信息,该文件是 MySQL 数据库二进制日志的位置。 26. `ps aux | grep syslogd`: 列出所有正在运行的进程,并过滤出包含 "syslogd" 关键字的进程。 27. `ps aux | grep rsyslogd`: 列出所有正在运行的进程,并过滤出包含 "rsyslogd" 关键字的进程。 28. `service syslog status`: 显示 syslog 服务的状态。 29. `service rsyslog status`: 显示 rsyslog 服务的状态。 30. `ps aux | grep audit`: 列出所有正在运行的进程,并过滤出包含 "audit" 关键字的进程。 31. `service auditd status`: 显示 auditd 服务的状态。 32. `ps aux | grep ssh`: 列出所有正在运行的进程,并过滤出包含 "ssh" 关键字的进程。 33. `ls -l /var/log/messages`: 显示 `/var/log/messages` 文件的详细信息,该文件包含了系统的一般日志消息。 34. `ls -l /var/log/secure`: 显示 `/var/log/secure` 文件的详细信息,该文件包含了安全相关的日志消息。 35. `ls -l /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的详细信息,该文件包含了审计日志。 36. `tail -20 /var/log/messages`: 显示 `/var/log/messages` 文件的尾部 20 行内容。 37. `tail -20 /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的尾部 20 行内容。 38. `tail -n 20 /var/log/messages`: 显示 `/var/log/messages` 文件的尾部 20 行内容。 39. `tail -n 20 /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的尾部 20 行内容。 40. `cat /etc/logrotate.conf`: 显示 `/etc/logrotate.conf` 文件的内容,该文件用于配置日志文件的轮转。 41. `cat /etc/rsyslog.conf`: 显示 `/etc/rsyslog.conf` 文件的内容,该文件是 rsyslog 服务的配置文件。 42. `auditctl -s`: 显示当前系统上启用的审计规则。 43. `auditctl -l`: 列出当前系统上的所有审计规则。 44. `lsof -i:21`: 列出所有正在使用端口 21(FTP)的进程和文件。 45. `lsof -i:22`: 列出所有正在使用端口 22(SSH)的进程和文件。 46. `lsof -i:23`: 列出所有正在使用端口 23(Telnet)的进程和文件。 请注意,某些命令可能需要管理员权限才能运行,且需要小心处理敏感信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值