rm: tidak dapat menghapus direktori /: Izin ditolak

16

Saya membuat direktori yang disebut "shadi" dan mengatur izin ini untuk itu

sinoosh@ubuntu:/home$ ls -ld shadi
drwxr-xrwx 2 root root 4096 Jul  1 01:58 shadi

Dalam situasi ini saya memiliki izin "orang lain", tetapi mengapa saya tidak bisa menghapusnya?

sinoosh@ubuntu:/home$ rm -r shadi/
rm: cannot remove ‘shadi/’: Permission denied
Sinoosh
sumber

Jawaban:

25

Di sini masalahnya adalah Anda tidak memiliki izin "w" pada /homedirektori. Saat menghapus catatan file bahwa Anda tidak menulis ke file itu tetapi Anda mengubah isi direktori yang berisi file tersebut, jadi memiliki izin "w" pada direktori adalah suatu keharusan jika Anda ingin menghapus file apa pun dari direktori.

tangkapan layar terminal "ls -ld / home"

Jika saya berada di direktori dengan izin "w", saya dapat menghapus semua file-nya tanpa khawatir tentang izin file itu sendiri. Perhatikan bahwa direktori saya saat ini adalah /home/rohithyang memiliki izin "w" dan karenanya saya dapat menghapus semua file-nya terlepas dari izin file.

tangkapan layar terminal untuk menghapus / home / rohith / shadi

Jika file yang sama dibuat di direktori '/ home' yang tidak memiliki izin "w", saya mendapatkan output yang sama seperti milik Anda! :)

tangkapan layar terminal mencoba menghapus / home / shadi

rohith
sumber
8

Ini terjadi karena Anda tidak memiliki direktori, direktori ini dimiliki oleh grup 'root' dan 'root'. Jadi untuk menghapusnya, Anda dapat mengubah kepemilikan dan kemudian menghapusnya (di sini Anda meningkatkan hak Anda dan menjadi 'root' untuk mengambil kepemilikan):

sudo chown $USER:$USER ./shadi
rm -r ./shadi

Atau Anda lewati mengambil kepemilikan dan membuat sudo rmuntuk meningkatkan hak-hak Anda dan menjadi 'root' untuk penghapusan:

sudo rm -r ./shadi
Videonauth
sumber
itu artinya hanya pemilik yang dapat menghapus file?
Sinoosh
Ya, atau Anda perlu meningkatkan hak Anda dengan sudoperintah. ini akan meminta kata sandi Anda kemudian dan Anda menjadi 'root' untuk perintah berikut ini.
Videonauth
apakah Anda sekarang jika "shadi" adalah file yang bisa saya hapus dengan pengguna "sinoosh". itu tidak memerlukan "sudo" itu tidak membuat heboh bagi saya mengapa itu tidak bekerja dengan direktori
Sinoosh
5

Coba ini:

sudo rm -r ./shadi

Izin menunjukkan root pemilik dan root grup, jadi Anda harus menggunakan sudo.

Bruni
sumber
1
Ya perintah ini ok, tapi masalah saya adalah mengapa rm tidak bekerja dengan izin ini. Saya memiliki izin penuh untuk direktori ini di bidang lain
Sinoosh
"Saya punya izin penuh untuk direktori ini" Tidak, Anda tidak. "bidang lain" shadi bukan "orang lain".
Rinzwind
tapi "sinoosh" adalah milik orang lain dan dia mengeksekusi "rm -r shadi"
Sinoosh
0

Itu akun yang berbeda.

Bagaimana Anda mengharapkan keamanan dari akun Anda, jika semua orang memiliki izin untuk menghapus direktori home Anda?

Anda tidak memiliki wizin untuk menghapus direktori home orang lain secara default, kecuali jika chmod +witu.

Berikut adalah berbagai izin, dan contoh ( -rwxr-x---/ rwxrx):

+ - + - + - + - +
| + | u | g | o |
+ - + - + - + - +
| r | 1 | 1 | 1 |
+ - + - + - + - +
| w | 2 | 2 | 2 |
+ - + - + - + - +
| x | 4 | 4 | 4 |
+ - + - + - + - +
| * | 7 | 5 | 0 |
+ - + - + - + - +
Bunyinya seperti ini: 1 + 2 + 4 = 7, 1 + 4 = 5, 0 = 0, jadi 750, yaitu sistem izin yang ideal. Pemilik ( udalam hal ini) dapat membaca, menulis, dan mengeksekusi file, grup pemilik ( gdalam hal ini) dapat membaca dan mengeksekusi, dan siapa pun lainnya ( odalam hal ini) tidak dapat melakukan apa pun. Ini yang legendaris:
u: pengguna saat ini (Pengguna)
g: grup pengguna saat ini (Grup)
o: bukan grup pengguna saat ini (Lainnya)
r: baca izin (Baca)
w: tulis izin (Tulis)
x: mengeksekusi izin (X-ecute)
.

EKons
sumber