是否可以停止创建.sudo_as_admin_successful?

每次使用sudo执行命令时, .sudo_as_admin_successful在我的主目录中创建一个名为.sudo_as_admin_successful的文件。 据我所知,存在的唯一目的是禁用bash在启动时打印的此消息:

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

可以通过注释/etc/bash.bashrc的相关部分来停止该消息,但是sudo仍然在我的主目录中创建一个恼人的文件。

这个网页建议您可以通过从admin组中删除自己来停止创建的文件,但我不在任何这样的组中 – idcertificate我在joshadmcdromsudodipplugdevlpadminsambashareadmin不在/etc/group

有没有办法阻止创建这个文件?


我认为这不是这个问题的重复,因为那是在询问是否有可能使bash打印的通知消失,而不是因为可以阻止sudo创建的文件。

基于plugins/sudoers/sudoers.c源代码文件的以下部分,如果没有重新编译sudo ,它就不可能取消定义USE_ADMIN_FLAG预处理器宏。

另请注意,它正在检查admin sudo组成员身份。 我没有检查更改日志,但我怀疑后一个检查是在sudo成为特权用户的默认组时添加的 – 也许文件名仍然是指admin的兼容性。

  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 */