Sự khác biệt giữa $ LOGNAME và tên đăng nhập


11

khi echo $LOGNAMEhoặc lognamecác lệnh chạy bình thường nhận được kết quả tương tự như sau:

pandya@pandya-desktop:~$ echo $LOGNAME
pandya
pandya@pandya-desktop:~$ logname
pandya

Vì vậy, có sự khác biệt giữa chúng?

Câu trả lời:


16

Từ các biến môi trường ,

$LOGNAMEgiống như $USERcái cho

Tên của người dùng hiện đang đăng nhập. Biến này được thiết lập bởi hệ thống. Bạn có thể không nên thay đổi giá trị của nó bằng tay.

Từ man logname

tên đăng nhập - in tên đăng nhập của người dùng


Dự kiến sử dụng khác nhau bằng ví dụ sau:

pandya@pandya-desktop:~$ sudo su
root@pandya-desktop:/home/pandya# echo $LOGNAME
root
root@pandya-desktop:/home/pandya# logname
pandya
root@pandya-desktop:/home/pandya# exit
exit
pandya@pandya-desktop:~$

Ở đây bạn có thể thấy sự khác biệt sau khi đăng nhập bằng root trong terminal,

  • $LOGNAMEcho biết tên của người dùng hiện đang đăng nhập trong thiết bị đầu cuối (nghĩa là root)
  • Trong khi đó, lognametên đăng nhập của người dùng đã đăng nhập phiên (ví dụ pandya)


5

Tên đăng nhập tiện ích bị phá vỡ vào ngày 16.04, rõ ràng là có chủ đích vì có thể hack giá trị mà nó trả về, đây có thể là một lỗ hổng bảo mật. https://ormszilla.gnome.org/show_orms.cgi?id=747046 Tôi đã sử dụng tên đăng nhập trong một số tập lệnh và thấy nó hữu ích vì nó luôn trả về cùng một giá trị (tên đăng nhập của tôi) cho dù tôi có gọi nó từ một cấp độ của riêng tôi hoặc từ một lệnh gọi sudo, trong khi các biến môi trường $ USER và $ LOGNAME thì không. Tôi không lo lắng về việc ai đó xâm nhập vào máy tính của tôi và sửa đổi giá trị mà nó trả về. Than ôi .... Tôi đã tìm thấy một cách giải quyết. Tôi đã tạo một tập tin trong thư mục nhà của tôi như vậy

echo $USER > ~/.logname

Khi tôi muốn truy cập tên đăng nhập của mình (ví dụ: gán cho biến Bash g_logname), tôi sẽ làm như vậy:

declare g_logname="$(<~/.logname)";

Điều này làm việc cho tôi, cho dù là bản thân tôi hoặc ở cấp độ gốc thông qua sudo, duy trì việc gán "~" làm thư mục chính của tôi. Tôi có thể tạo tệp .logname cho thư mục chính của mỗi người dùng trên hệ thống. Có, ai đó có thể hack vào máy tính của tôi và thay đổi các tệp này, nhưng tôi không thực sự lo lắng về điều đó. Tôi chỉ muốn kịch bản của tôi hoạt động.

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.