Quyền Zsh bị từ chối là lỗi xảy ra khi bạn cố 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 thư mục mà bạn không có quyền ghi hoặc thực thi tập lệnh thực hiện các hành động mà người dùng của bạn không có quyền thực hiện. Bằng quyền, chúng tôi đề cập đến quyền đọc hoặc quyền ghi.
Chúng ta hãy xem nguyên nhân chính của lỗi này, sau đó chúng ta có thể thử từng giải pháp để xem giải pháp nào hiệu quả nhất.
Lỗi này chủ yếu xảy ra khi bạn không có quyền thực thi, ghi hoặc đọc tệp.
Giả sử chúng ta đang ở trong shell Zsh trong hệ điều hành Linux và bạn đang cố gắng liệt kê nội dung của tệp bằng cách sử dụng 'cat' nhưng bạn nhận được lỗi 'quyền bị từ chối'.
Bây giờ để sửa lỗi này, đầu tiên chúng ta cần liệt kê các quyền của file. Chúng tôi thực thi “ls -l” để xem các quyền.
Như bạn có thể thấy, các quyền chỉ có người dùng root và nhóm root mới có thể đọc tệp, trong khi người dùng root chỉ có thể ghi vào tệp.
1. Sử dụng sudo
Để khắc phục điều này, giải pháp đơn giản nhất là sử dụng ‘sudo’ với lệnh chúng tôi muốn chạy. Điều này sẽ thực thi lệnh với tư cách là người dùng root. Trong trường hợp của bạn cũng vậy, bạn có thể sử dụng ‘sudo’ khi bạn tin tưởng 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 của bạn.
Do đó chúng ta có thể chạy:
sudo cat file
2. Thay đổi quyền của tệp hoặc các tệp
Điều tiếp theo chúng ta có thể làm là thay đổi quyền của tệp. Vì lỗi từ chối cấp phép thường do quyền đọc hoặc ghi gây ra, nên chúng tôi có thể thay đổi quyền của một hoặc nhiều tệp cụ thể đó.
Bằng cách thực thi ‘ls -l’ bên trong thư mục chứa tệp, chúng ta có thể thấy chủ sở hữu và nhóm của tệp là root.
Chúng tôi có thể thay đổi chủ sở hữu thành người dùng của mình và sau đó thực hiện những gì chúng tôi muốn làm với tệp.
Chúng ta có thể chạy:
sudo chown [người dùng] [tên tệp]
Trong ví dụ của chúng tôi, vì v3n0m là người dùng mà chúng tôi đã đăng nhập, chúng tôi sẽ đưa ra lệnh dưới dạng:
sudo chown v3n0m file
v3n0m đây là người dùng của chúng tôi. 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 tệp vì nó sẽ không còn gây ra lỗi từ chối cấp phép nữa .
3. Bật quyền thực thi
Bạn có thể sử dụng ./ với tên tệp bằng zsh hoặc các shell khác để thực thi tệp dưới dạng chương trình. Nhưng nếu quyền thực thi không được đặt trên một tệp, nó sẽ báo cho bạn lỗi zsh :quyền bị từ chối.
Giả sử chúng ta muốn thực thi một tập lệnh có tên script1. Chúng tôi nhập ./script1 vào thiết bị đầu cuối của mình và nó báo lỗi này:
Chúng tôi thực hiện ls -la trên tệp để xem các quyền. Như bạn có thể thấy các quyền thực thi trên tệp không được đặt.
Giải pháp ở đây rất đơn giản, hãy thêm quyền thực thi vào tệp.
Chúng tôi đưa ra một lệnh đơn giản
chmod +x script1
chmod +x sẽ thêm bit thực thi về sự cho phép của tệp dành cho chủ sở hữu, nhóm cũng như những người khác.
Bây giờ chúng ta có thể chạy tệp dưới dạng chương trình bằng cách nhập ./script1 không có bất kỳ lỗi nào.
Điều này sẽ khắc phục lỗi nếu bạn gặp phải trên Linux, tuy nhiên, nếu bạn đang gặp phải lỗi này của MacOS hoặc Gradle, hãy tiếp tục theo dõi bài viết.
Chỉnh sửa tệp zshrc của bạn (macOS)
Một số người dùng đã báo cáo rằng MacOS của họ sử dụng zsh khi họ không ở trong thư mục mà họ muốn thực thi lệnh.
Nếu bạn gặp phải một vấn đề tương tự, thì cách khắc phục nó thực sự đơn giản.
Bạn cần chỉnh sửa tệp .zshrc của mình trong nhà/tên người dùng của bạn thư mục và thêm phần này vào cuối tập tin.
setopt auto_cd
Điều này sẽ kích hoạt tùy chọn auto_cd trong zsh .
Để chỉnh sửa .zshrc tệp, bạn có thể sử dụng bất kỳ trình soạn thảo văn bản đồ họa hoặc trình soạn thảo văn bản dòng lệnh nào như vim hoặc vi.
Sử dụng lệnh CHMOD để đặt quyền (Gradle)
Lỗi từ chối quyền Zsh có thể xảy ra nếu bạn đang làm việc trên gradle và tệp gradlew không có quyền chính xác.
Để khắc phục lỗi như vậy, bạn cần đặt quyền chính xác trên gradlew.
Bạn có thể gõ lệnh này trong terminal của mình,
chmod 755 gradlew
Điều này sẽ làm cho tệp gradlew có thể thực thi được và lỗi sẽ được sửa.
Hoặc bạn có thể gõ lệnh này một cách đơn giản chmod +x gradlew
Điều này cũng sẽ làm cho tệp gradlew có thể thực thi được.
Nếu không có giải pháp nào trong số này hiệu quả với bạn, vui lòng bình luận bên dưới và kỹ thuật viên của chúng tôi sẽ sẵn lòng trợ giúp bạn ngay
GIỚI THIỆU TÁC GIẢ
Mũi tên Kevin
Kevin Arrows là một chuyên gia công nghệ giàu kinh nghiệm và hiểu biết với hơn một thập kỷ kinh nghiệm trong ngành. Anh có chứng chỉ Chuyên gia Công nghệ được Chứng nhận của Microsoft (MCTS) và có niềm đam mê sâu sắc trong việc cập nhật những 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 của mình 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. Những đóng góp của ông cho lĩnh vực công nghệ đã được các đồng nghiệp công nhận và tôn trọng rộng rãi, đồng thời ông được đánh giá cao nhờ 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à ngắn gọn.