Tôi cho rằng một tệp thực thi với tập bit SetUID sẽ được chạy với tư cách là chủ sở hữu của nó nhưng tôi thực sự không thể sao chép nó. Tôi đã thử như sau.
$ cat Chuẩn bị .sh cp / thùng / bash. chown root.root bash chmod 4770 bash # Đã xác minh $ sudo sh Chuẩn bị.sh $ ./bash $ id -u 1000 $ thoát $
$ cat test.c #inc loại <stdio.h> #include <unistd.h> int chính () { printf ("% d,% d \ n", getuid (), geteuid ()); trả về 0; } $ gcc -o test test.c $ chmod 4770 test # Đã xác minh $ sudo chown root.root test $ ./test 1000,1000 $ # Tại sao ???
Tuy nhiên
$ su # ./bash # id -u 0 # ./kiểm tra 0,0 # lối ra # lối ra $
Lưu ý: Điểm gắn kết không có nosuid
cũng không noexec
được thiết lập.
Bất cứ ai cũng có thể giải thích tại sao nó không hoạt động trên Ubuntu 16.04 LTS?
sudo
? Tuy nhiên, có một lỗi hoặc lỗi đánh máy trong đó, chmod
thiếu tên tệp.