Memasang sistem file dengan set id pengguna khusus

19

Saya ingin memasang perangkat /dev/sda3ke direktori /foo/bar/baz. Setelah menginstal direktori harus memiliki pengguna johndoe. Jadi saya melakukannya:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

dan menambahkan baris berikut ke saya /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

Ketika saya lakukan sekarang hasil sudo -u johndoe mount /dev/sda3perintah daripada . Apa cara terbaik untuk me-mount sistem file ext4 ini dengan set uid ?stat -c %U /foo/bar/bazrootjohndoejohndoe

qbi
sumber

Jawaban:

20

Tidak mungkin memaksa pemilik pada disk dengan sistem file ext4. Hanya filesystem yang tidak mendukung izin Linux seperti fat yang memiliki atribut untuk kepemilikan / grup: uid=valuedan gid=value. Lihat halaman manual tentang mount .

Anda harus mengubah pemilik pada sistem file yang terpasang seperti pada:

sudo chown johndoe /foo/bar/baz

Jika Anda perlu mengubah izin secara rekursif:

sudo chown -R johndoe /foo/bar/baz

... dan jika grup perlu diubah johndoejuga:

sudo chown -R johndoe: /foo/bar/baz
Lekensteyn
sumber
2
Mengubah kepemilikan secara rekursif umumnya merupakan ide yang buruk jika Anda dapat membantu. Setelah Anda menghapus kepemilikan "benar", hampir tidak ada cara mudah untuk mendapatkannya kembali. Bindf IMO adalah cara yang tepat untuk menangani ini (lihat jawaban saya).
Catskul
3
bindf terdengar seperti lapisan kompleksitas lainnya. Jawaban saya paling cocok untuk hard disk eksternal (untuk cadangan) yang digunakan pada instalasi sebelumnya dengan ID pengguna yang berbeda. Seharusnya tidak digunakan dalam situasi di mana id beberapa pengguna perlu disimpan (root filesystem), tetapi dalam hal ini bindf dengan -ujuga tidak boleh digunakan karena menghindari pembatasan akses dari id pengguna yang berbeda. --mapharus digunakan jika Anda ingin mempertahankan pembatasan akses.
Lekensteyn
1
Memberi +1 untuk "itu hanya dimungkinkan pada FS tanpa izin" - Saya sudah mencoba menggunakan uiddan gid, yang tidak akan berhasil.
mgarciaisaia
19

bindfsadalah jawabannya. Ini akan mengambil sistem file yang sudah terpasang dan memberikan tampilan dengan mana pun yang Anda inginkan:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo
Catskul
sumber
1
bindfs memiliki mode operasi lain, lihat: bindfs.org/docs/bindfs.1.html
Lekensteyn
2
Ugh, ini menggunakan FUSE.
Navin
Saya ingin memasang sistem file virtual 9p dengan izin pengguna yang berbeda dari OS host. Memukulkan kepalaku ke dinding mencoba membuatnya bekerja. Bindf benar-benar membuatku keluar dari ikatan. Alat kecil yang hebat!
Boann
6

Dengan asumsi kelompok yang ditetapkan untuk file memiliki izin yang sesuai, Anda harus dapat mengetahui itu ID Grup (GID) dan menambahkan diri Anda ke dalamnya.


Untuk mengetahui id grup file, gunakan ls -n. Contoh output:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

Anda ingin bidang keempat untuk GID, yang dalam kasus saya adalah yang kedua 1000.

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

Setelah Anda menjalankannya, Anda harus memiliki kendali penuh di mana pun atribut file untuk grup mengizinkannya.

Seperti disebutkan dalam jawaban lain yang berkaitan dengan izin pengguna, jika Anda perlu memperbaiki grup pada beberapa file, jalankan salah satu dari ini:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./
Chinoto
sumber
1
Catatan jika Anda ingin mengalihkan pengguna atau grup dari A ke B tanpa mengubah kepemilikan file yang bukan A; Anda dapat menggunakan sudo chown --from A B -R ./untuk pengguna dan sudo chown --from :A :B ./untuk grup
LateralFractal