📁
Debian 快速入门攻略
  • 本书简介
  • Debian 简介
  • 与 Redhat 系的主要区别
  • 安装
  • 基础配置
    • 网络
    • 本地用户
    • 时间同步
    • sudo
    • 挂载点
  • 软件包
    • 二进制包 deb
    • 包管理工具 dpkg
    • APT
  • Systemd
    • Unit (单元)
    • Target (目标)
    • Timers ( 计划任务 )
    • Journal ( 日志 )
  • 远程登录 SSH
    • 基本使用
    • 修改配置
    • 秘钥登录
  • 防火墙与安全
    • iptables
    • The New nftables
    • 证书验证与 OpenSSL
  • 网络与网络服务
    • 网络工具组 iproute2
    • 虚拟专用网络
    • DHCP
    • Domain Name Service (DNS)
    • 邮件服务器
      • Postfix
      • Dovecot
    • Web Server (HTTP)
    • FTP Server
    • NFS Server
    • SMB Server With Samba
    • HTTP/FTP Proxy
    • LDAP Directory
  • 磁盘管理
    • RAID
    • LVM
    • autofs
  • X11
  • 实验案例与题解
    • 题目与题解
  • 额外的话:展望未来
  • 总结
由 GitBook 提供支持
在本页
  • 安装 sudo
  • 配置 sudo
  • 常见问题
  • 执行 visudo 提示 command not found
  • 禁用 root 用户

这有帮助吗?

  1. 基础配置

sudo

在 Linux 中,许多操作需要我们通过 root 账户权限完成,但我们通常不想开放这个账户,也不希望经常切换用户,因此就有了 sudo 命令,他提供我们当需要 root 权限时,将权限临时提升为 root 执行当前命令来保障权限安全。

在本章节配置好 sudo 之后,本书的其他所有操作都将使用普通用户完成。

安装 sudo

首先安装 sudo 软件包:

$ apt-get install sudo

接下来最简单的操作方法是将允许使用 sudo 命令的用户加入 sudo 组:

$ usermod debian -aG sudo
$ id debian
uid=1000(debian) gid=1000(debian) groups=1000(debian),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)

接下来切换回 debian 用户,尝试使用需要管理员权限的命令,并在前面加上 sudo

root@debian:~# su - debian
debian@debian:~$ apt update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
debian@debian:~$ sudo apt update

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for debian:
Get:1 http://ftp.debian.org/debian buster-backports InRelease [46.7 kB]
Hit:2 http://deb.debian.org/debian stable InRelease
Get:3 http://deb.debian.org/debian stable-updates InRelease [51.9 kB]
Get:4 http://ftp.debian.org/debian buster-backports/main Sources.diff/Index [27.8 kB]
Hit:5 http://deb.debian.org/debian-security stable/updates InRelease
Get:6 http://ftp.debian.org/debian buster-backports/main Sources 2021-01-12-1400.20.pdiff [1,057 B]
Get:6 http://ftp.debian.org/debian buster-backports/main Sources 2021-01-12-1400.20.pdiff [1,057 B]
Fetched 127 kB in 2s (76.4 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
16 packages can be upgraded. Run 'apt list --upgradable' to see them.

提示输入密码时,输入当前用户 ( debian ) 的密码。

配置 sudo

sudo 的配置可以使用 sudo -ll 查看,使用 sudo -lU 查看特定用户的配置

debian@debian:~$ sudo -ll
Matching Defaults entries for debian on debian:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User debian may run the following commands on debian:

Sudoers entry:
    RunAsUsers: ALL
    RunAsGroups: ALL
    Commands:
        ALL
debian@debian:~$ sudo -lU debian
Matching Defaults entries for debian on debian:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User debian may run the following commands on debian:
    (ALL : ALL) ALL

sudo 的配置文件为 /etc/sudoers,但一旦文件内部出现问题会导致 sudo 无法运行,如此时无法使用 root 账户则会发生很严重的事故,因此修改配置文件须使用 visudo 命令。

visudo 会在一个临时文件里修改 /etc/sudoers 文件,并检查语法无误后再写入 /etc/sudoers

执行:

$ sudo visudo

在 Debian 中,visudo 会默认调用 nano 编辑器,如要使用 vim,可在 /etc/sudoers 中指定:

# Set default EDITOR to vim, and do not allow visudo to use EDITOR/VISUAL.
Defaults      editor=/usr/bin/vim, !env_editor

为某个用户可以执行所有命令,在配置文件中加入:

用户名 ALL=(ALL) ALL

允许以某个主机名登录用户执行命令:

用户名 主机名=(ALL) ALL

允许wheel用户组成员无密码使用sudo:

%wheel ALL=(ALL) NOPASSWD: ALL

要不询问某个用户的密码:

Defaults:USER_NAME !authenticate

只为用户启用部分命令的执行权限:

用户名 主机名=/sbin/halt,/sbin/poweroff,/sbin/reboot,/usr/bin/apt

常见问题

执行 visudo 提示 command not found

由于非 root 账户的 $PATH 环境变量默认没有 /sbin 与 /usr/sbin 目录,因此无法直接执行 sbin 目录下的文件。

默认情况下,在 Debian 中,/etc/sudoers 指定了使用 sudo 执行命令时 $PATH 环境变量会产生变化,这个变化的环境变量会加入一系列 sbin 目录。

因此请使用 sudo visudo

对其他类似的情况 ( 如 执行 usermod 一类的命令 ) 也同理。

禁用 root 用户

在配置好 sudo 后,可以选择禁用 root 用户,执行:

$ sudo passwd -l root

如需解锁,执行 sudo passwd -l root

或者编辑 /etc/shadow 文件,将 root 的加密口令替换为 !

这样再次启用 root 账户时,重新设定密码即可:

$ sudo passwd root
上一页时间同步下一页挂载点

最后更新于4年前

这有帮助吗?