2009-04-07 38 views
6

Vì vậy, tôi có một chút vấn đề về Linux, geez sẽ dạy tôi dành nhiều năm trên Windows. Dù sao tôi đã làm một ứng dụng java nhỏ, bọc độc đáo với kịch bản Java Service Wrapper, nhưng khi tôi chạy tập lệnh đó:quyền Linux bị từ chối sau khi chmod a = rwx

sh ./wrapper.sh console 

Tôi nhận được sự cho phép bị từ chối ngay lập tức. Thông báo cho phép bị từ chối giống như vậy:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

My wrapper.sh nhỏ của tôi sống trong thư mục MyApp/bin. Thư mục MyApp/bin/wrapper chứa 2 file:

  • wrapper-linux-x86-32
  • wrapper-linux-x86-64

Là một thử nghiệm tôi chạy lệnh chmod sau :

chmod a=rwx MyApp -R 

tôi xác nhận rằng tất cả mọi thứ là rwx, ngay cả trong các thư mục con và cố gắng để chạy các kịch bản một lần nữa, với kết quả chính xác cùng ... cho phép từ chối.

Bất cứ ai có ý tưởng về những gì tôi có thể thử bên cạnh để làm cho em bé đó chạy?

Cảm ơn, Lancelot

+0

Nội dung của trình bao bọc là gì? Nó có thể là nó gọi một lệnh gọi là _eval_? Người đàn ông của tôi nói với tôi có một lệnh eval - xây dựng lệnh bằng cách nối các đối số. Có thể có một vấn đề trong kịch bản trình bao bọc. – lothar

+0

Tôi tin rằng bạn đã xóa quyền ghi công khai trên các tệp và trên các thư mục. Nó hiếm khi được bảo vệ để để lại các tập tin hoặc thư mục có quyền ghi công khai -/tmp là một trường hợp đặc biệt và yêu cầu thiết lập bit dính được an toàn từ xa. –

Trả lời

8

Tôi chỉ nhận thấy thông báo lỗi tham chiếu tên của thư mục lưu trữ tập tin của bạn:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

Chúng tôi biết đó là một thư mục kể từ khi bạn đề cập đến "Thư mục MyApp/bin/wrapper chứa 2 file" .

Ví dụ: bạn có thể kiểm tra tập lệnh của mình nơi bạn đang sử dụng tên thư mục làm lệnh không? Chẳng hạn như bằng cách sử dụng wrapper (đó là tên thư mục) thay vì wrapper/wrapper-linux-x86-32 (mà sẽ là một tên tập tin), hoặc các lỗi tương tự?

lỗi tương tự thường xuất hiện khi sử dụng khoảng trống trong tên tập tin và quên quote nói tên tập tin (có lẽ không phải là trường hợp ở đây, mặc dù.)

Nếu không được, bạn có thể chỉnh sửa câu hỏi của bạn để bao gồm các nội dung của kịch bản wrapper bạn đang gọi?

(câu trả lời mới vì nó hoàn toàn không liên quan đến ý tưởng noexec trước, và rằng người ta có thể ở lại để tham khảo.)

+0

Bạn da man. Đó chính xác là những gì đã xảy ra. Hệ thống đã bị nhầm lẫn và cố gắng thực thi một thư mục thay vì một tệp. Lưu ý rằng nếu cấu trúc của tôi đã được chứng minh bằng đạn ở nơi đầu tiên thì hệ thống sẽ không bị nhầm lẫn. Máy chỉ làm những gì chúng ta bảo họ làm! Cảm ơn một triệu lần moocha. – Lancelot

+0

Đừng đề cập đến nó, vui mừng khi có thể giúp đỡ. –

+0

+1 để phân tích cú pháp thiên tài của câu hỏi :) –

0

bạn cũng có thể đã cấp thực hiện kịch bản để wrapper của bạn

chmod + x wrapper.sh

EDIT: tôi chỉ nhận thấy rằng wrapper.sh của bạn nằm ở thư mục MyApp bạn /EDIT

cũng có, nếu u chắc chắn rằng bạn có

#!/bin/sh 

ở đầu file sh, bạn có thể thực hiện nó như thế này:

.wrapper.sh

+0

Hi Roy, khi tôi làm ls -Al đây là những gì nó in cho wrapper của tôi.sh: -rwxrwxrwx 1 user1 user1 19035 2009-04-07 15:32 wrapper.sh – Lancelot

+0

chmod với = là khá chấp nhận được, nó đã được thiết lập bit thực thi. – paxdiablo

0

Đầu tiên, hãy thử mở nó trong một trình soạn thảo văn bản, để chắc chắn rằng bạn đã đọc truy cập. Nếu vậy, làm

chmod +x wrapper.sh 

Và chắc chắn rằng bạn có #!/bin/sh vào đầu của kịch bản

+0

Xin chào Zifre, #!/Bin/sh ở đó tôi vừa kiểm tra. – Lancelot

5

Các hệ thống tập tin lưu trữ script của bạn có thể được gắn kết với noexec cờ. Kiểm tra/etc/fstab của bạn cho rằng hệ thống tập tin và nếu có một noexec có thử gỡ bỏ sau đó nó remounting rằng hệ thống tập tin qua mount /path/to/mountpoint -o remount

Ngày nghĩ thứ hai, kiểm tra kết xuất của lệnh mount cho trường hợp noexec thay vì/etc/fstab (hệ thống tệp có thể đã được gắn động.)

+0

không có tùy chọn "noexec" trên bất kỳ hệ thống tệp nào. Nhưng cảm ơn vì đã chỉ ra tệp đó, thật hữu ích khi biết thông tin đó ở đâu. – Lancelot

+0

Đây là một cài đặt rất thẳng về phía trước của Ubuntu. Không có gì được gắn sau khi khởi động. Ổ đĩa và cdrom được gắn tự động khi hệ thống khởi động. – Lancelot

0

Bạn có thể cố gắng thực hiện các tập tin đó đã có trong thư mục chính của người dùng khác, bạn có thể cho phép người dùng "user"

chmod -R a + x/home/user1 hoặc chmod -R o + x/home/user1 chmod -R g + x/home/user1

0

Mặc dù vấn đề của tôi hơi khác so với nhiệm vụ này ion xuất hiện trong tìm kiếm của tôi vài lần trong khi tìm kiếm vấn đề tương tự vì vậy tôi sẽ đăng những phát hiện của tôi ở đây.

Vấn đề của tôi là tôi không thể truy cập bộ nhớ/thư mục sau lệnh chmod.

Sau khi thực hiện lệnh:

sudo chmod -755 storage -R //notice -755 is wrong, it should be 755 

tôi không thể truy cập lưu trữ/thư mục nữa.

Tôi đã thử ls -l:

storage permissions d---------

Cũng sau git status:

storage/.gitignore: Permission denied

Sau khi thực hiện lệnh ngay:

sudo chmod 755 storage -R // without - 

e mọi thứ trở lại bình thường.

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