Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何继承父目录';的所有者和组或当前帐户用户_Linux_Git_Terminal_Chown - Fatal编程技术网

Linux 如何继承父目录';的所有者和组或当前帐户用户

Linux 如何继承父目录';的所有者和组或当前帐户用户,linux,git,terminal,chown,Linux,Git,Terminal,Chown,在终点站,我知道我可以 chown whatever:whatever .* 我要做的是动态地将username和group设置为当前域所有者,而不是root。有没有一个简单的方法可以做到这一点 一些背景:我正在使用Git作为根目录推送到我的服务器,然后签出到public\uHTML。这将使所有新文件和目录归root:root所有。我想在hooks/post-receive中添加一行,将所有者更改为域用户而不是根用户,但如果不需要,我不想显式指定域用户。这将递归地将所有文件和目录设置为当前目录

在终点站,我知道我可以

chown whatever:whatever .*
我要做的是动态地将username和group设置为当前域所有者,而不是root。有没有一个简单的方法可以做到这一点


一些背景:我正在使用Git作为根目录推送到我的服务器,然后签出到public\uHTML。这将使所有新文件和目录归root:root所有。我想在hooks/post-receive中添加一行,将所有者更改为域用户而不是根用户,但如果不需要,我不想显式指定域用户。

这将递归地将所有文件和目录设置为当前目录的所有者/组

 #!/bin/ksh
 OWNER=`ls -ld ./ | cut --delimiter=" " --fields="3"`
 GROUP=`ls -ld ./ | cut --delimiter=" " --fields="4"`
 chown -R $OWNER:$GROUP *
测试该命令,确保它与您的Linux风格兼容

 #!/bin/ksh
 OWNER=`ls -ld ./ | cut --delimiter=" " --fields="3"`
 GROUP=`ls -ld ./ | cut --delimiter=" " --fields="4"`
 echo $OWNER:$GROUP

这将递归地将所有文件和目录设置为当前目录的所有者/组

 #!/bin/ksh
 OWNER=`ls -ld ./ | cut --delimiter=" " --fields="3"`
 GROUP=`ls -ld ./ | cut --delimiter=" " --fields="4"`
 chown -R $OWNER:$GROUP *
测试该命令,确保它与您的Linux风格兼容

 #!/bin/ksh
 OWNER=`ls -ld ./ | cut --delimiter=" " --fields="3"`
 GROUP=`ls -ld ./ | cut --delimiter=" " --fields="4"`
 echo $OWNER:$GROUP

我能想到的最简单的是

chown -R `stat . -c %u:%g` *

您也可以在这里使用
$(…)
而不是反勾号。

我能想到的简单方法是

chown -R `stat . -c %u:%g` *

您也可以在此处使用
$(…)
而不是反勾号。

可能不完全是您想要做的,但这是搜索中出现的第一个关于将文件/文件夹设置为父/母所有者的线程。我通过“参考”开关实现了这一点。因此,请位于子目录中,然后运行:

chown * -Rv --reference=/PATH/TO/PARENT

这会将子目录的所有内容设置为您想要的任何引用文件,在我的情况下,我使用的是父目录。

可能不完全是您想要做的,但这是在搜索中将文件/文件夹设置为父目录所有者时出现的第一个线程。我通过“参考”开关实现了这一点。因此,请位于子目录中,然后运行:

 #!/bin/ksh
 OWNER=`ls -ld ./ | cut --delimiter=" " --fields="3"`
 GROUP=`ls -ld ./ | cut --delimiter=" " --fields="4"`
 chown -R $OWNER:$GROUP *
chown * -Rv --reference=/PATH/TO/PARENT


这会将子目录的所有内容设置为您想要的任何引用文件,在我的情况下,我使用的是父目录。

那么“域用户”是父目录的所有者吗?在这种情况下,可以在directy上设置SUID和SGID位。顺便说一句,Git不知道用户ID,所以您不需要以root身份推送。请小心使用“*”。你可能会改变一些你不想做的事情……默认情况下,域用户是/home/user(我正在推到一个whm服务器),该目录中的每个目录都归他们所有。当我使用git推送时,我是以root身份ssh的。这就是我假设我签出的文件归root:rootSo所有的原因“域用户”是父目录的所有者?在这种情况下,可以在directy上设置SUID和SGID位。顺便说一句,Git不知道用户ID,所以您不需要以root身份推送。请小心使用“*”。你可能会改变一些你不想做的事情……默认情况下,域用户是/home/user(我正在推到一个whm服务器),该目录中的每个目录都归他们所有。当我使用git推送时,我是以root身份ssh的。这就是我假设我签出的文件归root所有的原因:rootThis看起来不错,谢谢!当我下一次在我的电脑上时将进行测试。与其在这么多文本处理中跳舞,不如使用好的旧
stat
stat
似乎是更好、更准确的方法。这看起来很合适,谢谢!当我下一次在我的电脑上时将进行测试。与其在如此多的文本处理中跳舞,不如使用好的旧
stat
stat
似乎是更好、更准确的方法。很好!我想知道是否有办法从终端获取域/帐户用户(对不起,我不知道如何引用此用户,但我指的是/home/user),我想知道是否可以在该用户从post receive中运行git checkout命令来阻止owner:group首先出错?@user844621,你做错了,请阅读。@user844621,要回答第一条注释,请查看
id
命令以及
$UID
$GID
环境变量。谢谢id'为我提供了当前用户,我在ssh中的身份是。假设我以root用户的身份使用ssh,但随后导航到/home/anotheruser/public\html是否还有另一个变量可以给我“anotheruser”?很好!我想知道是否有办法从终端获取域/帐户用户(对不起,我不知道如何引用此用户,但我指的是/home/user),我想知道是否可以在该用户从post receive中运行git checkout命令来阻止owner:group首先出错?@user844621,你做错了,请阅读。@user844621,要回答第一条注释,请查看
id
命令以及
$UID
$GID
环境变量。谢谢id'为我提供了当前用户,我在ssh中的身份是。假设我已经以root用户身份使用ssh,但随后导航到/home/anotheruser/public\html是否还有另一个变量会给我“anotheruser”?
 #!/bin/ksh
 OWNER=`ls -ld ./ | cut --delimiter=" " --fields="3"`
 GROUP=`ls -ld ./ | cut --delimiter=" " --fields="4"`
 chown -R $OWNER:$GROUP *