ユーザーAがfile.txtを所有している場合、ユーザーAはルートアクセスなしでファイルの所有権をユーザーBに変更できますか?ユーザーAとしてchown B file.txtを実行すると、Operation not allowedエラーが表示されます。ユーザーAはファイルを所有しているため、所有権を変更できるはずですが、その方法はわかりません。助けてくれてありがとう!
ユーザーAがfile.txt
を所有している場合、ルートアクセス/ Sudo許可なしではfile.txt
の所有権を変更できません。これは機能であり、バグではありません。そして、長老たちがこの機能を導入することを選んだ多くの理由の1つは、 roadmr による質問へのコメントで説明されています
ボトムライン:root/Sudoパーミッションのないファイルの所有者であれば、chmod
を使用してファイルのパーミッションを変更できますが、 root/Sudo権限のないファイルの所有者であっても、ファイルの所有者(ユーザーまたはグループ(chown
またはchgrp
のいずれかを使用)を変更することはできません。これは機能であり、バグではありません。
ユーザーBにアクセスできる場合は、Bとしてログインしたままファイルをコピーできます。ユーザーAにもアクセスできる場合は、ログインして元のファイルを削除できます。最後に、コピーされたファイルの名前を元の名前(再びB)に変更します。これにより、異なるユーザーが所有する本質的に同じファイルが残ります。
明らかに同じファイルではありませんが、ファイルの内容のみを気にする場合、これはトリックです
Sudoを使用せずに、ファイルまたはフォルダーの所有権を変更できます。ただし、Thingに対する読み取り/書き込み権限があり、任意のユーザーではなく所有者をYOUにのみ変更できます。トリックは、それが何であれ単純にコピーし、オリジナルを削除してから、コピーをその場所に移動することです。残念ながら、これにはすべての完全なコピーが含まれますが、あなたは何をしますか。
例えば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