Apa perbedaan antara `su -` dan` su --login`?


15

Dari suhalaman manual:

For  backward  compatibility, su defaults to not change the current directory
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 of  its  shortcut -) to avoid side effects caused
by mixing environments.

...

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

        o      clears all the environment variables except TERM

        o      initializes the environment variables HOME, SHELL, USER, LOGNAME, and 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

Sulit untuk mengetahui apakah ada perbedaan antara -dan --login(atau seharusnya adil -l). Yaitu, halaman manual mengatakan "bukan pintasannya -", tetapi semua opsi ini dikelompokkan bersama, dan saya tidak melihat penjelasan perbedaannya, jika ada.

UPD Saya memeriksa pertanyaan, yang seharusnya bisa menyelesaikan masalah saya . Pertanyaannya pada dasarnya adalah tentang perbedaan antara sudan su -. Dan saya bertanya tentang perbedaan antara su -dan su --login. Jadi tidak, itu tidak menyelesaikannya sama sekali.


4
Saya pikir kalimat ini ditulis dengan buruk. SeharusnyaTo avoid side effects caused by mixing environments use --login option or its equivalent -. The first form is recommended because - can be placed only just before username.
jimmij

Saya tidak tahu definisi Anda tentang duplikat, tetapi saya tidak menganggap pertanyaan saya seperti itu. Pertanyaan yang Anda sarankan pada dasarnya adalah tentang perbedaan antara sudan su -. Dan saya bertanya tentang perbedaan antara su -dan su --login. Apa yang kulewatkan di sini?
x-yuri

Jawaban:


11

Entri manual Debian tampaknya lebih mencerahkan:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged
       in directly.

       When - is used, it must be specified before any username. For portability it is
       recommended to use it as last option, before any username. The other forms (-l
       and --login) do not have this restriction.

Saya akan mengatakan mereka saling melengkapi. Yang dari hulu menyarankan untuk tidak menggunakan -. Omong-omong, mengapa "sebelum setiap username"?
x-yuri

7
"before any username" dapat diulangi menjadi "before the username, if any"
Mark Plotnick

@MarkPlotnick Anda sepertinya salah .
x-yuri

@ x-yuri seluruh diskusi itu, sampai pada kesimpulan bahwa Mark Plotnick benar, dan manualnya, paling tidak, secara logis tidak jelas. (meskipun kebanyakan dari kita tidak memperhatikan)
ctrl-alt-delor

I disagree, however, with the general point that, "before any username" can be rephrased as "before the username, if any." Perhaps Mr. Plotnik meant that the man page* should have rephrased the text using his suggestion, but the two phrases are not equivalent (as I explained at the beginning of this post).Artinya, Mark Plotnick tahu cara sukerjanya, tetapi "sebelum nama pengguna"! = "Sebelum nama pengguna, jika ada." Itulah kesimpulan diskusi itu, seperti yang saya lihat.
x-yuri

0

tidak ada perbedaan, itu seperti berlari;

echo bob | grep -v bob
echo bob | grep --invert-match bob

hanya steno ...


3
Saya pikir dia meminta klarifikasi untuk menghindari efek samping yang disebabkan oleh pencampuran lingkungan. bagian dari halaman manual. Apa efek sampingnya?
Zachary Brady

Tidak juga. Efek samping yang lebih atau kurang jelas, dan mereka berlaku ketika tidak menggunakan apapun -, -l, --login. Pertanyaan saya adalah mengapa tidak disarankan untuk digunakan -, sebagai lawan dari '-l , and --login`.
x-yuri

masalah portabilitas adalah jika Anda menulis skrip, saya tidak akan merekomendasikan menggunakan su sama sekali dalam skrip, tetapi mungkin ada use case, terlepas dari opsi yang paling portabel dalam skrip akan -l atau --login
mikejonesey

Kenapa tidak digunakan susama sekali, saat menulis naskah?
x-yuri

mengapa tidak menulis skrip sebagai pengguna yang memiliki data? Paling jarang ada usecase di mana Anda perlu melakukan tindakan sebagai pengguna lain, dan kemudian ada sudo (yang memiliki batasan pada perintah dan param yang digunakan).
mikejonesey
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.