cpがsource属性を設定せずに-pで失敗するのはなぜですか?

cpがsource属性を設定せずに-pで失敗するのはなぜですか?

次のファイルがあります。

-rw-rw-r-- 1 root   adm    0 Jun 22 11:25 a
-rw-rw-r-- 1 wilmes wilmes 0 Jun 22 11:23 b

ユーザーwilmesでaにbをcpしたときにaの元の所有者(ルート)を維持するのはなぜですか?

私はこのコマンドを使用します(エイリアスなし):cp ba

-pを使用するとcp -pbaコマンドが失敗するのはなぜですか?

cp: preserving times for 'a': Operation not permitted

私はext4を使用してUbuntu 17.04でこれを見つけました。ユーザー wilmes は adm グループのメンバーであり、ここに含まれるディレクトリは次のとおりです。

drwxrwxr-x 2 wilmes wilmes 4,0K Jun 22 12:09 ../user/

最も重要なのは、この記録はどこにありますか?

ベストアンサー1

ターゲット(a)ファイルの所有者である必要があり、cpがデフォルトのUNIXセキュリティを無視しないため、失敗します。ユーザーは自分のファイルwilmes -> wilmesを保持できますが、他のユーザーに対してはそうすることはできず、rootユーザーに対しては確かにそうではありません。私はあなたがルートやウィルムでログインしていないと仮定します。

この場合、あるファイルは root が所有し、もう一方のファイルは wilmes が所有します。保存するには、以下を実行する必要があります。

sudo cp -p b a

関連リンク:

例:

ルート用のファイルaと標準ユーザー(joe)用のファイルbを作成します。

joe@testbed:~/tmp2$ sudo touch a
joe@testbed:~/tmp2$ touch b

権限が正しいことを確認してください。

joe@testbed:~/tmp2$ ls -l
total 0
-rw-r--r-- 1 root    root    0 Jun 22 13:51 a
-rw-r--r-- 1 joe     joe     0 Jun 22 13:51 b

ユーザーが所有しているファイルbをrootが所有するファイルにコピーしてみてください(これは権限に違反します)。

joe@testbed:~/tmp2$ cp -p b a
cp: cannot create regular file 'a': Permission denied

権限を維持しながらrootとして繰り返します。

joe@testbed:~/tmp2$ sudo cp -p b a
joe@testbed:~/tmp2$ ls -l
total 0
-rw-r--r-- 1 joe joe 0 Jun 22 13:51 a
-rw-r--r-- 1 joe joe 0 Jun 22 13:51 b

注:権限が拒否されました。いいえ許可されていない操作。ユーザーウィルムはグループを介してファイルにアクセスできるため、許可されていないことがわかります。所有者だから、彼らはそれを完全に覆うことはできません。

論理的に他のユーザー(ルート)に属するファイルを交換し、システムにそのファイルの所有者を作成するように要求することは、致命的なセキュリティ上の欠陥になる可能性があります。

たとえば、長い間通常のユーザーとしてアクセスし、malicious.username01crontabをrootに属するntpのようなものに置き換えたい場合はどうすればよいですか?あなたがやろうとしていることが成功した場合、私は自分の悪意のあるバージョンを書いて、単にcp -p my-malicious-script /etc/cron.daily/ntp...残念です。本当に本当にひどいです。

おすすめ記事