Sebenarnya ada dua bagian untuk pertanyaan Anda.
Apakah akun superuser selalu memiliki uid/gid 0/0 di Linux?
Ya. Seperti yang ditunjukkan oleh Rich Homolka dalam komentar, ada kode di kernel yang secara eksplisit memeriksa uid 0 saat perlu memeriksa pengguna root, yang berarti bahwa root selalu memiliki setidaknya uid 0.
Apakah nama akun pengguna dengan uid 0 selalu
root
?
Tidak. root
hanyalah sebuah nama, tercantum di /etc/passwd atau toko otentikasi lainnya. Anda juga bisa memanggil akun admin
, dan OS itu sendiri tidak akan peduli, tetapi beberapa aplikasi mungkin tidak terlalu menyukainya karena mereka berharap ada akun istimewa bernama root
. Memanggil akun uid 0 di *nix root
adalah konvensi yang sangat kuat, tetapi tidak diperlukan oleh sistem (meskipun mungkin diperlukan oleh perangkat lunak pengguna tertentu, mungkin termasuk utilitas administrasi sistem).
Perlu juga dicatat bahwa, seperti yang ditunjukkan oleh Simon Richter, di BSD sering ada kedua akun uid 0, dengan konvensi bernama toor
(yaitu "root" dieja terbalik, dan juga secara leksikal muncul setelah root
dalam daftar yang diurutkan menurut abjad). Misalnya, FreeBSD menggunakannya untuk menyediakan pengguna root dengan pengaturan shell yang disesuaikan, meninggalkan pengguna root dengan shell default yang dijamin ada di partisi root sistem (berguna untuk tujuan pemulihan).
1) administrator selalu uid ==0. Ini dikodekan dalam kernel. Diperlukan beberapa pengkodean di kernel untuk mengubahnya. Tidak banyak gunanya, jadi belum selesai. Misalnya, unix lain yang berbagi NFS yang sama akan menjadi tidak konsisten.
2) uid 0 tidak harus dipetakan ke root. Contoh terbaik adalah FreeBSD. Ini memiliki dua akun uid ==0, perbedaannya adalah shell. root memiliki shell /bin/sh, yang merupakan shell sederhana, berguna ketika disk Anda rusak dan Anda membutuhkan fsck /usr. toor menggunakan tcsh, yang jauh lebih berguna dalam situasi non-darurat, karena memiliki hal-hal seperti riwayat, dll.
Contoh lain yang lebih pribadi; satu pekerjaan yang saya miliki di mana mereka memiliki akun root equiv (yaitu uid=0) melalui NIS. Kata sandi, kosong! Karena sysadmin baru tidak dapat mengingat kata sandi root di mesin. Saya berteriak tentang ini karena alasan yang jelas (kata sandi NIS menurut definisi tidak dapat menyembunyikan kekosongannya). Saya tidak senang dengan akun ini.
Dan sebenarnya bukan sistem yang memberikan uid 0 adalah root, melainkan Anda. Anda mengubah ini menggunakan file passwd saya, atau direktori penamaan lain (NIS, ldap) tetapi tidak dikompilasi. Meskipun Anda harus memiliki setidaknya satu akun uid 0 di /etc/passwd, karena Anda mungkin tidak memiliki jaringan saat Anda benar-benar membutuhkannya .
Jadi root selalu uid 0, tapi uid 0 belum tentu selalu root.
Nah untuk sistem yang menggunakan server nonStop, ROOT_UID bukan 0 melainkan 65535.
Pengguna dan grup OSS Lingkungan OSS tidak menyediakan nama pengguna dan ID pengguna standar UNIX yang umum kecuali mereka secara eksplisit dibuat oleh administrator situs. Namun, nama pengguna dan ID pengguna OSS yang setara memang ada. Misalnya, hak istimewa yang biasanya dikaitkan dengan akar nama pengguna UNIX dan ID pengguna 0 ada untuk ID pengguna OSS (UID) 65535 (ID super), yang merupakan pengguna SUPER.SUPER dan aliasnya.
Lihat https://h20195.www2.hpe.com/V2/GetPDF.aspx/4AA4-6316ENW.pdf
Di coreutils, Anda dapat menemukan file header root-uid.h:
/* The user ID that always has appropriate privileges in the POSIX sense.
Copyright 2012-2016 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Written by Paul Eggert. */
#ifndef ROOT_UID_H_
#define ROOT_UID_H_
/* The user ID that always has appropriate privileges in the POSIX sense. */
#ifdef __TANDEM
# define ROOT_UID 65535
#else
# define ROOT_UID 0
#endif
#endif