是否可以停止创建.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
组中删除自己来停止创建的文件,但我不在任何这样的组中 – id
certificate我在josh
, adm
, cdrom
, sudo
, dip
, plugdev
, lpadmin
和sambashare
, admin
不在/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 */