Bagaimana saya bisa mencegah pengguna mengakses apa pun selain direktori home mereka sendiri?

22

Bagaimana saya bisa mencegah pengguna mengakses apa pun selain direktori home mereka sendiri?

Sebagai contoh, saya memiliki partisi NTFS yang terpasang di bawah /media/ntfs, jadi jika pengguna masuk melalui ssh ia dapat mencapai partisi ini. Bagaimana saya bisa menonaktifkan pengguna untuk cdkeluar dari direktori home mereka?

OHLÁLÁ
sumber

Jawaban:

22

Tinjau kembali kebutuhan Anda terlebih dahulu. Apa masalah yang Anda coba selesaikan? Mengapa Anda ingin mencegah pengguna meninggalkan direktori home mereka? Bukannya Anda tidak ingin mereka mencari-cari direktori spesifik lainnya - seperti direktori home dari pengguna lain?

Sangat sulit untuk mencegah pengguna meninggalkan direktori home mereka. Ini sebenarnya agak konyol juga (penjelasan berikut). Jauh lebih mudah untuk mencegah pengguna memasukkan direktori yang tidak Anda inginkan.

Pertama, ya Anda bisa memberi pengguna shell yang disebut dibatasi , lihat man rbash. Ini akan mencegah mereka dari cd-di tempat lain, tetapi hanya di dalam shell itu. Jika pengguna memulai viatau nano(atau program lain yang mampu membuka file) mereka dapat kembali membuka file di mana saja pada sistem. Sebagai soal fakta, shell terbatas tidak mencegah misalnya cat /etc/passwd.

Langkah selanjutnya adalah root jail. Info lebih lanjut tentang wiki komunitas dan dalam pertanyaan ini . Meskipun root jail akan mengunci pengguna di dalam taman bertembok, di mana mereka tidak memiliki akses apa pun kecuali file dan perintah yang sengaja Anda taruh di sana, root jail sebenarnya dimaksudkan untuk mengisolasi perangkat lunak yang tidak dipercaya daripada pengguna. Khususnya, mereka untuk perangkat lunak yang perlu dijalankan dengan hak istimewa yang tinggi - karenanya merupakan root jail.

Sebaliknya, para pengguna dipercaya : mereka harus mengotentikasi dan menjalankannya tanpa hak istimewa yang ditingkatkan. Oleh karena itu izin file cukup untuk mencegah mereka mengubah file yang bukan milik mereka, dan dari melihat hal-hal yang tidak boleh mereka lihat. Untuk mencegah pengguna membaca konten file, hapus keterbacaannya dengan dunia chmod o-r FILE. Untuk menjaga pengguna keluar dari direktori, buat itu tidak dapat diakses oleh dunia chmod o-rwx DIR.

World-readability adalah standarnya, untuk alasan yang bagus: pengguna sebenarnya membutuhkan sebagian besar barang yang ada di sistem file. Jangan mengunci pengguna di rumah mereka hanya karena ada rahasia di luar.

Mengapa mengunci pengguna di direktori home mereka agak konyol

Untuk melakukan sesuatu yang bermanfaat, pengguna perlu akses ke perintah dan aplikasi. Ini ada di direktori seperti /bindan /usr/bin, jadi kecuali Anda menyalin semua perintah yang mereka butuhkan dari sana ke direktori home mereka, pengguna akan membutuhkan akses ke /bindan /usr/bin. Tapi itu baru awalnya. Aplikasi memerlukan pustaka dari /usr/libdan /lib, yang pada gilirannya memerlukan akses ke sumber daya sistem, yang ada di /dev, dan ke file konfigurasi di /etcdan /usr/share.

Ini hanya bagian read-only. Aplikasi juga ingin /tmpdan sering /varmenulis. Jadi, jika Anda ingin membatasi pengguna dalam direktori rumahnya, Anda harus menyalin banyak ke dalamnya. Bahkan, hampir seluruh sistem file basis - yang sudah Anda miliki, terletak di /.

zwets
sumber
2
Ini tidak masuk akal bagi saya, mungkin ada banyak alasan mengapa Anda ingin pengguna hanya memiliki akses ke 1 folder. Salah satu contoh dapat memberikan akses demi mengirimkan file dari 1 server ke yang lain. Saya agak berpikir bahwa ini agak konyol bahwa setiap pengguna dapat menelusuri sistem lengkap sebagai gantinya.
Richard
Dalam kasus saya, saya mengatur pengguna untuk memungkinkan perangkat untuk membalikkan ssh ke dalam mesin untuk manajemen perangkat jarak jauh. Jadi saya ingin membatasi akun pengguna sebanyak mungkin untuk berjaga-jaga kalau itu dikompromikan - saya hanya perlu koneksi yang berhasil dibuat. Saya tidak akan mengatakan itu konyol, itu hanya tergantung pada apa yang Anda coba capai.
John
7

Saya butuhkan untuk menyediakan akses ke pengguna sampada /var/xyzsaja dan blok daftar isi folder lain di dalam/var/

Saya menggunakan urutan perintah berikut:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Jadi pengguna dapat melihat direktori yang terdaftar di bawah /var/tetapi tidak dapat melihat konten di bawah sub direktori kecuali /var/xyz.

Sam
sumber
2
Selamat datang di askubuntu! Saya tidak melihat ini sebagai jawaban atas pertanyaan yang diajukan tentang direktori home.
Penatua Geek
3
@ElderGeek Tidak bisakah OP hanya menggunakan perintah yang sama, tetapi untuk direktori home?
Seth
@ Tetap Ya, tetapi apakah itu jelas bagi pengguna rata-rata?
Penatua Geek
3
@ Tua Ya, saya yakin itu akan terjadi. Tidak sempurna, tapi tetap sebuah jawaban
Seth
1

Selain membatasi akses ke direktori lain, terutama direktori home pengguna lain, saya juga tidak ingin pengguna ll /homemelihat dan melihat nama-nama pengguna lain di sistem.

Untuk mencegahnya, jalankan root chmod 701 /home. Ini membuat /homedirektori itu sendiri "membaca / menulis / mengeksekusi" ke root tentu saja, tetapi hanya "mengeksekusi" kepada orang lain. /homemasih dapat diakses oleh cd, tetapi pengguna tidak dapat membaca isinya- folder rumah pengguna lain dan oleh karena itu nama pengguna.

Willman
sumber
Ini, meskipun tidak sepenuhnya merupakan jawaban atas pertanyaan, masih sangat menarik ... Dalam situasi di mana Anda mengoperasikan server jarak jauh yang dapat digunakan klien untuk melakukan ssh, ini bagus. Mereka masih bisa bergerak seperti yang mereka harapkan, sambil tetap menjaga privasi nama pengguna klien lain.
Jack_Hu