Lỗi "Zsh permission denied" xảy ra khi bạn cố gắng thực thi một lệnh trên Linux hoặc Mac mà bạn không có quyền thực thi. Lệnh có thể đơn giản như thực hiện 'ls' trên một thư mục mà bạn không có quyền ghi, hoặc chạy một script thực hiện các hành động mà người dùng của bạn không có quyền làm. Về quyền限, chúng ta đề cập đến quyền đọc hoặc ghi.
Hãy cùng xem nguyên nhân chính của lỗi này, sau đó thử từng giải pháp để xem cái nào hiệu quả nhất.
Chủ yếu lỗi này xảy ra khi bạn không có quyền thực thi, ghi hoặc đọc file.
Giả sử chúng ta đang ở trong shell Zsh trên hệ điều hành Linux và bạn đang cố gắng liệt kê nội dung của một file bằng 'cat', nhưng nhận được lỗi 'permission denied'.
Để khắc phục lỗi này, trước tiên chúng ta cần liệt kê quyền của file. Chúng ta thực thi "ls -l" để xem quyền.
Như bạn thấy, quyền được thiết lập sao cho chỉ user root và group root mới đọc được file, trong khi chỉ user root mới có thể ghi vào file.
1. Sử Dụng sudo
Để khắc phục, giải pháp đơn giản nhất là sử dụng 'sudo' cùng với lệnh chúng ta muốn chạy. Điều này sẽ thực thi lệnh với tư cách user root. Trong trường hợp của bạn cũng vậy, bạn có thể dùng 'sudo' khi bạn chắc chắn rằng lệnh bạn muốn thực thi hoặc tác vụ bạn muốn chạy sẽ không gây hại cho máy tính.
Chúng ta có thể chạy:
sudo cat file
2. Thay Đổi Quyền Của File Hoặc Các File
Điều tiếp theo chúng ta có thể làm là thay đổi quyền của file. Vì lỗi permission denied thường do quyền đọc hoặc ghi, chúng ta có thể thay đổi quyền của file hoặc các file cụ thể đó.
Bằng cách thực thi 'ls -l' bên trong thư mục chứa file, chúng ta thấy chủ sở hữu và group của file là root.
Chúng ta có thể đổi chủ sở hữu thành user của mình và sau đó làm những gì chúng ta muốn với file.
Chúng ta chạy:
sudo chown [user] [tên-file]
Trong ví dụ của chúng ta, vì v3n0m là user chúng ta đăng nhập, chúng ta sẽ thực hiện lệnh:
sudo chown v3n0m file
v3n0m ở đây là user của chúng ta. Trong trường hợp của bạn đó sẽ là tên người dùng của bạn.
Bây giờ, chúng ta có thể chạy cat trên file vì nó sẽ không còn báo lỗi permission denied.
3. Bật Quyền Thực Thi (Execute Permissions)
Bạn có thể dùng ./ với tên file trong zsh hoặc các shell khác để thực thi file như một chương trình. Nhưng nếu quyền thực thi không được thiết lập trên file, nó sẽ báo lỗi "zsh: permission denied".
Giả sử chúng ta muốn thực thi một script tên là script1. Chúng ta gõ ./script1 trong terminal và nó báo lỗi:
Chúng ta làm ls -la trên file để xem quyền. Như bạn thấy, quyền thực thi trên file không được thiết lập.
Giải pháp ở đây rất đơn giản, thêm quyền thực thi vào file. Chúng ta thực hiện một lệnh đơn giản:
chmod +x script1
chmod +x sẽ thêm bit execute vào quyền của file cho owner, group và others.
Bây giờ chúng ta có thể chạy file như chương trình bằng cách gõ ./script1 mà không có lỗi.
Điều này sẽ khắc phục lỗi nếu bạn gặp nó trên Linux, tuy nhiên, nếu bạn gặp lỗi này trên MacOS hoặc Gradle hãy tiếp tục đọc bài viết.
Chỉnh Sửa File .zshrc (macOS)
Một số người dùng báo cáo trên MacOS sử dụng zsh khi họ không ở trong thư mục từ nơi họ muốn thực thi lệnh.
Nếu bạn gặp vấn đề tương tự, thì cách khắc phục rất đơn giản.
Bạn cần chỉnh sửa file .zshrc trong thư mục home/username của bạn và thêm dòng này vào cuối file.
setopt auto_cd
Điều này sẽ bật tùy chọn auto_cd trong zsh.
Để chỉnh sửa file .zshrc, bạn có thể dùng bất kỳ trình soạn thảo văn bản đồ họa nào hoặc trình soạn thảo dòng lệnh như vim hoặc vi.
Dùng Lệnh CHMOD Để Thiết Lập Quyền (Gradle)
Lỗi Zsh permission denied có thể xảy ra nếu bạn đang làm việc với gradle và file gradlew không có quyền đúng.
Để khắc phục lỗi như vậy, bạn cần thiết lập quyền đúng cho gradlew.
Bạn có thể gõ lệnh này trong terminal:
chmod 755 gradlew
Điều này sẽ làm cho file gradlew có thể thực thi và lỗi sẽ được khắc phục.
Hoặc bạn có thể đơn giản gõ lệnh chmod +x gradlew.
Điều này cũng sẽ làm cho file gradlew có thể thực thi.
Nếu không có giải pháp nào ở trên hoạt động cho bạn, hãy thoải mái bình luận bên dưới và kỹ thuật viên của chúng tôi sẽ sớm giúp bạn.
VỀ TÁC GIẢ

Kevin Arrows
Kevin Arrows là chuyên gia công nghệ giàu kinh nghiệm và kiến thức với hơn một thập kỷ kinh nghiệm trong ngành. Anh持有 chứng chỉ Microsoft Certified Technology Specialist (MCTS) và có đam mê sâu sắc về việc cập nhật các phát triển công nghệ mới nhất. Kevin đã viết nhiều về nhiều chủ đề liên quan đến công nghệ, thể hiện chuyên môn và kiến thức trong các lĩnh vực như phát triển phần mềm, an ninh mạng và điện toán đám mây. Đóng góp của anh cho lĩnh vực công nghệ đã được công nhận và tôn trọng rộng rãi bởi đồng nghiệp, và anh được đánh giá cao về khả năng giải thích các khái niệm kỹ thuật phức tạp một cách rõ ràng và súc tích.