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



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

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

CURRENT_USER=$(who|awk'NR==1{print$1}'(
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的用户。如果所有的机器都被设置成使得;默认";用户具有UID1000,您可以在chown命令中使用此UID而不是用户名
  • 查找/home的子目录。只有标准(非系统(用户才有主目录。在标准系统中,它们是用用户名命名的

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

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

最后一个选项实际上使用了很多。例如,web服务器通常将其源目录归一个名为www的组所有,并将允许读取/写入数据的用户添加到该组中。这也适用于真正的多用户系统,如服务器或共享机器。

最新更新