Lỗi Zsh Permission Denied trên Mac
Mở file trên macOS rất đơn giản: chỉ cần nhấp đúp vào file và nó sẽ mở ngay lập tức.
Cách khác là sử dụng Terminal. Chỉ cần chạy lệnh, thiết lập thư mục chứa file và bạn có thể mở file mà không gặp rắc rối.
Tuy nhiên, không phải lúc nào cũng suôn sẻ. Có những trường hợp Terminal báo lỗi "permission denied" (từ chối cấp quyền) khi mở file trên Mac. Một lệnh đơn giản không nên gây ra lỗi này. Điều này chỉ có nghĩa là có vấn đề với file hoặc với chính macOS.
Một số ví dụ về lỗi "Permission Denied":
Giống như các lỗi quyền trên Windows, lỗi permission denied trên Mac có thể đi kèm với nhiều thông báo khác nhau. Dưới đây là một số ví dụ:
Mẹo chuyên nghiệp: Quét Mac để tìm các vấn đề về hiệu suất, file rác, ứng dụng độc hại và mối đe dọa bảo mật
có thể gây ra sự cố hệ thống hoặc làm chậm hiệu suất.
- zsh: permission denied: ./foo.rb
- Bash: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
- aftheers-MacBook-Air:scripts root# ./ArduinoWifiShield_upgrade.sh
- -sh: ./ArduinoWifiShield_upgrade.sh: Permission denied
Đây là lỗi phổ biến đã làm phiền người dùng Mac trong rất lâu. Nó không phải là mới, nhưng gần đây có nhiều báo cáo về việc người dùng Mac gặp lỗi "permission denied" sau khi nâng cấp lên Catalina và Big Sur.
Có nhiều thứ có thể sai khi bạn chạy lệnh trong Terminal, nên việc gặp lỗi này không令人 ngạc nhiên. Nhưng lỗi này vẫn rất khó chịu, đặc biệt nếu bạn không có cách nào khác để mở file.
Ví dụ, bạn muốn mở một file không có ứng dụng liên kết hoặc không phản hồi khi nhấp chuột.
Trước khi thảo luận chi tiết về lỗi Zsh permission denied trên dòng lệnh của thiết bị Mac OS, hãy xác định các thuật ngữ cơ bản trước.
Terminal macOS là gì?
Ứng dụng Terminal của Mac cho phép bạn làm nhiều việc. Tuy nhiên, nó được sử dụng rộng rãi để điều khiển thiết bị bằng cách sử dụng các lệnh.
Đây là giao diện dòng lệnh (command line interface) của Mac. Đối với một số người, điều này có thể khá khó khăn. Nhưng với người khác, nó làm cho việc hoàn thành nhiệm vụ trở nên dễ dàng. Để sử dụng, bạn chỉ cần quen với các hàm và lệnh cơ bản và nhập chúng vào dòng lệnh.
Khi đã thành thạo, bạn có thể đi sâu hơn và khám phá các lệnh nâng cao để hoàn thành các tác vụ phức tạp hơn.
Mở ứng dụng Terminal trên Mac
Có hai cách để mở ứng dụng Terminal trên Mac của bạn.
Thông qua thư mục Applications
Ứng dụng này nằm trong thư mục Utilities dưới Applications. Để khởi chạy, hãy mở thư mục Applications và chọn Utilities. Sau đó, nhấp đúp vào ứng dụng Terminal.
Thông qua Spotlight
Thay vào đó, bạn có thể nhấn phím Command và phím Space. Thao tác này sẽ khởi chạy Spotlight. Tại đây, gõ terminal và nhấp đúp vào kết quả tìm kiếm.
Tùy chỉnh ứng dụng Terminal
Bây giờ bạn sẽ thấy một cửa sổ nhỏ với nền trắng đơn giản. Bạn sẽ thấy tên người dùng của mình trong thanh tiêu đề. Cũng hiển thị từ "bash" và kích thước cửa sổ đang hoạt động tính bằng pixel.
Nếu bạn muốn cửa sổ lớn hơn, chỉ cần nhấp vào góc dưới bên phải của cửa sổ và kéo ra ngoài.
Nếu bạn muốn thay đổi màu nền và phông chữ, hãy mở menu Shell và chọn New Window (Cửa sổ mới). Từ đây, bạn có thể chọn tùy chọn phù hợp nhất từ danh sách.
Các lệnh Mac cơ bản bạn cần nắm
Cách tốt và nhanh nhất để quen với ứng dụng Terminal là bắt đầu sử dụng nó. Nhưng trước khi bạn có thể tiếp tục, bạn phải quen với cách nhập lệnh. Vâng, đó là dễ dàng vì bạn chỉ cần gõ lệnh tại dòng lệnh và nhấn Return để thực thi.
Mỗi lệnh có ba yếu tố: lệnh, một đối số cho lệnh biết tài nguyên nào nó nên chạy trên, và một tùy chọn cho phép bạn sửa đổi đầu ra.
Ví dụ, nếu bạn muốn di chuyển một file hệ thống từ thư mục này sang thư mục khác, bạn phải sử dụng lệnh di chuyển "mv" và gõ vị trí bạn muốn di chuyển file đến.
Một số lệnh nâng cao để sử dụng trên dòng lệnh Terminal
Dưới đây là một vài ví dụ về các lệnh Terminal nâng cao hơn:
Sao chép file từ thư mục này sang thư mục khác
Để sao chép file từ thư mục này sang thư mục khác, hãy làm theo các bước sau:
- Gõ lệnh ditto [folder1] [folder2] vào dòng lệnh. Thay đổi giá trị của folder1 thành thư mục chứa file hiện tại. Folder2 nên là thư mục bạn muốn di chuyển chúng đến.
- Để xem các file đang được sao chép, gõ -v sau lệnh.
Tải file từ Web
Để tải file từ web bằng ứng dụng Terminal, hãy làm như sau:
- Mở ứng dụng Terminal và gõ lệnh cd ~/Downloads/.
- Sau đó, nhập lệnh này: curl -O [URL của file bạn muốn tải].
Thay đổi vị trí mặc định của ảnh chụp màn hình
Nếu bạn muốn thay đổi vị trí mặc định lưu ảnh chụp màn hình, hãy làm theo các bước sau:
- Gõ lệnh này vào dòng lệnh: defaults write com.apple.screencapture location [đường dẫn đến thư mục bạn muốn lưu ảnh chụp màn hình].
- Nhấn phím Return.
- Tiếp theo, gõ lệnh này: killall SystemUIServer.
- Nhấn phím Return một lần nữa.
Thay đổi định dạng file mặc định của ảnh chụp màn hình
Nếu bạn muốn lưu ảnh chụp màn hình ở định dạng .jpg, hãy làm như sau:
- Mặc định, ảnh chụp màn hình của Mac được lưu với phần mở rộng file .png. Để đổi sang .jpg, gõ lệnh này: defaults write com.apple.screencapture type JPG.
- Nhấn phím Return.
- Sau đó, gõ lệnh này: killall SystemUIServer.
- Nhấn phím Return một lần nữa.
Xóa tất cả file trong một thư mục
Để xóa thư mục và thư mục con trong một thư mục, hãy làm như sau:
- Để xóa tất cả file trong một thư mục, gõ lệnh này: rm -R directoryname.
- Xác nhận xóa bằng lệnh này: rm -iR directoryname.
Zsh là gì?
Z shell hay Zsh là một Unix shell được thiết kế và xây dựng dựa trên bash — shell mặc định của macOS. Các chuyên gia khuyên nên sử dụng zsh thay vì bash vì nó dễ dàng hơn nhiều khi cấu hình plugin và theme. Ngoài ra, theme của nó trông đẹp và gọn gàng hơn. Quan trọng nhất, nó không yêu cầu quyền người dùng nghiêm ngặt.
Lỗi "Permission Denied" trong Terminal khi mở file là gì?
Chính như tên gọi, đây là lỗi quyền ngăn người dùng Mac mở file bằng lệnh. Nó có thể xảy ra với lệnh sudo hoặc thậm chí lệnh bash. Theo nhiều báo cáo, lỗi Permission Denied cũng có thể xảy ra ngay cả khi file được mở với quyền root.
Hầu hết các báo cáo cho biết lỗi xuất hiện khi họ cố gắng mở file cài đặt qua Terminal. Khi file được kéo vào cửa sổ Terminal, lỗi "Permission Denied" bật lên. Tuy nhiên, điều này cũng có thể xảy ra với bất kỳ file nào khác.
Tại sao bạn gặp lỗi "Permission Denied" trên Mac
Có nhiều lý do có thể khiến bạn gặp lỗi Zsh permission denied trên thiết bị. Những lý do phổ biến nhất như sau:
File bị khóa
Bạn rất có thể gặp lỗi "Permission Denied" nếu bạn đang cố cài đặt chương trình hoặc sửa đổi file bị khóa. Có thể là vì bạn không có đặc quyền quản trị hoặc vì người tạo file đã dùng chmod để khóa file.
Lỗi này cho thấy lệnh của bạn đang cố ghi vào thư mục mà tài khoản người dùng của bạn không sở hữu.
Quyền file không đủ
Bạn có thể kiểm tra quyền của file đang có vấn đề bằng cách gõ ls -l file.ext trong Terminal. "file.ext" đại diện cho file và phần mở rộng của file bạn đang cố mở hoặc sửa đổi. Bạn cũng có thể thử ép buộc lệnh yêu cầu quyền quản trị bằng cách dùng "sudo".
Lệnh Chmod X hoặc lệnh hệ thống không chính xác
Một lý do khác khiến bạn gặp lỗi này là bạn có thể đã nhập sai lệnh chmod x hoặc các lệnh hệ thống khác.
Hãy kiểm tra lỗi cú pháp và đảm bảo bạn đang cố dùng đúng lệnh. Nếu bạn đang cố chạy một ứng dụng, hãy đảm bảo lệnh chương trình hợp lệ và đã được cài đặt trên máy tính của bạn.
Cách khắc phục lỗi Permission Denied trên Mac
Khi bạn gặp lỗi này, điều đầu tiên bạn cần làm là thử mở file bằng cách thông thường. Nhấp đúp vào file để xem bạn có thể mở được không. Nếu không thành công, bạn có thể thử một số giải pháp dưới đây.
Sau đó, hãy tạo bản sao của bất kỳ file liên quan nào bạn có. Bạn có thể cần file backup sau này trong trường hợp có sự cố.畢竟, khi bạn cố ép buộc một lệnh hoạt động, có những rủi ro tiềm ẩn có thể làm hỏng hệ thống và dẫn đến nhiều vấn đề hơn. Tốt hơn là bạn nên có chuẩn bị.
Ngoài ra, hãy đảm bảo tối ưu hóa Mac của bạn bằng ứng dụng sửa chữa Mac để ngăn các vấn đề khác nảy sinh. Nó cũng sẽ dọn dẹp hệ thống để quy trình của bạn chạy suôn sẻ. Sau khi xong, hãy khởi động lại Mac và xem hướng dẫn khắc phục sự cố của chúng tôi.
Bước 1: Kiểm tra quyền của bạn.
Như đã đề cập trước đó, lỗi này thường xảy ra vì bạn không có đủ quyền để truy cập file. Để kiểm tra xem có phải trường hợp này không:
- Khởi chạy Terminal từ Utilities.
- Gõ lệnh sau, và thêm một khoảng trắng sau ký tự cuối cùng. KHÔNG nhấn Enter: ls -l
- Kéo file bạn muốn mở và thả vào cửa sổ Terminal. Thao tác này sẽ tự động thêm vị trí của file vào lệnh hiện có. Tuy nhiên, nó sẽ không thực sự di chuyển file.
- Bây giờ nhấp vào cửa sổ Terminal và nhấn Enter.
Thao tác này sẽ cho bạn biết xem bạn có quyền ghi hoặc sửa đổi file hay không.
Bước 2: Thay đổi quyền sở hữu thư mục.
Hãy lấy quyền sở hữu thư mục bằng lệnh chown trước khi cố ghi vào nó.
Bạn có thể nhập lệnh này trong Terminal, sau đó nhấn Enter: chown -R $USER:$USER /path/to/directory
Thay đổi $USER bằng người dùng đang đăng nhập hiện tại và /path/to/directory bằng đường dẫn đến nơi bạn muốn ghi.
Bước 3: Cho Terminal quyền truy cập đầy đủ vào ổ đĩa.
Có thể Terminal không có quyền truy cập đầy đủ vào ổ đĩa, đó là lý do bạn không thể mở file bằng lệnh. Để khắc phục, hãy vào System Preferences > Security & Privacy > Privacy, sau đó thêm Terminal vào danh sách các ứng dụng được phép điều khiển máy tính của bạn.
Bước 4: Sử dụng lệnh SUDO.
Sudo có thể đơn giản nhưng đủ mạnh để cho phép bạn chạy lệnh với đặc quyền quản trị. Vì vậy, nếu bạn gặp lệnh bị từ chối do vấn đề quyền, hãy nhập sudo.
Lệnh sudo thực thi các lệnh tiếp theo với đặc quyền siêu người dùng (superuser) hoặc root. Lệnh này sẽ cho phép bạn thực hiện hầu hết các lệnh từ Terminal. Để làm điều này, chỉ cần thêm sudo trước lệnh gốc. Dưới đây là các lệnh mẫu:
- sudo chmod 755 /dvtcolorconvert.rb
- sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
Bạn sẽ được nhắc nhập mật khẩu nếu đây là lần đầu bạn sử dụng lệnh sudo. Nhưng sau đó, bạn sẽ không phải nhập nó mỗi khi dùng lệnh sudo.
Các cách khác để giải quyết lỗi Zsh Permission Denied trên Mac
Nếu bạn vẫn gặp lỗi Zsh permission denied trên Mac khi cố mở file trên macOS Catalina hoặc các phiên bản khác, đừng lo lắng. Dưới đây là các giải pháp khác bạn có thể thử:
Giải pháp #1: Tải Oh My Zsh
Đôi khi, lỗi Zsh permission denied có thể được giải quyết bằng cách cải thiện ứng dụng Terminal hiện có. Một cách để làm như vậy là sử dụng Oh My Zsh.
Oh My Zsh là một khung mã nguồn mở, thân thiện với người dùng và do cộng đồng điều hành, có thể dùng để quản lý cấu hình Zsh trên macOS Catalina hoặc các phiên bản macOS khác. Nó đi kèm với nhiều hàm, plugin, theme và các thứ liên quan khác cho thiết bị macOS của bạn.
Khi cài đặt khung này, bạn sẽ có quyền truy cập vào hàng trăm plugin mạnh mẽ và theme đẹp mắt. Terminal mới của bạn sẽ được tùy chỉnh theo sở thích.
Để tải xuống, hãy truy cập trang web ohmyz.sh. Sau khi file thực thi đã được tải xuống, cài đặt nó bằng cách chạy lệnh này trong terminal của bạn: $ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)".
Giải pháp #2: Cấu hình file .zshrc
Bạn vẫn còn thấy lỗi Zsh permission denied? Nếu是这样, hãy thử cấu hình file .zshrc. File này chứa script cần thiết để chạy một shell zsh mới. Vì vậy, nếu bạn thay đổi file này, bạn cần khởi động một shell mới để các thay đổi có hiệu lực.
Bạn có thể tùy chỉnh terminal của mình bằng cách chạy lệnh open ~/.zshrc. Lệnh này sẽ mở file .zshrc trong thư mục gốc của hệ thống.
Lưu ý rằng nếu bạn đang chạy macOS Catalina hoặc các phiên bản mới hơn, bạn vẫn có thể gặp cùng lỗi Zsh permission denied. Đối với trường hợp này, bạn cần cấu hình quyền bằng cách mở file bằng lệnh chmod +x ~/.zshrc.
Giải pháp #3: Thay đổi theme của ứng dụng Terminal
Nếu bạn đã cài đặt khung Oh My Zsh, bạn có thể tiếp tục với giải pháp này. Thay đổi theme hiện tại của ứng dụng Terminal bằng cách sử dụng lệnh ZSH_THEME="theme_name".
Giải pháp #4: Thay đổi shell mặc định của hệ thống
Một cách khác để loại bỏ lỗi Zsh permission denied là thay đổi shell mặc định của hệ thống. Để làm điều này, hãy làm theo các bước sau:
- Đi đến menu Apple và chọn Preferences.
- Điều hướng đến Users and Groups.
- Nhấp vào biểu tượng khóa và nhập tên tài khoản người dùng và mật khẩu của bạn.
- Control+Click vào tên tài khoản người dùng của bạn từ danh sách người dùng.
- Chọn Advanced Options.
- Chọn một shell từ menu Login Shell.
- Nhấn OK để áp dụng thay đổi.
Cách tránh vấn đề quyền trên Mac của bạn
Để tránh vấn đề về quyền trong tương lai, bạn luôn có thể thay đổi cài đặt quyền để xác định ai có thể xem và thay đổi file trên thiết bị của mình. Dưới đây là một số cách để làm như vậy:
Phương pháp #1: Gán quyền cho người dùng và nhóm
Bạn có thể gán quyền cho nhiều người dùng và nhóm khác nhau để tránh vấn đề quyền trên thiết bị macOS của mình. Cách làm như sau:
- Trên thiết bị Mac của bạn, chọn một thư mục hoặc folder.
- Đi đến File và chọn Get Info.
- Nếu thông tin không hiển thị, hãy nhấn mũi tên.
- Chọn một người dùng hoặc nhóm và chọn đặc quyền từ menu pop-up.
- Nhấn OK để lưu thay đổi.
Phương pháp #2: Áp dụng quyền cho tất cả các mục
Áp dụng quyền cho tất cả các mục để đảm bảo chúng chỉ có thể được truy cập bởi những người phù hợp. Làm theo các bước sau:
- Chọn một thư mục và đi đến File.
- Nhấp Get Info.
- Kiểm tra menu Action Pop-Up và chọn Apply to Enclosed Items.
- Nhấn OK để lưu thay đổi.
Phương pháp #3: Thay đổi chủ sở hữu của mục
Nếu một mục thuộc sở hữu của người dùng khác, bạn sẽ gặp vấn đề về quyền của nó. Khắc phục bằng cách làm như sau:
- Chọn một mục và đi đến File > Get Info.
- Nếu tên chủ sở hữu mới không có trong danh sách, nhấp nút Add để thêm chủ sở hữu mới.
- Chọn chủ sở hữu mới và nhấp menu Action Pop-Up.
- Nhấp Make <new owner> the owner.
- Áp dụng và lưu thay đổi.
Phương pháp #4: Thêm hoặc xóa người dùng hoặc nhóm
Thêm hoặc xóa người dùng hoặc nhóm cũng có thể giải quyết vấn đề quyền. Cách làm như sau:
- Chọn một mục.
- Đi đến File và nhấp Get Info.
- Điều hướng đến phần Sharing and Permissions.
- Chọn Add a User or Group để thêm người dùng hoặc nhóm hoặc nhấp Remove a user or group để xóa người dùng hoặc nhóm.
- Lưu thay đổi.
Tóm tắt
Gặp lỗi "permission denied" trên Mac khi bạn đang cố truy cập file không phải là vấn đề lớn nếu bạn vẫn có thể mở file đó bằng cách nhấp đúp. Tuy nhiên, hầu hết thời gian, người dùng gặp lỗi này gần như luôn không thể mở file bằng phương pháp thông thường.
Vì đây là lỗi quyền, bạn cần đảm bảo mình có đủ đặc quyền để truy cập nó. Các bước trên sẽ hướng dẫn bạn phải làm gì. Điều này rất hữu ích cho người dùng Mac chưa quen với việc sử dụng lệnh hoặc Terminal.
Để khắc phục lỗi Zsh Permission Denied trên Mac của bạn, bạn phải kiểm tra quyền của file trước. Có thể tài khoản người dùng hiện tại của bạn không có đủ quyền để truy cập file.
Nếu cách đó không hiệu quả, hãy thay đổi quyền sở hữu thư mục. Bạn có thể làm điều này bằng lệnh chown.
Ngoài ra, bạn có thể thử cấp cho ứng dụng Terminal quyền truy cập đầy đủ vào ổ đĩa hoặc dùng lệnh SUDO để cấp đặc quyền superuser hoặc root.
Nếu không có phương pháp khắc phục sự cố cơ bản nào hoạt động, hãy tiến hành các giải pháp khác. Thứ nhất, hãy thử tải khung Oh My Zsh. Phương pháp này đã hiệu quả với nhiều người dùng bị ảnh hưởng. Với khung này, người dùng có thể tùy chỉnh ứng dụng Terminal.
Tiếp theo, bạn cũng có thể thử cấu hình chính file zshrc hoặc đơn giản là thay đổi theme của ứng dụng Terminal. Nếu lỗi vẫn tồn tại, hãy thay đổi shell mặc định của hệ thống.
Bây giờ, nếu bạn đã thử mọi cách nhưng vẫn vô hiệu, hãy tìm kiếm sự giúp đỡ từ chuyên gia Mac. Họ có thể chẩn đoán vấn đề thay bạn để bạn không phải làm.
Bạn đã gặp những lỗi Mac nào khác? Hãy cho chúng tôi biết trong phần bình luận.