如何为目录路径中的每个目录设置权限

发布于 2024-12-01 18:34:24 字数 345 浏览 1 评论 0原文

我正在网络服务器上创建一个我希望可执行的远程目录路径。我使用以下命令远程创建它:

ssh user@machine mkdir -pa/b/c/d/e/f

接下来,我希望能够 chmod 目录 a< /code>-f 但避免在远程目录根目录上执行 chmod -r

是否有一种优雅的机制可以从 a/b/c/d/e/f 路径开始并执行有效的 chmod a+xa; chmod a+xa/b; chmod a+xa/b/c; ... 不解析每个 chmod?

I'm creating a remote directory path on a webserver that I'd like to be executable. I create it remotely with a command like:

ssh user@machine mkdir -p a/b/c/d/e/f

Next, I'd like to be able to chmod directories a-f but avoid doing a chmod -r on the remote directory root.

Is there an elegant mechanism to start with the a/b/c/d/e/f path and do an effective chmod a+x a; chmod a+x a/b; chmod a+x a/b/c; ... without parsing out each chmod?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

临走之时 2024-12-08 18:34:24

可能是这样的:

DIR=
for i in a b c d e f; do
    DIR=$DIR$i/
    chmod a+x $DIR
done

Could be something like this:

DIR=
for i in a b c d e f; do
    DIR=$DIR$i/
    chmod a+x $DIR
done
夏尔 2024-12-08 18:34:24

有人认为您可能会尝试制作一个远程 bash 脚本,如下所示(目录名称应以空格分隔):

#!/bin/bash
for i in $*
do
  mkdir $i
  chmod a+x $i
  cd $i
done

或者您可以将 umask 设置为 umask 066 ,这将设置您创建的任何内容的默认权限。请参阅网站了解说明。

One think you might try would be to make a remote bash script as follows (directory names should be separated by spaces):

#!/bin/bash
for i in $*
do
  mkdir $i
  chmod a+x $i
  cd $i
done

Or you could set umask as umask 066 which will set the default permissions of anything you create. See this site for an explanation.

尸血腥色 2024-12-08 18:34:24
#!/bin/sh

perm=$1
shift

# iterate over all argument paths
for p; do
    # chmod up successively from destination 
    while true; do
        case $p in
            */* ) chmod "$perm" "$p"
                   p=${p%/*} ;;
            * ) break ;;
        esac
    done
done
#!/bin/sh

perm=$1
shift

# iterate over all argument paths
for p; do
    # chmod up successively from destination 
    while true; do
        case $p in
            */* ) chmod "$perm" "$p"
                   p=${p%/*} ;;
            * ) break ;;
        esac
    done
done
小耗子 2024-12-08 18:34:24

您可以使用find命令

find /path_at_remote -type d -exec chmod a+x "{}" \;  (not tested)

you can use find command

find /path_at_remote -type d -exec chmod a+x "{}" \;  (not tested)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文