Artikel ini mencakup perjalanan saya belajar tentang arsitektur sistem file Linux dan menggunakan pengetahuan saya untuk menulis skrip shell untuk membuat pengguna Linux. Di tahun kedua kuliah saya, saya belajar tentang sistem file Linux ketika konsep pengguna muncul di benak saya. Saya mencoba membuat pengguna di sistem operasi berbasis Linux.
Script ini dirancang untuk sistem operasi berbasis Red Hat dan juga dapat digunakan untuk distribusi Linux lainnya dengan sedikit modifikasi. Perhatikan bahwa ia menggunakan ksh
.
[ Anda mungkin juga menyukai: Dasar-dasar sysadmin Linux:Pengelolaan akun pengguna ]
Fokusnya adalah pada file yang terletak di /etc
direktori, yang menyimpan informasi konfigurasi sistem. Saya mendemonstrasikan cara bekerja dengan file sistem dan membuat pengguna baru. Akses root adalah persyaratan.
Berikut adalah file yang diubah saat membuat pengguna baru di Linux:
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/gshadow
- /home/USER
- /var/spool/mail/USER
Sistem menambahkan keamanan ke direktori beranda dan kotak surat pengguna (USER) dengan menyetel kepemilikan ke pengguna dan grup pengguna.
/etc/passwd
File ini menyimpan informasi tentang pengguna, seperti nama pengguna, ID Pengguna, ID Grup, nama lengkap (Komentar), dan shell. Data disimpan dalam format berikut: UserName:Link:UserID:GroupID:Comment:HomeDirectory:Shell
Setiap baris file berisi informasi berikut tentang pengguna:
- Nama pengguna:Menunjukkan nama pengguna yang diberikan kepada pengguna untuk akses mudah.
- Link:Menunjukkan bahwa sandi pengguna disimpan di
/etc/shadow
mengajukan. Jika x dihapus, maka kata sandi tidak akan diperiksa, dan pengguna tidak dapat masuk. - UserID:Umumnya dikenal sebagai UID dan digunakan untuk mewakili pengguna secara unik. Ini berkisar dari 0 hingga 65.535.
- UID =0 -> root akun pengguna
- UID =1.000 hingga 60.000 -> Akun non-root/umum
- UID =1 hingga 999 dan 60.001 hingga 65.535 -> Pengguna sistem
- GroupID:Sama seperti UserID tetapi digunakan untuk mewakili grup secara unik.
- Komentar:Informasi tambahan tentang pengguna. Biasanya, nama lengkap pengguna.
- HomeDirectory:Lokasi direktori home pengguna.
- Shell:Cangkang default pengguna.
/etc/shadow
File ini menyimpan informasi tentang kata sandi pengguna dan berisi kata sandi dalam bentuk terenkripsi.
Data disimpan dalam format berikut:
UserName:EncryptedPassword:LastPasswordChange:MinPwdAge:MaxPwdAge:WarningPeriod:InactivityPeriod:ExpirationDate:Unused
- Nama pengguna:Menunjukkan nama pengguna yang diberikan kepada pengguna.
- Kata Sandi Terenkripsi:Kata sandi dienkripsi menggunakan algoritme hashing seperti sha256, sha512, md5, dll., dan disimpan dalam file.
- Perubahan Kata Sandi Terakhir:Menyimpan tanggal epoch sejak kata sandi terakhir diubah.
- Usia Kata Sandi Min:Menyimpan jumlah hari hingga perubahan kata sandi berikutnya.
- Secara default, 0 -> Tidak ada usia minimum
- Usia Kata Sandi Maksimum:Menyimpan jumlah hari maksimum setelah pengguna harus mengubah kata sandi.
- Secara default, 99.999 -> Tidak ada usia maksimum
- Periode Peringatan:Jumlah hari setelah peringatan ditampilkan untuk mengubah kata sandi.
- Secara default, NULL
- Periode Tidak Aktif:Ini menentukan jumlah hari setelah kata sandi pengguna kedaluwarsa sebelum akun dinonaktifkan.
- Tanggal Kedaluwarsa:Tanggal Epoch hingga akun dinonaktifkan.
- Tidak digunakan:Dicadangkan untuk penggunaan di masa mendatang.
File lain
/etc/group
dan/etc/gshadow
file untuk grup di Linux dan menyimpan data dalam format GroupName:Link:GroupID:MemberList dan GroupName:Password:Reserved:MemberList masing-masing.- Direktori home pengguna harus dibuat di
/home
direktori dengan data dari/etc/skel
map. - Kotak surat dibuat di
/var/spool/mail
direktori.
Skrip
Berikut ini adalah skrip shell yang saya tulis untuk membuat pengguna baru yang dipecah menjadi beberapa bagian:
uname=$1
id -u $uname&>/dev/null
Pertama, ini memeriksa apakah pengguna sudah ada:
if [ $? -ne 0 ]
then
for i in {1000..60000}
do
id -u $i&>/dev/null & id -g $i&>/dev/null
if [ $? -ne 0 ]
then
break
fi
done
uid=$i
echo "$uname:x:$uid:$uid::/home/$uname:/bin/bash">>/etc/passwd
lastpwdchange=$(datediff 1970-01-01 `date +"%Y-%m-%d"`)
echo "$uname::$lastpwdchange:0:99999:7:::">>/etc/shadow
echo "$uname:x:$uid:">>/etc/group
echo "$uname:!::">>/etc/gshadow
mkdir /home/$uname
cp -a /etc/skel/. /home/$uname/
chown $uname:$uname /home/$uname/ -R
chmod 0700 /home/$uname/ -R
touch /var/spool/mail/$uname
chown $uname:$uname /var/spool/mail/$uname
echo "User successfully created"
else
echo "User already exists : try using a unique username">&2
fi
Jika pengguna sudah ada, keluar dari program, atau buat pengguna.
Kode lengkapnya tersedia untuk umum di GitHub.
Jalankan skrip shell
[ Catatan editor:Meskipun skrip ini mungkin tampak cukup sederhana, selalu pastikan Anda memahami dan memercayai skrip apa pun yang Anda temukan sebelum menginstalnya atau meningkatkan izinnya di sistem Anda. ]
1) Tempatkan skrip shell di direktori /usr/bin/
untuk membuatnya dapat diakses sebagai perintah.
2) Tambahkan izin eksekusi untuk pengguna root:
# chmod u+x /usr/bin/ksh_useradd
3) Jalankan perintah dengan nama pengguna sebagai argumen:
ksh_useradd USERNAME
4) Script membuat akun pengguna. Anda harus menetapkan kata sandi untuk pengguna baru sebelum login pertama.
[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]
Menutup
Skrip ini dapat membuat proses membuat pengguna sedikit lebih mudah daripada mengingat sakelar untuk useradd
memerintah. Tentu, Anda dapat menggunakan useradd
perintah untuk membuat pengguna, mengatur izin, dan membuat kotak surat pengguna, tetapi skrip ini melakukan tindakan yang sama seperti useradd
dan membantu Anda mempelajari apa yang terjadi di balik layar dengan sistem file Anda. Saya harap penjelasan di atas membantu Anda memahami file konfigurasi terkait pembuatan pengguna dan bidangnya sedikit lebih jelas.