如何从 init bash 脚本 Linux 获取用户(在创建用户会话之前)

How to get user from init bash script Linux(before user session created)

在 Debian,我试图在每次重启后更改特定的目录所有权。但在我的情况下它不起作用,因为用户总是在重启时设置为 root。 当我在终端中尝试这个时它运行良好(我认为是因为创建了 myUser 会话)但我需要在重新启动时更改它。

到目前为止,我提到了这个 link 但它对我来说失败了:https://unix.stackexchange.com/questions/183183/using-chown-useruser-inside-bash-script

CURRENT_USER=$(who | awk 'NR==1{print }')
sudo chown -R $CURRENT_USER:$CURRENT_USER /myfile/foo

第二种方式:

sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER /myfile/foo

我不想这样写:

sudo chown myUser:myUser /myfile/foo

Linux是一个多用户系统。可以有多个用户同时登录,也可以根本没有用户登录。通常没有办法定义像“默认”用户这样的东西。但是,如果机器设置为典型的单用户公司计算机,则可以使用一些变通方法来查找“默认”用户。

  • 以 UID 为 1000 的用户为例。如果所有机器都设置为“默认”用户的 UID 为 1000,您可以在 chown 命令中使用此 UID 而不是用户名。
  • 查找 /home 的子目录。只有标准 (non-system) 用户有主目录。在标准系统上,它们以用户名命名。

蜜蜂设置:您的脚本将高度依赖于机器的特定设置。此外,对于您的问题,可能会有侵入性较小、机器依赖性较低且更安全的解决方案。你可以试试

  • 将 root 保留为目录的所有者,但为其他用户启用读写权限。
  • 为目录设置粘滞位(就像 /tmp)。
  • 创建一个拥有该目录的新组并将用户添加到其中。

最后一个选项其实用的很多。例如,通常 Web 服务器将其源目录归一个名为 www 的组所有,而允许 read/write 数据的用户将添加到该组。这在真实的多用户系统(如服务器或共享计算机)中也很有效。