如何为系统上的所有用户编辑bash_logout

时间:2017-06-24 20:40:15

标签: linux bash debian

现在我知道我可以编辑bash_logout以在用户键入exit时执行命令,但仅针对特定用户通过编辑其主目录中的bash_logout来执行命令。但是,如何为所有用户编辑此内容?

2 个答案:

答案 0 :(得分:2)

bash无法识别系统范围的注销脚本。您可以做的最好的事情是创建一个世界可读的文件,例如/etc/bash_logout推荐,用户将. /etc/bash_logout添加到他们的个人~/.bash_logout文件中。

对于登录shell,唯一的系统范围配置文件bash识别为/etc/profile。你可以添加

trap 'on_logout' EXIT

(其中on_logout是您定义的包含所需注销代码的函数的名称)并希望用户不重置处理程序。 (从技术上讲,/etc/profile在所有与POSIX兼容的shell中共享,因此不要在这样的处理程序中放置任何bash特定的代码。)

答案 1 :(得分:0)

chepner上面说的是什么....如果你想成为BOFH,你可以很容易地为每个用户创建一个.bash_logout ......

基于您的操作系统/发行版的变化可能(会?)适用...假设所有普通用户都在本地存在(您没有提及LDAP)并且UID在[1000 ... 50000]范围内...... < / p>

# iterate over all user accounts that are likely to be people with awk,
# print their home, loop over those homes and copy the logout file into place.
awk -F: '$3 >999 && $3 < 50000 { print $6}' /etc/passwd | while read home
do
  cp /path/to/your/logout-script $home/.bash_logout
  # if you want to be **reallY** nasty uncomment the next two lines.
  # that will stop users from deleting the file.
  # chown root $home/.bash_logout
  # chattr +i $home/.bash_logout
done

如果您以root身份运行系统上的每个人(请注意,请参阅上面的假设,确保没有系统用户被命中...)将获得所需的注销文件。