Nama pengguna sebelum sudo


8

Saya mendapat skrip yang membutuhkan sudo, tetapi skrip harus mengatur parameter sesuai dengan pengguna asli, seperti:

chown "${USER}:${USER}" dir

Jika saya mengaturnya di bawah sudo, saya hanya berakhir dengan chmod root:root, yang tidak membantu.

Jadi bagaimana saya bisa mendapatkan nama pengguna sebelum sudo?

Jawaban:


11

Variabel lingkungan SUDO_USER harus berfungsi sebagai pengganti untuk USER.

Karena Anda menetapkan kepemilikan ke USER: USER Saya berasumsi selalu ada grup dengan nama yang sama dengan pengguna? Solusi yang lebih ketat mungkin menggunakan SUDO_UID dan SUDO_GID.

Dua kemungkinan solusi akan menjadi:

chown "${SUDO_USER}:${SUDO_USER}" dir

atau

chown "${SUDO_UID}:${SUDO_GID}" dir

Anwser bagus, dengan solusi DAN beberapa info tambahan.
— e-satis

Menggunakan UID / GID adalah solusi terbaik, karena dimungkinkan untuk memiliki beberapa UID dengan nama pengguna yang sama.
— duffbeer703

4

Anda dapat menggunakan SUDO_USERvariabel:

sudo bash -c 'echo $SUDO_USER'

Dari halaman manual sudo :

sudo menggunakan variabel lingkungan berikut. Kebijakan keamanan memiliki kontrol atas konten aktual dari lingkungan perintah. [...]

SUDO_UID Setel ke ID pengguna pengguna yang memanggil sudo.

SUDO_USER Setel ke nama login pengguna yang memanggil sudo.


Tetapi mengapa sudo echo $SUDO_USERtidak menghasilkan apa-apa?
— Robert

1

SUDO_USER dapat ditimpa oleh pengguna.

 $ SUDO_USER='lala' sudo SUDO_USER='test' printenv | grep USER
 USER=root
 SUDO_USER=test
 USERNAME=root

Anda harus menggunakan 'siapa saya' atau 'nama log' untuk mendapatkan nama pengguna asli

toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' logname             
toto
toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' who am i
toto   pts/4        Jan 23 15:13 (:0.0)

Datang dari /programming/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-comm-commands


Setelah menjalankan 'sudo su -' lingkungan variabel yang tidak tersedia, tetapi lognamedan who am ipekerjaan.
— RickMeasham

Anda benar, tidak mungkin untuk bergantung pada variabel lingkungan.
— cladmi

Ditemukan pada beberapa host yang SUDO_USER tidak dapat ditimpa: sudo: sorry, you are not allowed to set the following environment variables: SUDO_USER Jadi mungkin masih aman, masih harus memverifikasi ini.
— cladmi

Itu karena perintah saya ditetapkan sebagai "NOPASSWD", jadi itu tergantung pada konfigurasi sudoers Anda melalui "NOSETENV".
— cladmi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.