注销时的用户脚本

注销时的用户脚本

问题:我和妻子共享一个目录。我把我们俩都放在一个“共享”组中,并且该目录也属于“共享”组。每当我们其中一人创建一个文件时,该文件就属于 user:user,而不是 user:shared...

解决方案:我可以执行 sudo chown,但我的妻子不能。因此,我想在退出会话时运行一个脚本。

如果我理解正确的话,启动脚本进入 /etc/init.d/ 而运行级别脚本进入 /etc/rc0.d/ 其中 0 是运行级别 (0-6)。

问题: 运行级别脚本是否仅在退出/注销时执行?这些是否取决于用户,也就是说,我只想为我的用户运行它(请注意,在这种情况下并不那么重要)?我应该选择哪个运行级别(我猜是 5)?我应该将脚本放在其他地方吗?

另外,我想象该脚本将由 root 运行,因此脚本中不需要 sudo,对吗?

答案1

我相信您可以使用 setgid 位?

man 2 chmod

S_ISGID (02000) 设置组 ID(在 execve(2) 上设置进程有效组 ID;强制锁定,如 fcntl(2) 中所述;从父目录中获取新文件的组,如 chown(2) 和 mkdir(2) 中所述)

运行级别脚本仅在运行级别改变时执行。

另请参阅此主题:https://superuser.com/questions/65460/create-a-logoff-script-task-for-linux

答案2

  • 运行级别脚本是否仅在退出/注销时执行?

/etc/init.d 中的那些仅在启动/关闭时起作用,而不是在切换用户/注销/登录时起作用。

  • 这些是否取决于用户,也就是说,我只想为我的用户运行它(在这种情况下并不那么重要,请记住)?

因为它们在登录之前运行:不,它们不依赖于用户。

  • 我应该选择哪个运行级别(我猜是 5)?

Ubuntu 通常使用 2 作为标准运行级别。你可以使用以下命令进行测试

runlevel

在壳中。

  • 我应该把脚本放在其他地方吗?根据 brownian 的说法,您可以使用 ~/.logout,但更好的解决方案是生成具有适当 Group-ID 的文件。这可以通过使用 sg 启动编辑器来完成。

    sg 分享 gedit

sg作用类似于su- 切换用户/切换组。也许您可以将启动器放入面板中,以便于访问。布朗的整个目录解决方案看起来更好。

  • 另外,我想象该脚本将由 root 运行,因此脚本中不需要 sudo,对吗?

没错。

相关内容