Saya mengubah izin file ( chmod g+w testfile
) dan menjalankan ls -l testfile
memberi:
-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile
Saya kemudian menambahkan pengguna ke grup itu (" / etc / group " memiliki user1:x:1000:user2
baris), tetapi saya gagal mengedit file itu sebagai user2. Kenapa begitu?
permissions
users
group
tepang
sumber
sumber
Jawaban:
user2
perlu keluar dan kembali. Izin grup bekerja dengan cara ini:/etc/passwd
, ditambah semua grup tempat pengguna Anda disebutkan/etc/group
. (Lebih tepatnya,pw_gid
bidang dalamgetpw(your_uid)
, ditambah semua grup yang pengguna Anda anggotanya eksplisit . Di luar/etc/passwd
dan/etc/group
, informasi dapat berasal dari jenis lain dari basis data pengguna seperti NIS atau LDAP.) Grup utama menjadi ID grup proses yang efektif dan grup lain menjadi ID grup pelengkap .Seperti yang Anda lihat, perubahan Anda ke keanggotaan grup pengguna hanya berlaku ketika pengguna masuk. Untuk menjalankan proses, sudah terlambat. Jadi pengguna harus keluar dan kembali. Jika terlalu banyak masalah, pengguna dapat masuk ke sesi terpisah (misalnya pada konsol yang berbeda, atau dengan
ssh localhost
).Di bawah tenda, suatu proses hanya bisa kehilangan hak istimewa (ID pengguna, ID grup, kemampuan). Kernel memulai
init
proses (proses pertama setelah boot) berjalan sebagai root, dan setiap proses pada akhirnya diturunkan dari proses tersebut¹. Thelogin
proses (atausshd
, atau bagian dari desktop manager Anda yang log Anda dalam) masih berjalan sebagai root. Bagian dari tugasnya adalah untuk menghapus hak akses root dan beralih ke pengguna dan grup yang tepat.Ada satu pengecualian: menjalankan program setuid atau setgid . Program itu menerima izin tambahan: ia dapat memilih untuk bertindak di bawah berbagai subset keanggotaan proses induk ditambah keanggotaan tambahan dalam pengguna atau grup yang memiliki setxid yang dapat dieksekusi. Secara khusus, program root setuid memiliki izin root, karenanya dapat melakukan segalanya²; ini adalah bagaimana program suka
su
dansudo
dapat melakukan pekerjaan mereka.¹ Kadang-kadang ada proses yang tidak berasal dari init (initrd, udev) tetapi prinsipnya sama: mulai sebagai root dan kehilangan hak istimewa dari waktu ke waktu.
² Cegah kerangka kerja keamanan bertingkat seperti SELinux.
sumber
Anda mungkin perlu meminta pengguna2 logout dan kembali (atau coba saja ssh'ing untuk membuat sesi login baru). Periksa output
id --groups
untuk menampilkan id grup numerik untuk pengguna.sumber
sudo su $(whoami)
Pada dasarnya solusi yang sama seperti
ssh localhost
, tetapi dapat digunakan tanpa server ssh diinstal.Selama Anda memiliki root. Tetapi jika Anda baru saja menambahkan grup baru & mengubah izin, kemungkinan Anda akan melakukannya.
sumber
Ada kasus ketika pengguna logout tidak membantu - jika Anda menggunakan direktif ssh ControlMaster untuk host. Jika Anda menambahkan akun Anda ke grup, keluar dan masuk lagi dalam koneksi ControlMaster yang sama, sesi masih akan menunjukkan Anda tidak ada keanggotaan baru. Anda harus memutuskan koneksi Master dengan paksa
ssh -O exit hostname
sebelum masuk lagi.
sumber