ユーザーAがfile.txtを所有している場合、ユーザーAはルートアクセスなしでファイルの所有権をユーザーBに変更できますか?ユーザーAとしてchown B file.txtを実行すると、Operation not allowedエラーが表示されます。ユーザーAはファイルを所有しているため、所有権を変更できるはずですが、その方法はわかりません。助けてくれてありがとう!
ユーザーAがfile.txtを所有している場合、ユーザーAはルートアクセスなしでファイルの所有権をユーザーBに変更できますか?ユーザーAとしてchown B file.txtを実行すると、Operation not allowedエラーが表示されます。ユーザーAはファイルを所有しているため、所有権を変更できるはずですが、その方法はわかりません。助けてくれてありがとう!
回答:
ユーザーAがを所有している場合、ルートアクセス/ sudo許可なしでfile.txt
所有者を変更することはできませんfile.txt
。これは機能であり、バグではありません。そして、長老たちがこの機能を入れることを選んだ多くの理由の1つは、roadmrによるあなたの質問へのコメントで説明されています
結論:ファイルchmod
の所有者がroot / sudo許可なしでファイルの所有者であるが、ユーザーまたはグループ(chown
またはを使用chgrp
)の所有権を変更できない場合でも、ファイルの許可を変更できますroot / sudo許可のないファイルの所有者。これは機能であり、バグではありません。
touch t; ls -l t; chgrp lpadmin t; ls -l t
(lpadminグループに属していると仮定)。私の答えとリンクされた質問もご覧ください。
いいえ、ファイルの所有者をアクセスなしに変更することはできませんが、ファイルを所有している場合は、ファイルのアクセス許可を変更できchmod
、グループをchgrp
メンバーの別のグループに変更できます。
モノに対する読み取り/書き込み権限がある限り、sudoを使用せずにファイルまたはフォルダーの所有権を変更できます。所有者を変更できるのは、任意のユーザーではなく、あなただけです。秘Theは、それが何であれ単純にコピーし、オリジナルを削除してからコピーをその場所に移動することです。残念ながら、これにはすべての完全なコピーを作成する必要がありますが、何をしますか。
例: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