我读过一些关于 chmod 的内容,对文件权限有一定了解。但我对“所有者”的概念有点困惑。
如果我的用户帐户是某个目录的“所有者”,但没有权限(chmod 0000),那么我的用户是否比系统上的其他随机用户拥有更多的权限?假设这两个用户都不是超级用户?
答案1
chmod 00000
使所有者和组无法访问目录/文件。您和拥有该文件的组唯一能做的就是使用 删除它rm -rf tmp/
。没有什么比下面这个例子更好的了:
$ mkdir tmp
$ chmod 00000 tmp
$ cd tmp
bash: cd: tmp: Permission denied
你可以使用以下命令查看目录ls -l
d--------- 2 rinzwind rinzwind 4096 Oct 13 14:35 tmp
但只有拥有sudo
权限才能进入目录......
$ sudo su
# cd tmp
#
关于其他帖子:是的,您可以删除 chmodded 为 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
$
作为所有者,您还可以重置权限。其他人(root 除外)也可以这样做。
答案2
目录只是一种特殊的文件,因此以下内容同样适用于目录和文件。
作为所有者,您可以重置对文件的访问权限,以便您可以读取该文件。除 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
答案3
是的。作为所有者,您可以chmod
授予自己所需的任何权限。
答案4
如果我的用户帐户是目录的“所有者”,但没有权限(chmod 0000),那么我的用户是否比系统上的其他随机用户有更多的能力去做任何事情?
简单的答案是,不,当目录被 chmode 为 时,所有者将不再具有成为目录所有者的任何其他便利0000
。因为所有者的权限位也是0
,这意味着他没有读/写/执行权限。