2013-06-13 29 views
11

Tôi phải thay đổi quyền của thư mục htdocs trong apache thành một nhóm nhất định và với một số đọc/ghi/thực thi nhất định.Linux: Chỉ đặt quyền cho các thư mục

Các thư mục cần phải có 775 điều khoản và các tập tin cần phải có 664.

Nếu tôi làm một đệ quy 664 đến htdocs, sau đó tất cả các file và thư mục sẽ thay đổi để 664.

I don' t muốn thay đổi các thư mục theo cách thủ công.

Có cách nào để chỉ thay đổi tệp hoặc thư mục không?

Trả lời

17

Sử dụng tìm của -type tùy chọn để hạn chế hành động của các tập tin và thư mục. Sử dụng tùy chọn -o để chỉ định các hành động thay thế cho các loại khác nhau, do đó bạn chỉ phải chạy find một lần, thay vì riêng cho từng loại.

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} + 
+2

Thà sử dụng 'chmod' được xây dựng trong hỗ trợ. Xem [Gordon Davisson's] (http://stackoverflow.com/a/17091413/538512) trả lời dưới đây –

3

Sử dụng find để tìm kiếm danh bạ và áp dụng chmod trên chúng:

find -type d | xargs chmod 775 

Sử dụng loại f cho file:

find -type f | xargs chmod 775 
0

thử:

find htdocs -type d -exec chmod 775 {} + 
+0

Điều này đặt quyền thư mục, nhưng không cho phép quyền đối với tệp. – Barmar

31

chmod thực sự có thể làm được điều này bản thân; sự cho phép tượng trưng X có nghĩa là "thực thi, nếu nó có ý nghĩa", thường có nghĩa là trên các thư mục chứ không phải các tệp. Vì vậy, bạn có thể sử dụng:

chmod -R u=rwX,go=rX /path/to/htdocs 

Vấn đề tiềm năng duy nhất là nếu bất kỳ tập tin đơn giản đã có thực hiện bộ, chmod giả định đó là cố ý và giữ nó.

+2

Câu trả lời hay nhất cho đến nay, nếu bạn có đủ thư mục đệ quy, 'xargs' sẽ thất bại sau cùng. kiểm tra [trang người đàn ông] (http://ss64.com/bash/chmod.html) để biết thêm thông tin –

+3

điều này xứng đáng với dấu kiểm 'trả lời' – Pankrates

+0

@Pankrates - chính xác –

1

Gordon của câu trả lời trên là chính xác, nhưng nếu bạn đang cố gắng để khóa xuống truy cập vào một cây thư mục, nó để lại kịch bản được thực thi cho chủ sở hữu cũng thực thi bất cứ ai đã được cấp X. vốn

Sử dụng

find -type d exec chmod 775 {} + 

hoặc

find -type d exec chmod 755 {} + 

là an toàn hơn.

0

tôi sử dụng một cái gì đó tương tự như giải pháp được cung cấp bởi Gordon:

chmod -R ug=rw,o=r,a+X /path/to/folder/ 

Nó nên luôn đặt 775 cho các thư mục và 664 cho các tập tin, ngay cả khi được sự cho phép thực hiện được previosly thiết đối với một số tập tin