Có thể dừng .sudo_as_admin_successful được tạo không?


46

Mỗi khi tôi thực thi một lệnh với sudo, một tệp được gọi .sudo_as_admin_successfulsẽ được tạo trong thư mục chính của tôi. Theo như tôi có thể nói, điều này tồn tại với mục đích duy nhất là vô hiệu hóa thông báo này bash in khi khởi động:

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Có thể dừng tin nhắn đó bằng cách bình luận phần có liên quan /etc/bash.bashrc, nhưng sudovẫn tạo một tệp gây phiền nhiễu trong thư mục nhà của tôi.

Trang web này cho thấy rằng bạn có thể ngăn chặn các tập tin được tạo ra bằng cách loại bỏ mình ra khỏi adminnhóm, nhưng tôi không trong bất kỳ nhóm như vậy - idcho thấy rằng tôi đang ở josh, adm, cdrom, sudo, dip, plugdev, lpadminsambashare, và adminkhông có trong /etc/group.

Có cách nào để ngăn chặn tập tin này được tạo ra?


Tôi tin rằng đây không phải là một bản sao của câu hỏi này , vì nó đang hỏi liệu có thể làm cho thông báo được in bằng bash biến mất, thay vì nếu nó có thể ngăn chặn tệp được tạo bởi sudo.


1
Có gì khó chịu về nó? Nó hầu như không có bất kỳ không gian.
edwinksl

12
@edwinksl Đó là sự lộn xộn thị giác khi tôi đang cố gắng tìm thứ khác. Tôi không cần phải biết về sự tồn tại của nó, vì tôi sẽ không bao giờ sửa đổi nó.
Josh

5
và đó là lý do tại sao có một. ở phía trước. Tại sao bạn bao gồm các tập tin ẩn trong quan điểm của bạn?
Rinzwind

11
Ít nhất tập tin này nên đặt chính nó trong .config hoặc .local. Không thường xuyên khi chúng ta cần duyệt các tệp ẩn, đặc biệt là trong thư mục chính. Không phải đó là lý do tại sao .config / .local được phát minh, vì sự quá tải lố bịch của thư mục chính, trong đó tệp này có thể là ví dụ vô cớ nhất?
NeilG

1
Không bắt đầu một cuộc chiến phân phối (điều này được hỏi trên Askubfox.com), nhưng tôi đã kiểm tra kỹ: đây thực sự là thứ mà Ubuntu đã thêm không có trong bản phân phối Debian ngược dòng. Nó có thể được thêm vào là "thân thiện với người dùng" nhưng tôi, như OP, tìm thấy sự hiện diện của các tệp ngẫu nhiên như thế này gây phiền nhiễu.
Per Lundberg

Câu trả lời:


38

Dựa trên phần sau của plugins/sudoers/sudoers.ctệp mã nguồn , có vẻ như không thể thực hiện được mà không cần biên dịch lại sudo, xác USE_ADMIN_FLAGđịnh macro của bộ xử lý trước.

Ngoài ra, lưu ý rằng nó đang kiểm tra tư cách thành viên nhóm của cả hai admin sudo . Tôi chưa kiểm tra thay đổi, nhưng tôi nghi ngờ kiểm tra sau được thêm vào khi sudotrở thành nhóm mặc định cho người dùng đặc quyền - có lẽ tên tệp vẫn đề cập đến admintính tương thích.

1229 #ifdef USE_ADMIN_FLAG
1230 static int
1231 create_admin_success_flag(void)
1232 {
1233     struct stat statbuf;
1234     char flagfile[PATH_MAX];
1235     int len, fd = -1;
1236     debug_decl(create_admin_success_flag, SUDOERS_DEBUG_PLUGIN)
1237
1238     /* Check whether the user is in the admin group. */
1239     if (!user_in_group(sudo_user.pw, "admin") &&
1240         !user_in_group(sudo_user.pw, "sudo"))
1241         debug_return_int(true);
1242
1243     /* Build path to flag file. */
1244     len = snprintf(flagfile, sizeof(flagfile), "%s/.sudo_as_admin_successful",
1245         user_dir);
1246     if (len <= 0 || (size_t)len >= sizeof(flagfile))
1247         debug_return_int(false);
1248
1249     /* Create admin flag file if it doesn't already exist. */
1250     if (set_perms(PERM_USER)) {
1251         if (stat(flagfile, &statbuf) != 0) {
1252             fd = open(flagfile, O_CREAT|O_WRONLY|O_EXCL, 0644);
1253             if (fd != -1)
1254                 close(fd);
1255         }
1256         if (!restore_perms())
1257             debug_return_int(-1);
1258     }
1259     debug_return_int(fd != -1);
1260 }
1261 #else /* !USE_ADMIN_FLAG */
1262 static int
1263 create_admin_success_flag(void)
1264 {
1265     /* STUB */
1266     return true;
1267 }
1268 #endif /* USE_ADMIN_FLAG */

Tất nhiên là có thể mà không cần biên dịch lại sudo! Chỉ cần ra ngoài objdump -d, theo dõi logic liên quan đến kiểm tra đó, sau đó đi vào với trình soạn thảo hex đáng tin cậy của bạn (hoặc thậm chí hexdumpvà một trình soạn thảo văn bản thông thường sẽ thực hiện trong một vài thao tác) cho một số phẫu thuật. Điều gì có thể đi sai?
mtraceur
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.