Bản vá mà không thay đổi chủ sở hữu và nhóm


7

Tôi đã có một tệp thuộc sở hữu của người dùng không phải root:

# ls -l example.php
-rw------- 1 foo bar ... example.php

Tôi chỉ áp dụng một bản vá với một lệnh như

patch -p0 <<-EOF
--- .../example.php.orig 2012-06-20 15:07:13.000000000 +0200
+++ .../example.php  2012-06-20 15:43:05.000000000 +0200
...
EOF

như root và nhóm người dùng và nhóm mục tiêu đều được thay đổi thành root. Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào trong mantrang này.

Có cách nào để rời khỏi quyền sở hữu tập tin như trước đây mà không sử dụng su, sudohoặc chown?

  • su dường như không thể chỉ định một nhóm.
  • sudo -u foo patch ... chạy tốt, nhưng đặt nhóm sai.
  • sudo -u foo -g bar patch ...trả lại Sorry, user root is not allowed to execute '/usr/bin/patch' as foo:bar on hostname. Điều này có thể là do người dùng fookhông phải là thành viên của nhóm bar.
  • chownsẽ có nghĩa là phải lưu trữ các quyền trước khi chạy patch, thêm hai dòng mã khác.

Bạn có thể hiển thị một ví dụ với quyền sở hữu tệp và lệnh chính xác mà bạn chạy không? Tôi hơi ngạc nhiên khi thấy rằng người dùng root không được phép thực thi ... như foo. Điều đó sẽ chỉ ra rằng bạn đã đăng nhập bằng root và sau đó thực thi sudo. Thông thường bạn chạy sudo để đạt được các đặc quyền nâng cao. Vì vậy, để giúp bạn, chúng tôi cần biết ai sở hữu tệp, ai đang thực hiện lệnh vá, v.v.
Bram

@Bram: Làm rõ câu hỏi.
l0b0

Câu trả lời:


8

patch tạo tập tin mới, đó là lý do tại sao nó giữ thông tin người dùng hiệu quả.

Một cách giải quyết: sử dụng patch -ođể tạo tệp tạm thời, sau đó chỉ cần cattệp tmp thành tệp gốc.

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.