macOS如何sudo免输入密码

每次使用 sudo 时都要输入密码,太过繁琐。想能像在 Linux 中一样,配置下 /etc/sudoers 文件就能免输入密码,可以一劳永逸。操作先给/etc/sudoers文件加修改权限 sudo chmod u+w /etc/sudoers修改配置 sudo vim /etc/sudoers中

每次使用 sudo 时都要输入密码,太过繁琐。想能像在 Linux 中一样,配置下 /etc/sudoers 文件就能免输入密码,可以一劳永逸。

操作

先给/etc/sudoers文件加修改权限 sudo chmod u+w /etc/sudoers

修改配置 sudo vim /etc/sudoers中的 %admin 行,如下:

# root and users in group wheel can run anything on any machine as any user
root        ALL = (ALL) ALL
%admin        ALL = (ALL) NOPASSWD:ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d

修改完成后,将文件的权限恢复回去  sudo chmod u-w /etc/sudoers

至此,就可以愉快的输入 sudo 了。

插曲

macOS管理员用户无法使用sudo命令该如何解决?

一开始 %admin 那行的配置写错了,导致当前管理员用户不能使用 sudo 了!当时想了几种解决方法:

❌ 新建管理员用户,以新用户登陆进去尝试修正/etc/sudoers文件。

后面发现管理员用户也属于 admin 组,所以现在只有 root 用户能修改此文件。

❌ 使用 su 切换到 root 用户。

由于之前没有设置过 root 密码,所以不知道 root 密码,切换不了 root 用户。

❌ 进入某个能挂载 APFS 文件系统的外挂系统中,挂载整个 macOS 的系统磁盘,然后修改 /etc/sudoers 文件。但是没想到有手头设备能做到。

进 Mac 的 Recovery,然后直接改 /etc/sudoers 文件

果然修改这种本来不让修改的文件,确实可能会遇到预期之外的问题,挺有意思的。

Read more

容器镜像(4):镜像的常用工具箱

容器镜像(4):镜像的常用工具箱

前几篇在讲多架构镜像时已经用过 skopeo 和 crane 做镜像复制,这篇系统整理这两个工具的完整能力,同时介绍几个日常操作镜像时同样好用的工具。 一、skopeo:不依赖 Daemon 的镜像瑞士军刀 skopeo 的核心价值是绕过 Docker daemon,直接与 Registry API 交互。上一篇用它做镜像复制和离线传输,但它的能力远不止于此。 1.1 安装 # Ubuntu / Debian sudo apt install -y skopeo skopeo --version # skopeo version 1.15.1 1.2 inspect:免拉取检查镜像元数据 docker inspect 需要先把镜像拉到本地,skopeo inspect 直接向 Registry

容器镜像(3):多架构镜像构建

容器镜像(3):多架构镜像构建

一、什么是多架构镜像 1.1 OCI Image Index 上一篇介绍了单平台镜像的结构:一个 Manifest 指向 Config 和若干 Layer blob。多架构镜像在此之上多了一层——OCI Image Index(也叫 Manifest List),是一个轻量的索引文件,把多个单平台 Manifest 组织在一起: $ docker manifest inspect golang:1.22-alpine { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests&

容器镜像(2):containerd 视角下的镜像

容器镜像(2):containerd 视角下的镜像

一、为什么需要了解 containerd 如果你只用 docker run 跑容器,从来不关心底层,那可以不了解 containerd。但如果你在用 Kubernetes,或者想真正理解"容器运行时"是什么,containerd 是绕不开的。 事实上,当你执行 docker run 的时候,containerd 早就在后台悄悄工作了——Docker 从 1.11 版本开始,就把核心运行时剥离出来交给 containerd 负责。 1.1 Docker 的架构演变 早期的 Docker(1.10 及之前)是一个"大一统"的单体程序:一个 dockerd