ユーザーの1人が誤っていくつかのシステムディレクトリ(/ libなど)を自分のホームディレクトリにコピーするコマンドを使用しましたが、cp -r /lib .
その後そのディレクトリを削除できませんでした。このコマンドは、rm -rf ./lib
「権限が拒否されました」(ファイルごとに1つ)というエラーのリストを返します。コピーと削除コマンドに同じユーザー名が使用されており、その間に何らかの権限の変更が発生していないと確信しています。
おそらくroot権限でこのディレクトリを削除することができますが、なぜこれが起こるのか知りたいのですが。これは私たちが使っているCentos 6.8のバグですか?それとも、ユーザーが自分のホームディレクトリに作成したディレクトリを削除できないのはなぜですか?
答え1
cp -r
デフォルトのコピー権限モード。したがって、/lib
所有者が書けない場合は./lib
書くこともできません。書き込み不可能なディレクトリの内容を削除しようとすると、そのディレクトリの所有者であっても拒否されます。修理権限を使用できますchmod -R u+w ./lib
。
以下はデモです:
barmar@dev:~/test.dir$ mkdir subdir
barmar@dev:~/test.dir$ touch subdir/foo
barmar@dev:~/test.dir$ chmod a-w subdir
barmar@dev:~/test.dir$ cp -r subdir newsubdir
barmar@dev:~/test.dir$ rm -rf newsubdir
rm: cannot remove `newsubdir/foo': Permission denied
barmar@dev:~/test.dir$ chmod a+w newsubdir
barmar@dev:~/test.dir$ rm -rf newsubdir
barmar@dev:~/test.dir$