Có thể thay đổi quyền sở hữu một tập tin mà không cần quyền truy cập root?


21

Nếu Người dùng A sở hữu file.txt, Người dùng A có thể thay đổi quyền sở hữu tệp thành Người dùng B mà không cần quyền truy cập root không? Khi tôi chạy file.txt chown B với tư cách là người dùng A, tôi nhận được một lỗi Hoạt động không được phép. Dường như với tôi rằng vì Người dùng A sở hữu tệp, họ phải có thể thay đổi quyền sở hữu, nhưng tôi không thấy cách nào để làm điều đó. Cảm ơn đã giúp đỡ!


4
Bạn có thể đặt dữ liệu liên quan vào một tệp và thay đổi quyền sở hữu của nó thành khung cho ai đó :) Tôi đoán đó là một đối số chống lại việc cho phép những gì bạn đề xuất.
roadmr

1
Ngoài nhỏ: AFAIU bạn có thể thay đổi nhóm sở hữu của một tập tin mà bạn sở hữu, với điều kiện là bạn là một thành viên của nhóm bạn đang thay đổi để .
Matthijs Kooijman

Câu trả lời:


7

Nếu Người dùng A sở hữu file.txt, anh ta không thể thay đổi quyền sở hữu file.txtmà không có quyền truy cập / sudo gốc. Đây là một tính năng và không phải là một lỗi. Và một trong nhiều lý do tại sao những người lớn tuổi chọn đưa tính năng này vào, đã được giải thích trong một nhận xét cho câu hỏi của bạn bằng roadmr

Dòng dưới cùng: Bạn có thể thay đổi quyền của tệp bằng cách sử dụng chmodnếu bạn là chủ sở hữu của tệp đó mà không có quyền root / sudo nhưng bạn không thể thay đổi quyền sở hữu, dù là người dùng hoặc nhóm (sử dụng chownhoặc chgrp), của tệp ngay cả khi bạn là chủ sở hữu của tập tin mà không có quyền root / sudo. Đây là một tính năng và không phải là một lỗi.


2
Một phần của sai này. Người dùng không root có thể thay đổi nhóm các nhóm khác mà họ là thành viên. Hãy thử touch t; ls -l t; chgrp lpadmin t; ls -l t(Giả sử bạn thuộc nhóm lpadmin). Xem thêm câu trả lời của tôi và câu hỏi liên kết.
Mark Stosberg

1
Những người lớn tuổi đã hiểu sai. Nếu tôi là người dùng A và tôi cũng là người dùng B, thì tôi có thể thay đổi quyền sở hữu từ A thành B, nếu tôi đăng nhập là A và tôi cũng có mật khẩu của B hoặc ngược lại.
aishu

@aishu Về nguyên tắc bạn có thể làm điều đó bằng cách sao chép tệp dưới dạng B sau đó xóa nó thành A. Không thực tế cho các tệp lớn.
Holger Böhnke

4

Không, bạn không thể thay đổi chủ sở hữu một tệp mà không có quyền truy cập, nhưng nếu bạn sở hữu tệp, bạn có thể thay đổi quyền của tệp đó chmodvà có thể thay đổi nhóm với chgrpmột nhóm khác mà bạn là thành viên.

Câu hỏi liên quan: chown được phép cho người dùng không root?


2

nếu bạn có quyền truy cập vào người dùng B, bạn chỉ có thể sao chép tệp trong khi đăng nhập là B. Nếu bạn cũng có quyền truy cập vào người dùng A, thì bạn có thể đăng nhập và xóa tệp gốc. Và cuối cùng đổi tên tệp đã sao chép, thành tên gốc (một lần nữa là B), để lại cho bạn cùng một tệp, thuộc sở hữu của một người dùng khác.

Rõ ràng không phải là tệp CÙNG, nhưng nếu bạn chỉ quan tâm đến nội dung của tệp, thì đây là mẹo


1

Bạn có thể thay đổi quyền sở hữu tệp hoặc thư mục mà không cần sudo, miễn là bạn có quyền đọc / ghi đối với nội dung đó và bạn chỉ có thể thay đổi chủ sở hữu thành BẠN chứ không phải người dùng tùy ý. Mẹo nhỏ là chỉ cần sao chép bất cứ thứ gì, xóa bản gốc sau đó di chuyển bản sao của bạn vào vị trí của nó. Thật không may, điều này liên quan đến việc tạo một bản sao đầy đủ của tất cả mọi thứ, nhưng bạn làm gì.

ví dụ: chuser.sh:

#!/bin/bash

TMP="some_temporary_filename_this_is_dumb"

RECURSIVE=""
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -r|--recursive)
    RECURSIVE="-r"
    shift # past argument
    ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift # past argument
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

cp -d --preserve=all $RECURSIVE $1 $TMP || exit 1
rm $RECURSIVE $1
mv $TMP $1
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.