2012-09-05 47 views
35

Tôi mới dùng mac không quen thuộc trên lệnh thiết bị đầu cuối, tôi đặt tệp dvtcolorconvert.rb vào thư mục gốc của tập của tôi, tập lệnh ruby ​​này có thể chuyển đổi xcode 3 chủ đề thành định dạng chủ đề xcode 4 , là định dạng xxxxxxxx.dvtcolortheme.Chạy tập lệnh trên dấu nhắc mac "Quyền bị từ chối"

Sau đó chạy tập lệnh /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme trên thiết bị đầu cuối nhưng luôn nhắc "Quyền bị từ chối".

có vấn đề gì với điều này? Bất kỳ ai cũng có thể giúp tôi giải quyết vấn đề này? Cảm ơn.

Trả lời

36

Hãy đọc toàn bộ câu trả lời trước khi cố gắng chạy với sudo

Cố gắng chạy sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Lệnh sudo thực thi các lệnh mà theo nó với 'superuser' hoặc ưu đãi 'root'. Điều này sẽ cho phép bạn thực hiện hầu hết mọi thứ từ dòng lệnh. Điều đó nói rằng, KHÔNG LÀM NÀY! Nếu bạn đang chạy một kịch bản trên máy tính của bạn và không cần nó để truy cập các thành phần cốt lõi của hệ điều hành của bạn (tôi đoán bạn không phải vì bạn đang gọi kịch bản trên một cái gì đó bên trong thư mục chính của bạn (~ /)) , sau đó nó phải được chạy từ thư mục home của bạn, ví dụ:

~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Move nó tới ~/hoặc một thư mục phụ và thực hiện từ đó. Bạn sẽ không bao giờ có các vấn đề về quyền ở đó và sẽ không có nguy cơ truy cập hoặc sửa đổi bất kỳ điều gì quan trọng đối với HĐH của bạn.

Nếu bạn vẫn gặp sự cố, bạn có thể kiểm tra quyền trên tệp bằng cách chạy ls -l trong khi ở cùng thư mục với tập lệnh ruby. Bạn sẽ nhận được một cái gì đó như thế này:

$ ls -l 
total 13 
drwxr-xr-x 4 or019268 Administ 12288 Apr 10 18:14 TestWizard 
drwxr-xr-x 4 or019268 Administ  4096 Aug 27 12:41 Wizard.Controls 
drwxr-xr-x 5 or019268 Administ  8192 Sep 5 00:03 Wizard.UI 
-rw-r--r-- 1 or019268 Administ  1375 Sep 5 00:03 readme.txt 

Bạn sẽ nhận thấy rằng readme.tập tin txt nói -rw-r--r-- ở bên trái. Điều này cho thấy các quyền cho tệp đó. 9 ký tự từ bên phải có thể được chia thành các nhóm gồm 3 ký tự 'rwx' (đọc, viết, thực thi). Nếu tôi muốn thêm quyền thực thi cho tệp này, tôi sẽ thực hiện chmod 755 readme.txt và phần quyền đó sẽ trở thành rwxr-xr-x. Bây giờ tôi có thể thực thi tệp này nếu tôi muốn bằng cách chạy ./readme.txt (./ yêu cầu bash nhìn vào thư mục hiện tại cho lệnh dự định thay vì tìm kiếm biến $ PATH).

schluchc ám chỉ xem trang người đàn ông cho chmod, thực hiện việc này bằng cách chạy man chmod. Đây là cách tốt nhất để nhận tài liệu về một lệnh nhất định, man <command>

+0

Cảm ơn! Nhưng đâu là thư mục chính (~ /)? Nó có nghĩa là máy tính để bàn? –

+0

Shell có thể cho bạn biết rằng với 'echo ~', thường là '/ Users/$ USER'. Desktop chỉ là một thư mục bên dưới. Unix GUIs ẩn thư mục chủ từ xem, nhưng nó vẫn còn đó. –

+1

Bạn có thể lấy đường dẫn đến thư mục chính bằng cách chạy 'echo $ HOME'. Nó có thể trông giống như/Users/ hoặc có thể/Users/

1

Kiểm tra quyền trên tập lệnh Ruby của bạn (có thể không có quyền thực thi đang ở trong khi bạn chạy tập lệnh (trong trường hợp nó tạo các tệp tạm thời trong thư mục hiện tại thay vì sau đó /tmp).

Bất kỳ ai trong số họ đều có thể khiến bạn đau buồn.

0

Bạn nên chạy tập lệnh dưới dạng 'superuser', chỉ cần thêm 'sudo' ở phía trước lệnh và nhập mật khẩu của bạn khi được nhắc.

Vì vậy, hãy thử:

sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme 

Nếu điều này không làm việc, thử điều chỉnh các điều khoản:

sudo chmod 755 /dvtcolorconvert.rb 
sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme 
+2

Oooh, không _necessarily_ điều tôi muốn đề xuất trừ khi bạn _darn_ chắc chắn tập lệnh không thể làm hại bất cứ điều gì. – paxdiablo

106

Bạn đã cung cấp cho mình các quyền để thực thi kịch bản?

Lệnh sau như siêu người dùng sẽ làm việc này cho bạn:

sudo chmod 755 'filename'

Để biết chi tiết bạn nên đọc man page của chmod.

+2

Đây phải là câu trả lời được chấp nhận. Rõ ràng, súc tích và nó hoạt động. – dialex

+0

Tôi đã sử dụng: sudo chmod 777 'filename' –

2

Trong trường hợp của tôi, tôi đã tạo một lỗi đánh máy ngu ngốc trong shebang.

Vì vậy, trong trường hợp một người nào khác trên bằng những ngón tay béo tình cờ qua câu hỏi này:

Whoops: #!/usr/local/bin ruby

tôi có nghĩa là để viết: #!/usr/bin/env ruby

Các lỗi mơ hồ ZSH cho gửi cho tôi xuống con đường sai :

ZSH: zsh: permission denied: ./foo.rb

Bash: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied

Các vấn đề liên quan