GNU/Linux >> Belajar Linux >  >> Linux

Variabel Lingkungan Pengguna Dengan "su" dan "sudo" di Linux

su dan sudo memungkinkan untuk menjalankan perintah atau shell dengan pengguna yang berbeda. Tergantung pada bagaimana mereka dipanggil, variabel lingkungan dapat berubah, menyebabkan hasil perintah yang berbeda.

Baik "su" dan "sudo" memungkinkan untuk menjalankan perintah atas nama pengguna lain. Penggunaan su menyiratkan pengetahuan tentang kata sandi pengguna "lainnya" kecuali jika dipanggil oleh root. Tidak banyak kendali atas apa yang dapat dilakukan pengguna, jika akses diberikan tidak ada batasan.

Di Sudo ada kontrol yang baik tentang apa yang dapat dilakukan pengguna, perintah apa yang dapat dijalankan. Tidak perlu mengetahui kata sandi pengguna "lain". Izin diatur dalam file konfigurasi.

Catatan :Penggunaan sudo su [USER] harus dihindari, karena menggunakan dua perubahan konteks keamanan. Disarankan untuk menggunakan Sudo -u [USER].

su – jalankan perintah dengan ID pengguna dan grup pengganti

Dari halaman manual:

su allows to run commands with substitute user and group ID.

When called without arguments su defaults to running an interactive
shell as root.

For backward compatibility su defaults to not change the current direc‐
tory and to only set the environment variables HOME and SHELL (plus
USER and LOGNAME if the target user is not root). It is recommended to
always use the --login option (instead it's shortcut -) to avoid side
effects caused by mixing environments.

Contoh:

# su opc -c 'echo $PATH'
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# su - opc -c 'echo $PATH'
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/opc/.local/bin:/home/opc/bin

Dalam "su opc" variabel lingkungan yang digunakan untuk menjalankan perintah adalah yang asli, dalam hal ini lingkungan root pengguna. Jika perintah dipanggil dengan “ ” atau “–masuk ” lingkungan adalah pengguna “opc”, kecuali untuk “TERM”.

Seperti yang dijelaskan oleh halaman manual:

-, -l, --login
  Starts the shell as login shell with an environment similar to a
  real login:

  o clears all environment variables except for TERM

  o initializes the environment variables HOME, SHELL,
  USER, LOGNAME, PATH

  o changes to the target user's home directory

  o sets argv[0] of the shell to '-' in order to make the
  shell a login shell

sudo – menjalankan perintah sebagai pengguna lain

Dari halaman manual:

sudo allows a permitted user to execute a command as the superuser or
another user, as specified by the security policy. The invoking user's
real (not effective) user ID is used to determine the user name with
which to query the security policy.

Contoh:

# sudo -u opc bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin
# sudo -i -u opc bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/home/opc/.local/bin:/home/opc/bin

Dalam "sudo" variabel lingkungan diteruskan dari sesi asli ke sesi "sudo" seperti yang didefinisikan dalam /etc/sudoers:

Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

Variabel yang ditentukan dipertahankan.

Menggunakan “sudo -i” dapat menyebabkan beberapa variabel disetel ulang:

-i, --login
    Run the shell specified by the target user's password data‐
    base entry as a login shell. This means that login-specific
    resource files such as .profile, .bash_profile or .login will
    be read by the shell. If a command is specified, it is
    passed to the shell for execution via the shell's -c option.
    If no command is specified, an interactive shell is executed.
    sudo attempts to change to that user's home directory before
    running the shell. The command is run with an environment
    similar to the one a user would receive at log in. Note that
    most shells behave differently when a command is specified as
    compared to an interactive session; consult the shell's man‐
    ual for details. The Command environment section in the
    sudoers(5) manual documents how the -i option affects the
    environment in which a command is run when the sudoers policy
    is in use.

Contoh, dari default /etc/sudoers, variabel PS1 akan dipertahankan:

# PS1="%: " sudo -u opc bash
%:
# PS1="%: " sudo -i -u opc bash
[opc@[HOSTNAME] ~]$

Jika “-i” digunakan, itu akan menyebabkan file resource login dijalankan, variabel PS1 direset seperti yang diatur di /etc/bashrc.


Linux
  1. Tambahkan pengguna Linux dengan izin root dokumen

  2. Cara Mengatur, Mendaftar, dan Menghapus Variabel Lingkungan di Linux

  3. Contoh Perintah sudo di Linux

  1. Cara Mengatur dan Menghapus Variabel Lingkungan Lokal, Pengguna dan Sistem di Linux

  2. Status pengguna dan pemantauan aktivitas di Linux dengan GNU acct

  3. Mengatur variabel lingkungan Linux

  1. Cara Mengatur/Membuat Variabel Lingkungan dan Shell di Linux

  2. Cara Bekerja Dengan Pengguna Dan Grup Di Linux

  3. 8 Praktik terbaik dengan sudo di Linux – Tindakan dan Larangan dari sudo