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!


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,

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.


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,


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ę


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.