次のファイルがあります。
-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.username01
crontabをrootに属するntpのようなものに置き換えたい場合はどうすればよいですか?あなたがやろうとしていることが成功した場合、私は自分の悪意のあるバージョンを書いて、単にcp -p my-malicious-script /etc/cron.daily/ntp
...残念です。本当に本当にひどいです。