Làm thế nào để ps biết để ẩn mật khẩu?


22

Nhân chứng:

$ ps f
  PID TTY      STAT   TIME COMMAND
31509 pts/3    Ss     0:01 -bash
27266 pts/3    S+     0:00  \_ mysql -uroot -p
25210 pts/10   Ss+    0:00 /bin/bash
24444 pts/4    Ss     0:00 -bash
29111 pts/4    S+     0:00  \_ tmux attach
 4833 pts/5    Ss+    0:00 -bash
 9046 pts/6    Ss     0:00 -bash
17749 pts/6    R+     0:00  \_ ps f
 4748 pts/0    Ss     0:00 -bash
14635 pts/0    T      0:02  \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0    S+     0:01  \_ mysql -uroot -px xxxxxxxxxxxxxxxx

Làm thế nào ps biết để ẩn mysqlmật khẩu? Tôi có thể kết hợp điều này vào các tập lệnh của riêng mình để ẩn các thuộc tính CLI cụ thể không?


6
Đó có lẽ là cách khác và mysqlkhông sự kỳ diệu, không ps: “MySQL khách hàng thường ghi đè lên các tranh cãi mật khẩu dòng lệnh với số không trong chuỗi khởi tạo của họ.” - Hướng dẫn người dùng cuối cho mật khẩu an ninh
manatwork

Cảm ơn bạn, đó là một tài liệu thông tin. Tôi sẽ xem làm thế nào tôi có thể ghi đè lên các đối số cli trong các tập lệnh của riêng tôi.
dotancohen

1
@manatwork Tôi sẽ đặt nó như một câu trả lời, bởi vì đó chính xác là những gì đang xảy ra - và đó là một liên kết hữu ích cho các vấn đề bảo mật liên quan đến mysql. :)
Drav Sloan

Lưu ý rằng trong khi các đối số dòng lệnh có thể được theo dõi, các biến môi trường là an toàn .
Gilles 'SO- ngừng trở nên xấu xa'

Để biết thêm thông tin về điều này, hãy xem unix.stackexchange.com/q/385339/135943
Wildcard

Câu trả lời:


23

pskhông ẩn mật khẩu. Các ứng dụng như mysql ghi đè lên danh sách đối số mà chúng có. Xin lưu ý rằng có một khung thời gian nhỏ (có thể mở rộng bằng tải hệ thống cao), trong đó các đối số được hiển thị cho các ứng dụng khác cho đến khi chúng bị ghi đè. Ẩn quá trình cho người dùng khác có thể giúp đỡ. Nói chung, tốt hơn là truyền mật khẩu qua các tệp so với mỗi dòng lệnh.

Trong bài viết này, nó được mô tả cho C, làm thế nào để làm điều này. Ví dụ sau ẩn / xóa tất cả các đối số dòng lệnh:

#include <string.h>

int main(int argc, char **argv)
{
    // process command line arguments....

    // hide command line arguments
    if (argc > 1) {
        char *arg_end;    
        arg_end = argv[argc-1] + strlen (argv[argc-1]);
        *arg_end = ' ';
    }

    // ...
}

Cũng xem tại /programming/724582/ leather -argument-from-ps/programming/3830823/hiding-secret-from-command-line-parameter-on-unix .


Rất đẹp, cảm ơn. Tôi đã không nhận ra rằng các đối số là có thể thay đổi như vậy.
dotancohen

Cũng lưu ý rằng không phải tất cả các chương trình sẽ làm điều này với mật khẩu.
tro

Liên kết đến bài viết này bị hỏng. Bất cứ ai để giải thích mã cho tôi? (Tại sao mã hoạt động, chỉ được đặt \0thành không gian?) Bất kỳ liên kết đến setproctitle()?
schemacs

Hay câu trả lời nằm ở đây ?
schemacs

7

Các mysql chương trình thay thế mật khẩu từ dòng lệnh với xtrong dòng mã này :

while (*argument) *argument++= 'x';     // Destroy argument

3
Thật không may, điều đó không an toàn như nó có thể. Bạn có thể cho biết mật khẩu dài bao nhiêu. Tốt hơn là thay thế nó \0để bạn cần thêm thông tin để tìm độ dài mật khẩu (không có UB / SEGFAULT).
wizzwizz4
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.