我已经阅读了一些关于 chmod 的内容,并且对文件权限有了高层次的了解。但我对“所有者”的概念有些困惑。
如果我的用户帐户是目录的“所有者”但没有权限 (chmod 0000),那么我的用户是否比系统上的另一个随机用户更有能力执行任何操作?假设两个用户都不是超级用户?
chmod 00000使所有者和组无法访问目录/文件。您和拥有该文件的组唯一能做的就是使用rm -rf tmp/. 没有什么比一个例子更好的了:
$ mkdir tmp
$ chmod 00000 tmp
$ cd tmp
bash: cd: tmp: Permission denied
Run Code Online (Sandbox Code Playgroud)
你可以看到目录 ls -l
d--------- 2 rinzwind rinzwind 4096 Oct 13 14:35 tmp
Run Code Online (Sandbox Code Playgroud)
并且只有拥有sudo 权限才能进入目录...
$ sudo su
# cd tmp
#
Run Code Online (Sandbox Code Playgroud)
关于其他帖子:是的,您可以删除已修改为 00000 的文件/目录:
$ mkdir tmp
$ chmod 00000 tmp
$ rm -rf tmp/
$ touch 1
$ chmod 00000 1
$ rm 1
rm: remove write-protected regular empty file `1'? y
$
Run Code Online (Sandbox Code Playgroud)
作为所有者,您还可以重置权限。这也是允许的其他人(root 除外)。
目录只是一种特殊的文件,因此以下内容同样适用于目录和文件。
作为所有者,您可以重置对文件的访问权限,以便您随后可以读取该文件。除了 root 之外,其他用户将无法这样做。
在您重置访问权限之前,您将无法像其他用户一样访问该文件。
作为文件的所有者不允许您删除(删除它)。您必须具有对包含目录的写访问权限才能将其删除。
演示可以做什么和不能做什么的示例脚本。(不要以 root 身份运行,但需要 sudo 访问权限。):
#!/bin/bash
DIR=directory$$
FILE=$DIR/file$$
echo We can remove it - own both file and directory
mkdir $DIR
date > $FILE
chmod 0000 $FILE
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
echo We can not remove it - no write access to directory
date > $FILE
chmod 0000 $FILE
chmod -w $DIR
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
echo We can remove it - even if we do not own it
chmod 0000 $FILE
chmod +w $DIR
sudo chown root:root $FILE
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
echo We can not remove it - even if we can read it - do not own directory
date > $FILE
cat $FILE
sudo chown root:root $DIR
ls -ld $DIR $FILE
cat $$FILE
rm -f $FILE
ls -ld $DIR $FILE
echo
sudo chown $LOGNAME $DIR
echo Now we can clean up
rm -f $FILE
rmdir $DIR
# EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |