Shell脚本,用于向目录和目录内的文件添加完全读写和执行权限
我对shell脚本非常陌生,但至少我尝试过一些东西,但都不起作用。我想为我网站的Shell脚本,用于向目录和目录内的文件添加完全读写和执行权限,shell,chmod,Shell,Chmod,我对shell脚本非常陌生,但至少我尝试过一些东西,但都不起作用。我想为我网站的httpdocs文件夹以及所有用户和组的httpdocs/mysite文件夹和php文件httpdocs/mysite/_conn.php添加读写和执行权限 我有以下内容,但不起作用,change permission.sh #!/bin/bash /bin/date >> /tmp/event_handler.log chmod g=drwx "/var/www/vhosts/domain.com/h
httpdocs
文件夹以及所有用户和组的httpdocs/mysite
文件夹和php文件httpdocs/mysite/_conn.php
添加读写和执行权限
我有以下内容,但不起作用,change permission.sh
#!/bin/bash
/bin/date >> /tmp/event_handler.log
chmod g=drwx "/var/www/vhosts/domain.com/httpdocs"
chmod o=drwx "/var/www/vhosts/domain.com/httpdocs"
chmod u=drwx "/var/www/vhosts/domain.com/httpdocs"
chmod g=drwx "/var/www/vhosts/domain.com/httpdocs/mysite"
chmod o=drwx "/var/www/vhosts/domain.com/httpdocs/mysite"
chmod u=drwx "/var/www/vhosts/domain.com/httpdocs/mysite"
chmod g=drwx "/var/www/vhosts/domain.com/httpdocs/mysite/_conn.php"
chmod o=drwx "/var/www/vhosts/domain.com/httpdocs/mysite/_conn.php"
chmod u=drwx "/var/www/vhosts/domain.com/httpdocs/mysite/_conn.php"
上面的脚本不起作用。我需要在此
更改权限.sh
文件中进行哪些更改?chmod o=drwx
无效,您需要使用chmod o+rwx
完整脚本:
#!/bin/bash
/bin/date >> /tmp/event_handler.log
chmod ugo+rwx "/var/www/vhosts/domain.com/httpdocs"
chmod ugo+rwx "/var/www/vhosts/domain.com/httpdocs/mysite"
chmod ugo+rwx "/var/www/vhosts/domain.com/httpdocs/mysite/_conn.php"
您甚至可以将3个
chmod
命令组合成一个,正如我上面所示。我创建了两个函数来实现相同的想法,具有不同的可访问性级别
它们中的每一个都运行find
并指定file或dir(-type
d或f),然后设置相应的priv,从而包括x
以使其可读
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ chmod RWX ~~~~~~~
echo "Defining function 'chmod_group_rw' which requires single pathname passed"
function chmod_group_rw() {
DEST=${1?'which path? (Can use *name* if all matches desired)'}
find ${DEST} -type d -exec chmod 770 {} \;
find ${DEST} -type f -exec chmod 660 {} \;
}
echo "Defining function 'chmod_all_rw' which requires single pathname passed"
function chmod_all_rw() {
DEST=${1?'which path? (Can use *name* if all matches desired)'}
find ${DEST} -type d -exec chmod 777 {} \;
find ${DEST} -type f -exec chmod 666 {} \;
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ chmod RO ~~~~~~~
echo "Defining function 'chmod_archive_readonly' which requires single pathname passed"
function chmod_archive_readonly() {
DEST=${1?'which path? (Can use *name* if all matches desired)'}
find ${DEST} -type d -exec chmod 555 {} \;
find ${DEST} -type f -exec chmod 444 {} \;
}
它有助于不必记住所有细节,并且可以用于发送它的任何路径
其中任何一个都可以在shell脚本中定义,然后在需要时调用,例如:
#!/bin/bash
/bin/date >> /tmp/event_handler.log
function chmod_all_rw() {
DEST=${1?'which path? (Can use *name* if all matches desired)'}
find ${DEST} -type d -exec chmod 777 {} \;
find ${DEST} -type f -exec chmod 666 {} \;
}
chmod_all_rw "/var/www/vhosts/domain.com/httpdocs"
我会尝试一下,过一会儿让你知道。那没用。可能是服务器上的某些其他脚本阻止添加rwx权限。实际上,我正在通过API在Plesk中创建一个新网站,并且我已经设置了一个事件处理程序,每当创建一个新主机时,它都会执行一个
.sh
文件。该.sh
文件具有应应用权限的上述代码。不幸的是,它不适用。有什么想法吗?使用shell上的触摸foobar
创建一个新文件,然后输入chmod ugo+rwx foobar
查看是否有任何错误。最后,使用ls-loobar
命令检查权限。正如我所说,我是sh
新手。我不知道怎么做。我的意思是我不知道触摸和ls-l命令或热执行它们。@Illusion如果/var/www/vhosts/domain.com/httpdoc
这些都是root所有的,你需要sudo chmod
,这是从@anubhava的回答中收集到的,要为其设置权限的文件的所有权必须是您,而不是root用户或任何其他用户。