Rumah  >  Artikel  >  Tutorial sistem  >  Ramai orang keliru tentang penggunaan dan perbezaan antara root dan sudo dalam Linux!

Ramai orang keliru tentang penggunaan dan perbezaan antara root dan sudo dalam Linux!

PHPz
PHPzke hadapan
2024-02-10 14:18:231189semak imbas

Dalam sistem Linux, terdapat dua konsep yang semua orang mungkin biasa, satu ialah arahan sudo dan satu lagi ialah akaun root. Perintah sudo membolehkan kami melaksanakan perintah dengan kebenaran tertinggi Di bawah akaun akar, semua arahan mempunyai kebenaran tertinggi, yang bersamaan dengan semua perintah yang ditambah sudo secara lalai.

Linux 中 root 与 sudo 的用法与区别,居然这么多人搞不清楚!

Jadi, Apakah perbezaan antara sudo dan root

? Mengapa kami mengesyorkan menggunakan sudo dan bukannya menggunakan akaun root secara langsung? Dalam tutorial ini, anda akan belajar tentang akses root, arahan sudo, cara menjalankan arahan menggunakan sudo, dan perbezaan antara akses sudo dan root.

Apakah akar?

root merujuk kepada akaun superuser dalam sistem seperti Unix seperti Linux. Ia adalah akaun istimewa dengan hak akses tertinggi pada sistem yang digunakan untuk pentadbiran sistem. Akaun root/superuser ini mempunyai pengecam pengguna (UID) sifar, tanpa mengira nama akaun.

Pengguna root mempunyai kuasa penuh ke atas keseluruhan sistem (keistimewaan root). Ia boleh melakukan perkara seperti mengubah suai bahagian teras sistem, menaik taraf sistem, menukar konfigurasi sistem dan memulakan, menghentikan dan memulakan semula semua perkhidmatan sistem yang sedang berjalan.

Apabila log masuk sebagai root (menggunakan su -), simbol gesaan arahan terminal bertukar daripada

$ echo 'You are in a normal shell'

menjadi

# echo 'This is a root shell'

Pada sesetengah sistem (seperti Ubuntu), pengguna akar dikunci secara lalai. (Nota: Bricklayer tidak akan dikunci, tetapi Tencent Cloud akan menguncinya secara lalai).

Apakah itu sudo?

sudo (superuser do) 命令是一个命令行实用程序

, yang membolehkan pengguna melaksanakan arahan sebagai root atau pengguna lain. Ia menyediakan cara yang cekap untuk memberikan kebenaran yang sesuai kepada pengguna tertentu untuk menggunakan arahan sistem tertentu atau menjalankan skrip sebagai pengguna akar.

Walaupun agak serupa dengan arahan su, sudo berbeza kerana ia memerlukan kata laluan pengguna untuk pengesahan secara lalai, bukannya kata laluan pengguna sasaran yang su perlukan. Sudo juga tidak menghasilkan shell root sebaliknya, ia menjalankan program atau perintah dengan keistimewaan yang tinggi, tidak seperti su, yang menghasilkan shell root.

Menggunakan sudo, pentadbir sistem boleh melakukan perkara berikut:
  • Memberi pengguna atau kumpulan pengguna keupayaan untuk menjalankan perintah tertentu dengan keistimewaan dinaikkan atau akar.
  • Lihat log untuk ID pengguna setiap pengguna menggunakan sudo.
  • Mengawal arahan yang boleh digunakan pengguna pada sistem hos.

Sudo log semua arahan dan parameter yang dilaksanakan dalam fail /var/log/auth.log, yang boleh dianalisis sekiranya berlaku kegagalan.

fail sudoers

sudo menggunakan dasar keselamatan sudoers lalai dan mengekalkan fail konfigurasi khas /etc/sudoers. Fail ini boleh digunakan untuk mengawal kebenaran akses dan tamat masa gesaan kata laluan.

Nota: Anda mesti mempunyai kebenaran yang tinggi untuk melihat fail sudoers

Buka fail /etc/sudoers;
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local
 content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for
 details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# 
User privilege specification
root    ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d

Baris ini:

root         ALL=(ALL:ALL)ALL

bermaksud pengguna root mempunyai kebenaran tanpa had dan boleh menjalankan sebarang arahan pada sistem.

%sudo ALL=(ALL:ALL)ALL

Benarkan semua ahli kumpulan sudo untuk melaksanakan sebarang arahan.

注意: '%' dalam fail sudoers mewakili kumpulan, bukan ulasan.

Seperti yang dapat dilihat dari baris pertama fail /etc/sudoers:

# This file MUST be edited with the 'visudo' command as root

Jangan cuba mengedit fail sudoers secara langsung. Gunakan arahan visudo dengan keistimewaan root.

Menggunakan sudo untuk menjalankan arahan adalah sangat mudah, cuma tambah sudo di hadapan arahan:

$ sudo command

Secara umumnya, anda akan digesa untuk memasukkan kata laluan Masukkan kata laluan dan tekan Enter.

$ sudo command
[sudo]  password for user:

Sudo 对比 Root

最小权限原则是一种信息和计算机安全概念,它认为授予程序和用户执行任务所需的最少或最低限度的权限。

以 root 用户登录后,输入到终端的每一条命令都以系统最高权限运行,违反了最小权限原则。像 rm 这样的简单命令可用于删除核心根目录或文件,而不会在意外时提示用户。例如,如果您尝试使用以下命令删除 /etc 之类的根目录:

$ rm -rf /etc

当您以普通用户身份登录时,您将被拒绝许可。当以 root 身份登录时,不会显示任何提示,并且整个文件夹将被删除 – 这很可能会破坏您的系统,因为运行系统所需的特殊配置文件存储在 /etc 目录中。您也可能最终错误地格式化磁盘,并且系统不会提示您。

此缺陷还扩展到以 root 身份运行代码或应用程序;应用程序中的一个小错误可能会删除一些系统文件,因为该应用程序是在最高权限下运行的。

Sudo 提供细粒度的访问控制。它仅向需要它的特定程序授予提升的权限。您知道哪个程序以提升的权限运行,而不是使用 root shell(以 root 权限运行每个命令)。

Sudo 也可以配置为以另一个用户身份运行命令,指定允许哪些用户和组使用 sudo 运行命令,或者通过编辑 sudoers 文件设置以 root 权限运行程序的超时。

因此,不建议使用 root shell 运行命令,因为您破坏系统的机会要高得多。如果您需要更高权限或 root 权限来运行命令,请使用 sudo 确保只有该命令以 root 权限运行。

Atas ialah kandungan terperinci Ramai orang keliru tentang penggunaan dan perbezaan antara root dan sudo dalam Linux!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lxlinux.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam