Sự khác biệt giữa `su -` và` su --login` là gì?


15

Từ sutrang của người đàn ông:

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

Thật khó để biết liệu có sự khác biệt nào giữa ---login(hoặc được cho là chỉ -l). Cụ thể, trang người đàn ông nói "thay vì lối tắt của nó -", nhưng tất cả các tùy chọn này được nhóm lại với nhau và tôi không thấy lời giải thích về sự khác biệt, nếu nó tồn tại.

CẬP NHẬT Tôi đã kiểm tra câu hỏi, được cho là để giải quyết vấn đề của tôi . Câu hỏi về cơ bản là về sự khác biệt giữa susu -. Và tôi đang hỏi về sự khác biệt giữa su -su --login. Vì vậy, không, nó không giải quyết nó cả.


4
Tôi nghĩ rằng câu này được viết kém. Nó nên làTo 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

Tôi không biết định nghĩa trùng lặp của bạn, nhưng tôi không xem xét câu hỏi của mình như vậy. Câu hỏi bạn đề nghị về cơ bản là về sự khác biệt giữa susu -. Và tôi đang hỏi về sự khác biệt giữa su -su --login. Tôi đang thiếu gì ở đây?
x-yuri

Câu trả lời:


11

Mục nhập thủ công của Debian dường như được khai sáng hơn:

   -, -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.

Tôi muốn nói rằng họ bổ sung cho nhau. Một từ thượng nguồn đề nghị để tránh sử dụng -. Nói về điều đó, tại sao "trước bất kỳ tên người dùng"?
x-yuri

7
"Trước bất kỳ tên người dùng nào" có thể được ghi lại là "trước tên người dùng, nếu có"
Đánh dấu Plotnick vào

@MarkPlotnick Bạn có vẻ sai .
x-yuri

@ x-yuri rằng toàn bộ cuộc thảo luận, đi đến kết luận rằng Mark Plotnick là chính xác, và hướng dẫn sử dụng, tốt nhất là, mơ hồ về mặt logic. (mặc dù hầu hết chúng ta không nhận thấy)
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).Có nghĩa là, Mark Plotnick biết cách suhoạt động, nhưng "trước bất kỳ tên người dùng nào"! = "Trước tên người dùng, nếu có." Đó là kết luận mà cuộc thảo luận đã đưa ra, như tôi thấy.
x-yuri

0

không có sự khác biệt, nó giống như chạy;

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

chỉ tốc ký ...


3
Tôi nghĩ anh ấy đang yêu cầu làm rõ để tránh các tác dụng phụ gây ra bởi môi trường trộn. một phần của trang người đàn ông. Tác dụng phụ gì?
Zachary Brady

Không hẳn vậy. Tác dụng phụ ít nhiều rõ ràng, và họ áp dụng khi không sử dụng bất kỳ -, -l, --login. Câu hỏi của tôi là về lý do tại sao nó không được khuyến khích sử dụng -, trái ngược với '-l , and --login`.
x-yuri

vấn đề về tính di động sẽ là nếu bạn đang viết tập lệnh, tôi sẽ không khuyên bạn nên sử dụng su trong tập lệnh, nhưng có thể có trường hợp sử dụng, bất kể tùy chọn di động nhất trong tập lệnh sẽ là -l hoặc --login
mikejonesey

Tại sao không sử dụng sutất cả, khi viết một kịch bản?
x-yuri

Tại sao không viết một tập lệnh như người dùng sở hữu dữ liệu? Điều hiếm gặp nhất là có một usecase nơi bạn cần thực hiện các hành động như một người dùng khác và sau đó là sudo (có giới hạn đối với các lệnh và params được sử dụng).
mikejonesey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.