Czy można zmienić własność pliku bez dostępu użytkownika root?

21

Jeśli użytkownik A jest właścicielem pliku.txt, czy użytkownik A może zmienić własność pliku na użytkownika B bez dostępu użytkownika root? Kiedy uruchamiam Chown B file.txt jako użytkownik A, pojawia się błąd operacji niedozwolony. Wydaje mi się, że skoro użytkownik A jest właścicielem pliku, powinien mieć możliwość zmiany właściciela, ale nie widzę sposobu, aby to zrobić. Dzięki za pomoc!

Daniel
źródło
4
Możesz umieścić obciążające dane w pliku i zmienić jego własność, aby kogoś oprawić :) Myślę, że to jeden argument przeciwko dopuszczeniu tego, co sugerujesz.
roadmr
1
Mały dodatek: AFAIU ty może zmienić grupę posiadającą pliku, że jesteś właścicielem, pod warunkiem, że jesteś członkiem grupy Zmieniasz się .
Matthijs Kooijman,
powiązane: unix.stackexchange.com/questions/27350/...
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

7

Jeśli użytkownik A jest właścicielem file.txt, nie może zmienić właściciela file.txtbez uprawnień dostępu root / sudo. To jest funkcja, a nie błąd. I jeden z wielu powodów, dla których starsi zdecydowali się na włączenie tej funkcji, został wyjaśniony w komentarzu do twojego pytania przez roadmr

Dolna linia: Można zmienić uprawnienia do pliku przy użyciu chmodjeśli jesteś właścicielem tego pliku bez uprawnień root / sudo, ale nie można zmienić właściciela albo użytkownika lub grupę (przy użyciu albo chownalbo chgrp), pliku, nawet jeśli są właściciel pliku bez uprawnień root / sudo. To jest funkcja, a nie błąd.

Nitin Venkatesh
źródło
2
Część tego źle. Użytkownicy inni niż root mogą zmieniać grupę innych grup, których są członkami. Spróbuj touch t; ls -l t; chgrp lpadmin t; ls -l t(Zakładając, że jesteś w grupie lpadmin). Zobacz także moją odpowiedź i powiązane pytanie.
Mark Stosberg
1
Starsi źle to zrozumieli. Jeśli jestem użytkownikiem A i im również użytkownikiem B, powinienem móc zmienić własność z A na B, jeśli jestem zalogowany jako A i mam również hasło B lub odwrotnie.
aishu
@ aishu Zasadniczo możesz to zrobić, kopiując plik jako B, a następnie usuwając go jako A. Nie jest to jednak bardzo praktyczne w przypadku dużych plików.
Holger Böhnke,
4

Nie, nie możesz zmienić właściciela pliku bez dostępu, ale jeśli jesteś właścicielem pliku, możesz zmienić uprawnienia do pliku chmodi możesz zmienić grupę chgrpna inną, do której należysz.

Powiązane pytanie: chown jest uprawniony do użytkownika innego niż root?

Mark Stosberg
źródło
2

jeśli masz dostęp do użytkownika B, możesz po prostu skopiować plik podczas logowania jako B. Jeśli masz również dostęp do użytkownika A, możesz zalogować się i usunąć oryginalny plik. I wreszcie zmień nazwę skopiowanego pliku na pierwotną nazwę (ponownie jako B), pozostawiając w zasadzie ten sam plik, którego właścicielem jest inny użytkownik.

Oczywiście nie jest to SAMY plik, ale jeśli zależy ci tylko na zawartości pliku, to załatwia sprawę

kuvic
źródło
1

Możesz zmienić własność pliku lub folderu bez sudo, o ile masz uprawnienia do odczytu / zapisu i możesz zmienić właściciela tylko na TY, a nie na dowolnego użytkownika. Sztuką jest po prostu skopiowanie, co to jest, usunięcie oryginału, a następnie przeniesienie kopii na swoje miejsce. Niestety wymaga to zrobienia pełnej kopii wszystkiego, ale co robisz.

np. 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
Scott
źródło