Điểm:0

cấp cho chủ sở hữu chương trình quyền truy cập tệp cũng như quyền truy cập tệp người dùng

lá cờ us

Tôi có một tệp thực thi (được tạo từ mã python) mà tôi cần nó để truy cập tệp do tôi tạo cũng như tệp do người chạy tệp thực thi tạo. Tôi là không được phép thay đổi quyền của các tập tin.

Đây là một ví dụ:
user1 là chủ sở hữu của tệp thực thi và user1_file
user2 là chủ sở hữu của user2_file user2 dự kiến ​​​​sẽ chạy tệp thực thi

>>> ls -al
drwxr-xr-x 12 người dùng1 nhóm1 4096 ngày 2 tháng 1 13:48 có thể thực thi được
-rw------- 1 người dùng1 nhóm1 272 ngày 14 tháng 2 14:32 user1_file
-rw------- 1 user2 group2 272 Ngày 14 tháng 2 14:32 user2_file

Đây là những gì tôi đã cố gắng

  1. trực tiếp chạy như user2:
    không thành công vì anh ta không có quyền đọc đối với user1_file
  2. đặt suid để thực thi và sau đó chạy dưới dạng user2:
    nó đọc thành công user1_file nhưng không đọc được user2_file
  3. cập nhật mã python để thực thi os.system('chmod u-s executable') trước khi truy cập user2_file:
    hoạt động này không được phép.Ngay cả khi nó được cho phép, tôi sẽ lo lắng về cách thêm lại suid trong khi chương trình hiện đang chạy với quyền user2.

Có thể có một số phương pháp để cho phép cả quyền user1 và user2 đối với tệp thực thi không? hoặc có thể là một cách tạm thời dừng quyền của user1?

pLumo avatar
lá cờ in
Bạn cần sửa lỗi này: "*Tôi **không được phép thay đổi quyền** của tệp.*".Bạn không thể "cấp cho chương trình" quyền truy cập tệp, bạn cấp cho người dùng quyền truy cập.
raj avatar
lá cờ cn
raj
Ai đã nói rằng bạn "không được phép thay đổi quyền của tệp"? Đó là chính bạn hay một số người khác? Dù sao đi nữa, người này không biết cách thức hoạt động của các quyền và suy nghĩ của họ đi theo hướng hoàn toàn ngược lại. Nếu cả hai tệp thuộc về những người dùng khác nhau và chúng chỉ có quyền được đặt cho chủ sở hữu (như trong trường hợp của bạn), thì không có khả năng bất kỳ người dùng nào (ngoại trừ root) có thể truy cập cả hai tệp. Giai đoạn = Stage. Bạn **cần** thay đổi quyền của các tệp, nếu không, bạn cần chạy ứng dụng của mình với quyền root.
lá cờ us
Tôi là người dùng1. vì vậy, về mặt kỹ thuật, tôi chỉ có thể thay đổi quyền cho user1_file. Tuy nhiên, user1_file chứa thông tin mà tôi không muốn chia sẻ với bất kỳ ai
Điểm:0
lá cờ us

Các bước giải quyết vấn đề của tôi

  1. thêm dòng sau vào mã python os.seteuid(os.getuid()) trước khi đọc user2_file
  2. tái tạo tệp thực thi
  3. đặt suid cho tệp thực thi chmod u+s có thể thực thi được

Thêm chi tiết
Ý tưởng chính là thay đổi uid hiệu quả của quy trình thành uid thực

Tìm hiểu về quy trình linux uid/gid tình cảm, thực và lưu: Cái này liên kết đã giúp tôi
thay đổi uid/guide hiệu quả khi cần. Cái này câu hỏi có thể hữu ích

raj avatar
lá cờ cn
raj
Tại sao làm cho nó phức tạp như vậy, nếu cách thích hợp chỉ là đặt quyền cho tệp một cách chính xác?
lá cờ us
Đã trả lời trong một bình luận về chính câu hỏi

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.