Điểm:0

Biến môi trường không phải root có thể sửa đổi không?

lá cờ pk

Một người không phải root (không có quyền sudo) có thể chạy lệnh sau không:

xuất PATH=/tml:$PATH

Nếu vậy, làm thế nào nó hoạt động?

tôi đã nghĩ biến môi trường là chỉ đọc cho người dùng không root, trong khi biến vỏ có thể được sửa đổi một cách tự do.

muru avatar
lá cờ us
"Tôi nghĩ các biến môi trường là chỉ đọc," Tại sao bạn lại nghĩ vậy?
Trigosin Darom avatar
lá cờ pk
@muru cho người dùng không root
muru avatar
lá cờ us
Câu hỏi vẫn còn. Bạn đã đọc hoặc nhìn thấy điều gì khiến bạn nghĩ như vậy?
Trigosin Darom avatar
lá cờ pk
Theo hiểu biết của tôi, các biến môi trường (không giống như các biến shell) là toàn cục. Có nghĩa là chúng áp dụng cho mọi quy trình. Điều này rất nguy hiểm nếu bất kỳ người dùng nào cũng có thể sửa đổi các giá trị ở đó.
muru avatar
lá cờ us
Mọi quy trình đều có một *bản sao* các biến môi trường được kế thừa từ cha của nó và có thể sửa đổi tập hợp các biến môi trường của chính nó cũng như tập hợp các biến môi trường được truyền cho các quy trình con khi tạo.
Trigosin Darom avatar
lá cờ pk
Lý do tôi hỏi là vì tôi đã cố gắng giải quyết một thử thách ctf trong đó có một người dùng yếu có quyền sudo để chạy "date --date 'yesterday'" với quyền root. Giải pháp là tạo một tệp thực thi có tên 'ngày' và thay đổi biến env PATH để nó đạt được tệp thực thi 'ngày' đã sửa đổi. Tôi vẫn không chắc nó hoạt động như thế nào vì biến PATH của root không bị ảnh hưởng.
muru avatar
lá cờ us
Điều đó vẫn không nên làm việc như đã nêu. Đối với sudo, nếu quyền được cấp cho một lệnh cụ thể, thì đường dẫn đầy đủ đến lệnh đó phải được chỉ định. Nếu nó phù hợp với bạn, thì cấu hình sudo là một thứ rất không an toàn.
Điểm:1
lá cờ jp

Đầu ra của các lệnh sau sẽ thuyết phục bạn rằng bạn có thể sửa đổi các biến môi trường của mình.

$ grep ĐƯỜNG ~/.profile 
# đặt PATH để nó bao gồm thùng riêng của người dùng nếu nó tồn tại
    ĐƯỜNG=~/bin:"${PATH}"
PATH="$PATH:/usr/games"

$ ls -l ~/.profile
-rw-r--r-- 1 sudodus sudodus 632 ngày 10 tháng 12 năm 2010 /home/sudodus/.profile

Nói cách khác, bạn không chỉ có thể tạm thời sửa đổi các biến này mà còn có thể làm cho nó tồn tại lâu dài bằng cách sửa đổi tệp cấu hình của bạn ~/.profile. Bạn, với tư cách là người dùng thông thường, có thể làm điều đó.


Dòng lệnh sau hiển thị các tệp hệ thống, nơi PATH được đặt hoặc sửa đổi

sudo grep -r 'PATH=' /etc/*

Bạn có thể muốn biết thêm chi tiết. Xem ví dụ liên kết sau,

Unix & Linux: Chế độ xem hoàn chỉnh về nơi đặt biến PATH trong bash - đặc biệt là câu trả lời của Gilles.

Trigosin Darom avatar
lá cờ pk
Vì vậy, bất kỳ người dùng nào cũng có thể thay đổi các biến môi trường TOÀN CẦU? Và nó cũng sẽ áp dụng trên root? Có vẻ như tôi đang thiếu một cái gì đó ở đây.
sudodus avatar
lá cờ jp
Bạn có thể thay đổi các biến môi trường ***của bạn***, nhưng không thể thay đổi đối với những người dùng khác trừ khi bạn có quyền siêu người dùng (có thể sử dụng `sudo`).

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.