携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情
权限与命令间的关系
总结一下这个星期学的内容
-
让使用者能进入某目录成为『可工作目录』的基本权限为
- 可使用的命令: 例如 cd 等变换工作目录的命令;
- 目录所需权限: 使用者对这个目录至少需要具有 x 的权限
- 额外需求: 如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限.
-
使用者在某个目录内读取一个文件的基本权限为
- 可使用的命令: 例如本章谈到的 cat, more, less等等
- 目录所需权限: 使用者对这个目录至少需要具有 x 权限;
- 文件所需权限: 使用者对文件至少需要具有 r 的权限才行
-
让使用者可以修改一个文件的基本权限为
- 可使用的命令: 例如 nano 或未来要介绍的 vi 编辑器等;
- 目录所需权限: 使用者在该文件所在的目录至少要有 x 权限;
- 文件所需权限: 使用者对该文件至少要有 r, w 权限
-
让一个使用者可以创建一个文件的基本权限为
- 目录所需权限: 使用者在该目录要具有 w,x 的权限,重点在 w
-
让使用者进入某目录并运行该目录下的某个命令之基本权限为
- 目录所需权限: 使用者在该目录至少要有 x 的权限;
- 文件所需权限: 使用者在该文件至少需要有 x 的权限
which whereis locate find特点和区别
简单说一下四者之间的特点和区别
which
- 主要是用来查找系统PATH目录下的可执行文件.说白了就是查找那些我们已经安装好的可以直接执行的命令
which ls
alias ls='ls --color=auto'
/usr/bin/ls
whereis
- 查找二进制(命令)、源文件、man文件.与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广
whereis ls
ls: /usr/bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
locate
- 通过数据库查找文件,但是这个命令的适用范围就比whereis大多了.这个命令可以找到任意你指定要找的文件,并且可以只输入部分文件名(前面两个命令是要输入完整文件名的).同时locte还可以通过-r选项使用正则表达式,功能十分强大
locate ls | head -n 5
/data/0.22/apache2.2.17/include/apr_pools.h
/data/0.22/apache2.2.17/manual/vhosts/details.html
/data/0.22/apache2.2.17/manual/vhosts/details.html.en
/data/0.22/apache2.2.17/manual/vhosts/details.html.fr
/data/0.22/apache2.2.17/manual/vhosts/details.html.ko.euc-kr
- 新创建的文件立即用locate查找是查找不到的,要updatedb命令更新索引数据库
find
- 通过直接搜索硬盘的方式查找的,所以可以保证查找的信息绝对可靠.并且支持各种查找条件.但是功能强大肯定是有代价的,那就是搜索速度慢.所以一般前边几种找不出来的情况下才会使用find.另外如果要实现某些特殊条件的查找,比如找出某个用户的size最大的文件,那就只能用find了
总结
- which主要用来查找可直接执行的命令,可以查找别名.适用于查找安装好的命令
- whereis比which的搜索范围大了一些,同时可以查找源文件和man文件.适用于查找安装好的命令.
- locate的查找范围更大,可以查找任意类型文件.适合快速查找指定文件.
- find最强大也最慢.适合查找前几个命令找不到的文件