Sửa lỗi EACCES: permission denied Khi Cài Extension VS Code

beginner💻 VS Code2026-03-18| VS Code trên Linux / macOS — mọi phiên bản

Error Message

EACCES: permission denied
#vscode#permission#eacces#extension

Lỗi Gặp Phải

Bạn thử cài một extension từ VS Code Marketplace và gặp thông báo kiểu như này:

EACCES: permission denied, mkdir '/home/youruser/.vscode/extensions/...'

Hoặc nút Install trong panel Extensions xoay vài giây rồi hiện thông báo lỗi màu đỏ. Mở panel Output lên và bạn sẽ thấy thông báo đầy đủ:

EACCES: permission denied

VS Code không thể ghi vào thư mục extensions. Quá trình cài đặt thất bại — đôi khi không có thông báo gì, đôi khi hiện cái lỗi khó hiểu đó.

Nguyên Nhân

VS Code lưu extensions trong ~/.vscode/extensions trên Linux và macOS. Khi gặp lỗi này, hầu như luôn là một trong hai nguyên nhân sau:

  • Thư mục ~/.vscode đang được sở hữu bởi root — thường xảy ra vì ai đó đã chạy VS Code với sudo vào một lúc nào đó.
  • Quyền truy cập thư mục quá hạn chế, khóa cả tài khoản người dùng của bạn.

Vấn đề ở chỗ: chỉ cần chạy sudo code . một lần là đủ để đổi quyền sở hữu ~/.vscode sang root. Sau đó, mọi lần cài extension đều thất bại cho đến khi bạn sửa lại.

Cách Sửa Từng Bước

Bước 1 — Kiểm Tra Ai Đang Sở Hữu Thư Mục Extensions

Mở terminal và chạy lệnh:

ls -la ~/.vscode/

Nhìn vào cột owner. Nếu hiển thị root thay vì tên người dùng của bạn, đó chính là vấn đề:

drwx------ 3 root root 4096 Mar 18 10:00 extensions

Bước 2 — Sửa Quyền Sở Hữu

Lấy lại thư mục bằng cách đặt lại quyền sở hữu về tài khoản của bạn:

sudo chown -R $USER:$USER ~/.vscode

Flag -R áp dụng đệ quy — sửa cả ~/.vscode lẫn mọi file và thư mục bên trong. $USER tự động mở rộng thành tên người dùng hiện tại, nên bạn không cần gõ thủ công.

Bước 3 — Sửa Quyền Truy Cập Thư Mục

Sau khi đã sửa quyền sở hữu, thiết lập lại quyền truy cập đúng cách:

chmod -R 755 ~/.vscode

Mode 755 nghĩa là bạn có toàn quyền đọc/ghi/thực thi (7), trong khi người khác chỉ có thể đọc và thực thi (5). Extensions sẽ cài đặt bình thường với các quyền này.

Bước 4 — Nếu Lỗi Xảy Ra Với VS Code Cài Toàn Hệ Thống

Một số bản phân phối Linux cài VS Code toàn hệ thống qua snap, apt hoặc rpm, và thư mục extensions có thể nằm ở chỗ khác. Với bản cài qua Snap, extensions thường được lưu trong ~/snap/code/. Sửa tương tự:

sudo chown -R $USER:$USER ~/snap/code/

Không chắc extensions của bạn đang ở đâu? Chạy ls -la ~/.vscode/extensions/ls -la ~/snap/code/ rồi so sánh xem cái nào có quyền sở hữu là root.

Bước 5 — Ngừng Chạy VS Code Với sudo

Đây là nguyên nhân gốc rễ trong hầu hết các trường hợp. Nếu bạn đang làm thế này:

# ĐỪNG làm thế này
sudo code .

Hãy dừng lại. Chỉ cần khởi động VS Code với tài khoản người dùng bình thường:

# Hãy làm thế này
code .

Cần chỉnh sửa file hệ thống yêu cầu quyền root? Dùng sudoedit /path/to/file trong terminal, hoặc dùng tính năng Save as Root tích hợp sẵn trong VS Code khi lưu file. Tuyệt đối không dùng sudo code.

Xác Nhận Đã Sửa Xong

  • Thoát hoàn toàn khỏi VS Code. Trên macOS, đóng cửa sổ là chưa đủ — hãy dùng Cmd+Q.
  • Mở lại VS Code bình thường (không có sudo).
  • Mở panel Extensions bằng Ctrl+Shift+X (hoặc Cmd+Shift+X trên Mac).
  • Tìm kiếm bất kỳ extension nào — ví dụ Prettier hoặc GitLens — và nhấn Install.

Không có thông báo đỏ? Vậy là ổn rồi. Để kiểm tra lại từ terminal:

ls -la ~/.vscode/extensions/

Các thư mục extension mới sẽ xuất hiện, được sở hữu bởi tên người dùng của bạn — không phải root.

Mẹo Thêm

Hiểu Quyền Truy Cập Trước Khi Thay Đổi

Không chắc chmod 755 thực sự có nghĩa là gì? Unix Permissions Calculator trên ToolCraft cho phép bạn xây dựng các giá trị chmod theo cách trực quan. Nhấp vào các bit quyền, xem giá trị octal và ý nghĩa của nó — trước khi chạy lệnh. Tôi dùng công cụ này mỗi khi cần đặt quyền ngoài 755/644 thông thường.

Chia Sẻ Cache Extensions Trên Máy Nhiều Người Dùng

Có một nhóm dev cùng dùng chung một máy Linux? Thay vì mỗi người tự quản lý extensions riêng, hãy thiết lập một thư mục extensions dùng chung với quyền theo nhóm:

sudo mkdir -p /opt/vscode-extensions
sudo chown -R root:developers /opt/vscode-extensions
sudo chmod -R 775 /opt/vscode-extensions

Rồi trỏ VS Code vào đó khi khởi động:

code --extensions-dir /opt/vscode-extensions .

Mọi người trong nhóm developers đều có thể cài extensions vào cache dùng chung. Không tải trùng lặp, không tranh chấp quyền truy cập.

Loại Trừ Vấn Đề Hạn Mức Đĩa

Trên các hệ thống được quản lý — máy chủ trường đại học, máy trạm công ty — EACCES: permission denied cũng có thể xuất hiện khi bạn đã dùng hết hạn mức đĩa. Đây là thông báo lỗi gây nhầm lẫn. Chạy hai lệnh này để loại trừ khả năng đó:

df -h ~
quota -u $USER

Nếu phân vùng home của bạn đạt 100% hoặc vượt hạn mức, hãy giải phóng dung lượng trước, rồi thử cài extension lại.

Related Error Notes