我有一个非常好的目录设置(即用自述文件和简单的导航等进行组织)。我希望人们能够访问此目录中的文件,甚至可以将它们复制到自己的目录(在同一台计算机上),但我不希望我自己的目录被动摇/搞乱,否则一切都可能被毁掉。无论如何,是否可以对目录中的某些命令加锁,或者是否可以对某些文件加锁?
例如,某人应该能够像这样自由地穿过空间:
$ cd ThisDirectory
$ cd ThatDirectory
但他们不应该能够像这样移动这些文件:
$ mv ThisDirectory
$ mv ThatDirectory
有没有办法对特定文件的 mv 命令加锁?
答案1
只需以每个人都可以读取文件的方式更改文件的权限,但不能更改它们。
当你用来ls -l
列出你的文件时,你会得到类似的东西
ls -l file
-rw-rwxr-- 1 rafael Grp 1620 Aug 18 14:58 file
第一组破折号/字母设置允许三个不同的(但不互相排除)组,即用户(你),团体,其他的(或这台机器/服务器中的每个人)。
所以上面的例子可以理解为
- It's a file
rw- Owner may read and write
rwx Others in group may read, write and execute
r-- Other users (not in group) may read
为了防止任何人更改您的文件,请设置它们
chmod go-w file
这会将它们设置为除您之外的任何人都不可写
ls -l file
-rw-r-xr-- 1 rafael Grp 1620 Aug 18 14:58 file
让我深入研究这些破折号/字母:
-rw-rwxr-- 1 rafael Grp 1620 Aug 18 14:58 file
第一个指示文件类型(目录、符号链接、命名管道)。然后有三组三个符号,每组由一个r(为了读), 一w(为了写),还有一个X(为了eX执行),或者如果该权限被禁用,则其位置由破折号填充。
您的目录应该具有相同的权限,并为所有用户添加“执行”权限(“执行”目录意味着访问其中的任何条目)。如果您的目录是可写的,则其中的条目可能会被删除或重命名。
在命令中chmod
,也分为三个部分去(表示组和其他),“-”(减号)是删除(许可),他们是更改的(列表)权利
所以
chmod u-wx file # prevent you reading the file or executing it
chmod u+wx file # permit you to read nte file or execute it
chmod ug+rx file # permit you and your group to read or execute it
chmod ugo-rwx file # permit no access, for anybody
最后一点
chmod
还支持-R
, 进行递归,因此如果您有一个名为 myDir 的目录:
chmod -R go-w myDir # protect everything in that directory and its sub directories/files
chmod -R go+rX myDir # grant reading access in that directory and its sub directories/files
应该做到这一点。
感谢您的提问,我希望它也能帮助其他人!