Unix: Làm thế nào tôi có thể chỉ cho phép một người xem thư mục của mình trong cùng một fs?


9

Tôi muốn cung cấp quyền truy cập vào một thư mục cho một người bạn. Anh ta có quyền truy cập vào hệ thống tập tin, nơi đặt thư mục. Tôi không muốn đặt quyền cho tất cả người dùng. Làm thế nào tôi chỉ có thể cho phép một người để xem thư mục? Không ai trong chúng ta là một siêu người dùng.

[THÁCH THỨC BOUNTY] Không có câu trả lời nào hoạt động, sử dụng Ubuntu:

Cách tiếp cận của jamuraa không hoạt động

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. Cách tiếp cận của nik không hoạt động: không thể truy cập tệp không tồn tại

3. Cách tiếp cận của ba không hoạt động: Tôi không thể tạo nhóm, không phải root.

4. Cách tiếp cận của ToK không hoạt động, người dùng ở hai nhóm: "người dùng" và "trường"

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

1
Sẽ rất hữu ích nếu bạn đưa ra một hướng dẫn về cách các câu trả lời này gây ra vấn đề cho bạn - sẽ đưa ra định nghĩa vấn đề tốt hơn để hình thành các tùy chọn khác.
nik

nik: Đã thêm hồ sơ lỗi.

Câu trả lời:


12

Chỉ với các quyền UNIX thông thường (người dùng, nhóm, mọi người), bạn không thể thực hiện việc này một cách dễ dàng. Nếu bạn không cần truy cập vào thư mục nữa, bạn có thể thay đổi chủ sở hữu của thư mục thành bạn bè của mình, điều này hợp lệ trên một số Unice, nhưng hầu hết trong số họ thì không.

Tuy nhiên - nếu bạn đã bật ACL trên Linux, bạn có thể thực hiện việc này nếu bạn là chủ sở hữu của tệp. Chỉ cần chạy lệnh setfacl -m user:friend:rwx filenametrong đó friend là tên tài khoản của bạn của bạn và tên tệp là tệp. Bạn có thể kiểm tra xem nó đã có hiệu lực bằng cách chạy chưa getfacl filename, bạn sẽ thấy bộ ba user:friend:rwxtrong danh sách. Tôi chưa thấy quá nhiều hệ thống Linux có bật ACL.


ACL là giải pháp chuẩn cho vấn đề này, giả sử rằng hệ thống tập tin của bạn đã kích hoạt chúng.
Ryan C. Thompson

HHH dường như nói rằng điều này sẽ không hoạt động. Tôi nghĩ rằng nó sẽ, trừ khi vì một số lý do kỳ lạ ACL không được kích hoạt. HHH, những gì cho?
pboin

pboin: phương pháp này không hoạt động nên rõ ràng lý do có thể là ACL không được kích hoạt hoặc s / điều khác, không chắc chắn.

11

Đây là một cái gì đó chúng tôi đã thảo luận trở lại ở trường.
Đi đại khái như thế này,

  1. Tạo một thư mục (có tên data, để tham khảo ở đây)
    • thay đổi quyền là " chmod 711 data"
    • nhóm và những người khác chỉ có x- truy cập để vào thư mục
    • họ không thể liệt kê thư mục
    • Bây giờ, tạo một thư mục difficult-name-here(đây có thể là một chuỗi băm)
    • thay đổi quyền là " chmod a+rx difficult-name-here"
    • nội dung của thư mục này được bảo mật trong khi thư mục bên ngoài không thể được liệt kê
    • những người biết "tên khó" có thể nhảy vào thư mục thứ hai này
      • " cd path/to/data/difficult-name-here"
      • những người khác không thể nhìn thấy tên và không thể truy cập nội dung thư mục
      • Tuy nhiên, rootluôn có thể truy cập mọi thứ (không phải là vấn đề ở đây)
    • chia sẻ difficult-name-herevới những người bạn muốn cung cấp dữ liệu này
    • Giữ các tệp được chia sẻ trong thư mục thứ hai này

Khá thô sơ, nhưng nếu điều này có thể bị phá vỡ mà không bị phá vỡ kiểm soát truy cập unix, tôi muốn biết.


Cập nhật nhận xét từ dmckee,
Đây chính xác là kết luận chúng tôi đã đạt được!
"Bảo mật bằng cách che khuất" có giới hạn an toàn .

Phải nói rằng, khi thiết kế bảo vệ dữ liệu,
điều quan trọng là xác định giá trị của nó.

Bạn nên nhắm mục tiêu cho,

  • Chi phí phá vỡ bảo mật cao hơn,
  • Chi phí nội dung được bảo mật,
  • Theo một yếu tố tỷ lệ thuận với hoang tưởng của bạn

Trong trường hợp này, nếu rootquyết định liệt kê cây thư mục ở đâu đó trong truy cập công cộng,
bí mật của bạn sẽ bị loại bỏ! Nhưng, bạn đang bảo vệ từ gốc hoặc sự vô trách nhiệm tiềm năng của họ?
Nếu đó là trường hợp, bạn có nhiều hơn để lo lắng về sau đó chia sẻ tập tin.


Cập nhật về lưu ý không làm việc trong câu hỏi .
Tôi đã sử dụng điều này trong những ngày đầu của linux để biết rằng nó hoạt động.
Nếu bạn nhận được ' cannot access non-existant file' thay vì 'permissions denied', bạn rất có thể đã mắc lỗi trong chuỗi. Những gì bạn muốn nên trông như thế này,

 755 711 755 bất cứ điều gì - === Quyền truy cập

 BasePath / CoverDir / Obscure / bảo vệFile.txt
          | | ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
          | ^ ^ ^ ^ ^ ^ ^ Tên thư mục đọc truy cập vào
          ^ ^ ^ ^ ^ ^ Công khai chia sẻ với bạn bè. Thư mục tối nghĩa.
                có thể truy cập 
                danh mục.
  1. Nếu bạn đặt ' CoverDir' quyền truy cập là 'rwx--x--x',
    nhóm và những người khác chỉ có thể vào thư mục nhưng không thể đọc nội dung của nó.
  2. Bây giờ, nếu bạn sử dụng tên thư mục tối nghĩa,
    ' Obscure', bên trong nó và cấp quyền truy cập đọc đầy đủ với ' rwxr-xr-x',
    bất kỳ ai biết tên này đều có thể liệt kê nội dung của nó.
  3. Quyền truy cập này sẽ phải được thực hiện từ bên ngoài với ' ls BasePath/CoverDir/Obscure'
    Bởi vì mọi người trong nhóm của bạn và những người khác sẽ không thể ' ls BasePath/CoverDir'.

7
"Nếu điều này có thể bị phá vỡ [...], muốn biết" Chà, đó là một ví dụ điển hình của bảo mật bởi sự tối nghĩa, và do đó rất mong manh. Đừng tin vào điều đó lâu dài. Mặc dù gọn gàng.
dmckee --- ex-moderator mèo con

Nếu kiểm soát truy cập unix của bạn được triển khai một cách an toàn, thì điều này gần như an toàn như cơ sở dữ liệu mật khẩu bị che khuất (hoặc sshkhóa riêng).
nik

5

Ryan đã thực sự đúng 100%, chỉ là lạc hậu. Vì bạn của bạn (có khả năng) có một nhóm duy nhất được liên kết với tên người dùng của anh ấy / cô ấy thay đổi quyền sở hữu nhóm của thư mục được đề cập đến nhóm đó, rất có thể là tên người dùng của bạn bè. Để có thể chia sẻ nội dung giữa hai bạn, bạn nên giữ quyền sở hữu với tư cách là người dùng:

chown -R youruser:friendgroup ~/foo/bar

Sau đó gán quyền thích hợp cho thư mục, tùy thuộc vào quyền truy cập mà bạn muốn người dùng khác có:

chmod -R 770 ~/foo/bar

sẽ cấp cho cả hai bạn toàn quyền truy cập rwx vào thư mục và toàn bộ nội dung của nó.

Xin lưu ý rằng điều này giả định rằng không có người dùng nào khác được thêm vào nhóm của bạn bè bạn. Hệ thống có thể đã không thực hiện nhiệm vụ này, tuy nhiên, như đã đề cập trước đó, người dùng root có thể làm những gì họ chọn. Bạn có thể sử dụng lệnh nhóm để xem từng nhóm mà bạn bè hoặc người dùng tùy ý của bạn thuộc về. Ngoài ra, trừ khi quyền đã được thay đổi vì một số lý do, bạn sẽ có thể xem tệp / etc / nhóm có chứa các bài tập nhóm cho từng nhóm trên hệ thống.


4

Tôi sẽ tạo một nhóm mới cho bạn và bạn của bạn và đặt quyền truy cập thư mục thành đầy đủ cho chủ sở hữu và nhóm cùng với bit setgid cho thư mục.

Nhưng tùy thuộc vào nhu cầu của bạn, bạn cũng có thể phải xem xét việc thay đổi bạn và bạn bè của bạn để nó tự động đặt nhóm có thể thay đổi các tệp mới.

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN

3
Điều này có thể yêu cầu siêu nhân tư nhân mà anh ta không có.
Keck

1
Ồ, tôi hoàn toàn bỏ lỡ dòng đó: x Sau đó tôi thua lỗ. Đoán tôi chỉ cần gửi nó qua thư cục bộ - không phải là giải pháp tốt nhất nhưng ít nhất là tập tin được gửi cho anh chàng kia.
gaqzi

2

Danh sách điều khiển truy cập là cách hoàn hảo để làm điều này.

Tuy nhiên (nếu tôi nhớ chính xác), hệ thống tệp cần được khởi tạo với ACL (ví dụ: "/ dev / sda6 / home ext3 mặc định, acl "), thông qua / etc / fstab và đây là điều mà chỉ siêu người dùng mới có thể làm được. ..


2

RBACS như grsec / selinux là bắt buộc ..


không chắc chắn liệu đây có phải là vấn đề không, bạn có thể thêm một số trích dẫn không?

2

Theo mặc định, mỗi người dùng trên một hệ thống Ubuntu cũng có một nhóm liên kết cùng tên. Vì vậy, nếu bạn có thể thêm bạn bè vào nhóm của mình và sau đó đánh dấu thư mục được đề cập là g+rwx, bạn sẽ được đặt. Tôi mơ hồ nhớ trường hợp sử dụng này được trích dẫn là lý do để tạo một nhóm cho mỗi người dùng.


Thêm người dùng vào các nhóm yêu cầu quyền truy cập root, mà OP cho biết anh ta không có.
Dave Sherohman


2

chưa thử điều này, nhưng làm thế nào về một thư mục có thể đọc được với một không gian người dùng được mã hóa bên trong (ví dụ như bảng mã). Sau đó, bạn có thể chia sẻ mật khẩu đó với bạn bè của mình và không ai khác có thể sử dụng dữ liệu đó (vâng, tôi đoán họ có thể lấy dữ liệu và chạy trình bẻ khóa mật khẩu ngoại tuyến?).


2

Để cung cấp cho Linux cùng một Finesse như các cửa sổ trong các đặc quyền tệp, bạn phải lồng các nhóm. Tạo một nhóm có quyền truy cập vào thư mục của bạn như bạn muốn. Thêm anh ta vào nhóm đó hoặc nhóm anh ta cư trú trong nhóm đó. Ví dụ

/ foo là thư mục bạn muốn chia sẻ. Tạo một nhóm Foogroup có quyền truy cập vào thư mục mong muốn. Thêm nhóm và người dùng vào nhóm này mà bạn muốn có quyền truy cập vào thư mục này.

Thật là một nỗi đau lớn khi có một nhóm cho mỗi thư mục hoặc tệp nhưng đó là cách tốt nhất để hạn chế quyền truy cập ở cùng cấp độ với Windows.


1

Bạn có thể mã hóa thư mục với gpg. Và sau đó cố gắng làm xáo trộn vị trí như cách nik đề xuất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.