Unix: Bagaimana saya bisa mengizinkan hanya satu orang untuk melihat folder saya di fs yang sama?

9

Saya ingin memberikan akses ke dir untuk teman. Ia memiliki akses ke sistem file, di mana direktori tersebut berada. Saya tidak ingin mengatur izin untuk semua pengguna. Bagaimana saya bisa mengizinkan hanya satu orang untuk melihat dir? Tidak seorang pun dari kita adalah pengguna super.

[BOUNTY CHALLENGE] Tidak ada balasan yang berfungsi, menggunakan Ubuntu:

1. Pendekatan jamuraa tidak berfungsi

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. Pendekatan nik tidak berfungsi: tidak dapat mengakses file yang tidak ada

3. Pendekatan ba tidak berfungsi: Saya tidak dapat membuat grup, bukan root.

4. Pendekatan ToK tidak berfungsi, pengguna berada dalam dua kelompok: "pengguna" dan "bidang"

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

sumber
1
Akan bermanfaat jika Anda memberikan satu-liner tentang bagaimana jawaban ini menimbulkan masalah bagi Anda - akan memberikan definisi masalah yang lebih baik untuk membentuk opsi lain.
nik
nik: Menambahkan profil kesalahan.

Jawaban:

12

Dengan izin UNIX biasa (pengguna, grup, semua orang), Anda tidak dapat melakukan ini dengan mudah. Jika Anda tidak lagi memerlukan akses ke direktori, Anda dapat mengubah pemilik direktori menjadi teman Anda, yang berlaku pada beberapa Unices, tetapi sebagian besar tidak.

Namun - jika Anda mengaktifkan ACL di Linux, Anda dapat melakukan ini jika Anda adalah pemilik file. Jalankan saja perintah di setfacl -m user:friend:rwx filenamemana teman adalah nama akun teman Anda dan nama file adalah file tersebut. Anda dapat memeriksa bahwa itu mulai berlaku dengan menjalankan getfacl filename, Anda harus melihat triad user:friend:rwxdalam daftar. Saya belum melihat terlalu banyak sistem Linux yang mengaktifkan ACL.

jamuraa
sumber
ACL adalah solusi standar untuk masalah ini, dengan asumsi sistem file Anda telah mengaktifkannya.
Ryan C. Thompson
HHH tampaknya mengatakan bahwa ini tidak akan berhasil. Saya pikir itu akan, kecuali untuk beberapa alasan aneh ACL tidak diaktifkan. HHH, apa yang menyebabkannya?
pboin
pboin: metode ini tidak berfungsi jadi alasannya mungkin karena ACL tidak diaktifkan atau s / hal lain, tidak yakin.
11

Ini adalah sesuatu yang telah kami diskusikan di sekolah.
Berjalan kira-kira seperti ini,

  1. Buat direktori (dinamai data, untuk referensi di sini)
    • ubah izin sebagai " chmod 711 data"
    • grup dan yang lain hanya memiliki x- akses untuk masuk ke direktori
    • mereka tidak dapat mendaftar direktori
    • Sekarang, buat direktori difficult-name-here(ini bisa berupa hashed-string)
    • ubah izin sebagai " chmod a+rx difficult-name-here"
    • isi direktori ini aman sementara direktori luar tidak dapat didaftar
    • orang yang tahu "nama sulit" dapat masuk ke direktori kedua ini
      • " cd path/to/data/difficult-name-here"
      • yang lain tidak dapat melihat nama dan tidak dapat mengakses konten direktori
      • Namun, rootselalu dapat mengakses semuanya (yang bukan masalah di sini)
    • bagikan difficult-name-heredengan orang yang ingin Anda berikan data ini
    • Simpan file yang dibagikan di direktori kedua ini

Cukup kasar, tetapi jika ini bisa rusak tanpa kerusakan kontrol akses unix, saya ingin tahu.


Perbarui komentar dari dmckee,
Ini persis kesimpulan yang kami capai!
"keamanan karena ketidakjelasan" memiliki keamanan yang terbatas .

Karena itu, ketika merancang perlindungan untuk data,
penting untuk mengidentifikasi nilainya.

Anda harus menargetkan untuk,

  • Biaya pemecahan keamanan yang lebih tinggi daripada,
  • Biaya konten yang aman,
  • Dengan faktor yang sebanding dengan paranoia Anda

Dalam hal ini, jika rootmemutuskan untuk menyebutkan pohon direktori di suatu tempat di akses publik,
rahasia Anda keluar! Tetapi, apakah Anda melindungi dari akar atau kemungkinan tidak bertanggung jawab mereka?
Jika itu masalahnya, Anda memiliki lebih banyak hal yang perlu dikhawatirkan daripada membagikan file.


Perbarui not yang tidak berfungsi dalam pertanyaan .
Saya telah menggunakan ini pada hari-hari awal linux untuk mengetahui bahwa itu berfungsi.
Jika Anda mendapatkan ' cannot access non-existant file' bukan 'permissions denied'Anda kemungkinan besar telah membuat kesalahan dalam urutannya. Apa yang Anda inginkan akan terlihat seperti ini,

 755 711 755 apa pun - === Izin akses

 BasePath / CoverDir / Obscure / protectedFile.txt
          | | ^^^^^^^^^^^^^^^^^ Tidak dapat dilihat tanpa
          | ^^^^^^^ Nama Direktori membaca akses ke
          ^^^^^ Publik dibagikan dengan teman. Direktori tidak jelas.
                dapat diakses 
                direktori.
  1. Jika Anda menetapkan ' CoverDir' akses sebagai 'rwx--x--x',
    grup dan yang lain hanya bisa masuk ke direktori tetapi tidak bisa membaca isinya.
  2. Sekarang, jika Anda menggunakan nama direktori yang tidak jelas,
    ' Obscure', di dalamnya dan memberikan akses baca penuh dengan ' rwxr-xr-x',
    siapa pun yang mengenal nama ini dapat mendaftar isinya.
  3. Akses ini harus dilakukan dari luar dengan ' ls BasePath/CoverDir/Obscure'
    Karena orang-orang dalam grup Anda dan orang lain tidak akan dapat ' ls BasePath/CoverDir'.
nik
sumber
7
"Jika ini bisa dipatahkan [...], ingin tahu" Ya, itu adalah contoh keamanan yang sangat tidak dikenal, dan karenanya rapuh. Jangan mengandalkan itu dalam jangka panjang. Tapi rapi.
dmckee --- ex-moderator kitten
Jika kontrol akses unix Anda diterapkan dengan aman, ini hampir seaman basis data kata sandi yang dibayangi (atau sshkunci pribadi).
nik
5

Ryan sebenarnya 100% benar, hanya mundur. Karena teman Anda (kemungkinan) memiliki grup unik yang terkait dengan nama penggunanya, ubah kepemilikan grup dari direktori tersebut ke grup tersebut, kemungkinan besar nama pengguna teman tersebut. Agar dapat berbagi konten antara Anda berdua, Anda harus tetap memiliki kepemilikan sebagai pengguna:

chown -R youruser:friendgroup ~/foo/bar

Kemudian tetapkan izin yang sesuai ke direktori, tergantung pada akses apa yang Anda ingin dimiliki oleh pengguna lain:

chmod -R 770 ~/foo/bar

akan memberi Anda berdua akses rwx penuh ke direktori dan seluruh isinya.

Harap perhatikan bahwa ini mengasumsikan bahwa tidak ada pengguna lain yang telah ditambahkan ke grup teman Anda. Sistem kemungkinan tidak akan membuat tugas ini, namun, seperti yang disebutkan sebelumnya, pengguna root dapat melakukan apa yang mereka pilih. Anda dapat menggunakan perintah grup untuk melihat setiap grup yang dimiliki teman Anda, atau pengguna yang sewenang-wenang. Selain itu, kecuali izin telah diubah karena alasan tertentu, Anda harus dapat melihat file / etc / group yang berisi tugas grup untuk setiap grup pada sistem.

Tok
sumber
4

Saya akan membuat grup baru untuk Anda dan teman Anda dan mengatur izin folder menjadi penuh untuk pemilik dan grup bersama dengan bit setgid untuk direktori.

Tetapi tergantung pada kebutuhan Anda, Anda mungkin juga harus mengubah umask Anda dan teman-teman Anda sehingga secara otomatis mengatur grup untuk dapat mengubah file baru.

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN
gaqzi
sumber
3
Ini mungkin memerlukan hak akses pengguna super yang tidak ia miliki.
Keck
1
Oh, saya benar-benar melewatkan kalimat itu: x Lalu saya bingung. Kira saya hanya akan pergi dengan mengirimkannya melalui surat lokal - bukan solusi terbaik tapi setidaknya file tersebut sampai ke orang lain.
gaqzi
2

Daftar Kontrol Akses adalah cara sempurna untuk melakukan ini.

Namun (jika saya ingat dengan benar), sistem file perlu diinisialisasi dengan ACL (mis. "/ Dev / sda6 / home ext3 default, acl "), melalui / etc / fstab, dan ini adalah sesuatu yang hanya dapat dilakukan oleh superuser. ..


sumber
2

RBACS seperti grsec / selinux diperlukan ..

kagali-san
sumber
tidak yakin apakah ini masalahnya, dapatkah Anda menambahkan beberapa kutipan?
2

Secara default, setiap pengguna pada sistem Ubuntu juga memiliki grup terkait dengan nama yang sama. Jadi, jika Anda dapat menambahkan teman ke grup Anda dan menandai folder yang dimaksud sebagai g+rwx, Anda akan ditetapkan. Saya samar-samar ingat kasus penggunaan ini dikutip sebagai alasan untuk membuat grup untuk setiap pengguna.

Ryan C. Thompson
sumber
Menambahkan pengguna ke grup memerlukan akses root, yang menurut OP tidak ada.
Dave Sherohman
2

belum mencoba ini, tetapi bagaimana dengan direktori yang dapat dibaca publik dengan ruang pengguna FS terenkripsi di dalamnya (misalnya encfs). Kemudian Anda dapat membagikan kata sandi itu dengan teman Anda dan tidak ada orang lain yang dapat menggunakan data itu (well, saya kira mereka bisa mendapatkan data dan menjalankan cracker kata sandi secara offline?).

Arun
sumber
2

Untuk memberikan Linux kemahiran yang sama seperti windows dalam hak istimewa file Anda harus bersarang grup. Buat satu grup yang memiliki akses ke folder Anda sesuai keinginan teman Anda. Tambahkan dia ke grup itu atau grup dia tinggal di grup itu. Sebagai contoh

/ foo adalah folder yang ingin Anda bagikan. Buat grup FooGroup yang memiliki akses yang diinginkan ke folder. Tambahkan grup dan pengguna ke grup ini yang ingin Anda akses ke folder ini.

Sangat sulit memiliki grup untuk setiap folder atau file tetapi ini adalah cara terbaik untuk membatasi akses pada level yang sama dengan Windows.

Ge3ng
sumber
1

Anda dapat mengenkripsi direktori dengan gpg. Dan kemudian cobalah untuk mengaburkan lokasi seperti yang disarankan nik.

kzh
sumber