`Izin Ditolak` ke CD ke direktori meskipun izin sudah benar


13

Ini sangat aneh. Masuk ke kotak Linux (RHEL) sebagai pengguna 'g', melakukan ls -lahpertunjukan

drwxrwxrwx 6 g    g    4.0K Jun 23 13:27 .
drwxrw-r-x 6 root root 4.0K Jun 23 13:15 ..
-rwxrw---- 1 g    g     678 Jun 23 13:26 .bash_history
-rwxrw---- 1 g    g      33 Jun 23 13:15 .bash_logout
-rwxrw---- 1 g    g     176 Jun 23 13:15 .bash_profile
-rwxrw---- 1 g    g     124 Jun 23 13:15 .bashrc
drw-r----- 2 g    g    4.0K Jun 23 13:25 .ssh

Jadi pengguna 'g' dalam grup 'g' / harus / dapat membaca dan menulis ke direktori .ssh tetapi jika saya melakukannya ls -lah .ssh/saya dapat ls: .ssh/: Permission denied. Saya juga mendapatkan Izin ditolak jika saya mencoba dan catfile apa pun di direktori

Jika saya masuk sebagai root dan mengubah hak akses untuk 700, 744, 766atau apapun selama izin 'pengguna' adalah 7 kerjanya dan saya bisa CD dan LS direktori dan file dalam.

id g kembali

uid=504(g) gid=506(g) groups=506(g)

Edit:

Saya telah menyalin izin ini persis ke kotak lain yang identik dan tidak ada masalah. Saya dapat cdmasuk ke direktori tanpa mengeksekusi izin.

Jawaban:


27

Direktori akan membutuhkan bit eksekusi yang diatur agar Anda dapat memasukkannya. Saya tidak tahu apa yang Anda uji, tetapi Anda tidak dapat memasukkan direktori tanpa bit eksekusi, atau membaca file di dalamnya:

$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied

Yaitu, kecuali jika proses Anda memiliki kapabilitas POSIX CAP_DAC_OVERRIDE POSIX (seperti yang dimiliki root), yang memungkinkan Anda untuk memasuki direktori tanpa set bit yang dapat dieksekusi, iirc.

Pada dasarnya, Anda harus mencoba membuat Anda direktori .ssh di 700, dan semuanya di dalamnya pada 600, hanya untuk aman. Halaman manual ssh memberikan instruksi per file tentang kepemilikan yang diperlukan dan mode izin untuk file di ~ / .ssh.


17

Direktori membutuhkan izin eksekusi untuk cdmasuk ke dalamnya. Inilah perilaku yang diharapkan.


Tapi saya juga tidak bisa catfile dalam direktori dengan izin yang sama, mereka tidak perlu menjalankan izin untuk membaca
Smudge

4
Anda perlu menjalankan izin pada direktori untuk mengakses apa pun di dalam direktori. Jawaban ini benar.
EightBitTony

1
@amaramarge Pertimbangkan xpada direktori untuk memberi Anda izin untuk "berada di" direktori itu. Tanpa itu, Anda tidak dapat melakukan cd ke direktori, Anda tidak dapat melihat apa yang ada di direktori, Anda tidak dapat membuka apa yang ada di direktori. Jika Anda tidak memiliki izin untuk berada di perpustakaan, Anda tidak dapat membaca buku di sana.
DerfK

Jika saya menambahkan izin eksekusi ke direktori (744 ke direktori, 644 ke file di dalamnya) saya mendapatkan kesalahan dari SSHD mengatakan izin dari direktori .ssh harus 644 atau lebih rendah. Tetapi dengan izin sebagai 644 dikatakan tidak dapat mengakses .ssh /
official_keys

* Secara khusus tertulis '.ssh / direktori', bukan file
Smudge

2

Untuk ls atau cd ke direktori, Anda perlu menjalankan izin. Meskipun Anda tidak memilikinya, Anda tidak dapat benar-benar memeriksa konten dan melihat izin file di dalamnya, jadi kemungkinan besar izin file itu salah sendiri, jika Anda tidak bisa melihatnya.

Izin direktori 700 dan hak akses file 644 benar-benar pengaturan OK untuk saya.


Izin untuk file adalah 644, pemilik file adalah g: g sehingga izin file sudah benar. Jika saya menambahkan izin eksekusi ke direktori SSHD mengatakan saya harus menjatuhkan izin ke 644 atau di bawah
Smudge

Komentar Sunny benar - suara turun agak keras
AndyM

0

Saya mengerti ini masalah file ssh sekarang? bukan masalah chmod umum?

Jika ya coba

$chmod go-w ~/
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/*
$chmod 600 ~/.ssh/.*

masalah lain, bisa jadi titik mount, apakah itu dipasang dari tempat lain, CIFS, NFS?
AndyM

0

Direktori membutuhkan x bit set (untuk direktori yang bit dilihat sebagai bit pencarian) untuk membuka. Jadi saya menggunakan tree jadi saya hanya bisa mengatur folder dan menghindari mimpi buruk memiliki semua file yang ditetapkan sebagai executable (opsi untuk tree adalah -d List directories only.):

sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755  "{}"

Peringatan!!! Anda harus mempertimbangkan ini:

  • menggunakan chmod atau chown rekursif pada /direktori root atau direktori sistem akan menghancurkan OS Anda (sebenarnya apa pun yang rekursif pada /direktori atau direktori sistem berbahaya)

  • ini bukan praktik keamanan yang baik untuk mengatur izin massal seperti itu

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.