chmod命令详解

chmod命令详解

简介

这个命令主要是和权限相关的操作。

比如在一个目录下查看文件用ls -lah,就会出现像下面的形式

drwxrwxr-x 5 pengkun pengkun 4.0K 11月  9 16:58 .
drwxrwxr-x 3 pengkun pengkun 4.0K 11月  6 12:40 ..
drwxrwxr-x 4 pengkun pengkun 4.0K 11月  9 16:55 data
drwxrwxr-x 3 pengkun pengkun 4.0K 11月  7 10:22 datasets
-rw-rw-r-- 1 pengkun pengkun 6.5K 11月  9 16:54 main2.py
-rw-rw-r-- 1 pengkun pengkun 9.1K 11月  7 16:16 main.py
drwxrwxr-x 4 pengkun pengkun 4.0K 11月  9 18:11 MNIST_GAN_results

这些的意思从左到右依次是 是目录还是文件即上面的d意思是个目录,-的意思是个文件;

接下来有9个字符,分别代表所有者权限, 组权限,其他用户权限, rwx分别代表可读可写可执行。

r-x代表可读可执行,但是没有写的权限。

从上面看出,这个功能是很必要的,因为这些规定了哪些人可以修改文件,哪些人不可以。

接下来会有两个名字,分别代表 所有者和用户组, 目前上面的都是我的名字,也可以是root。

一般可执行文件是比较明显的,比如在我这里显示的是非常的亮,比如.so文件。

一般前面的三个字母中都会有rx,不然的话连进入这个目录用cd都用不了,因为进入目录并列出其中的内容必须得读。所以如果不想让其他人看的话,直接把x的权限关掉就可以了。

修改权限

权限不是固定和一成不变的。所以就有更改的命令。应该用两种方式吧,

第一种是:

chmod g-w example.sh

其意思是去掉组权限里的写入权限。在上面g中组的意思,还有可以其他三个u,o, a,u 是文件和目录的所有者,所以对应的更改的是所有者的权限,g就是用户组,o是others的意思,即不在组中的其他用户,a是all的意思,即所有的用户,包括ugo.

-也可以是+-=中的三者都可以,+-即是增加减少权限,=的意思是不管以前是什么权限,现在的权限就是....比如

chmod u=w example.sh

即现在的所有者的权限只有写。 还有下面的

chmod u=g example.sh

意思是用文件的用户组权限来替换文件的所有者的权限,即把所有者的权限和用户组的权限设定为一样。

还有

chmod ugo+rwx example.sh

这个的意思是给所有人以读写执行的权限。

第二种是

用数字来算,r,w,x分别用4,2,1来代替,即2的幂。则rwx就是7,r-x就是5, rw-就是6. 那么上面的给所有的人所有的权限的话就可以这样来搞

chmod 777 example.sh

如果是对目录下的所有都要改的话,可以加上-R

chmod -R 775

就是对当前目录下的所有的东西全部将权限改成755,当然也包括子目录中的子目录,因为是递归。

但是如果只想对当前目录 下的子目录操作而不想对文件操作的话,可以这样。

find . -type d -exec chmod -R 775 {} \;

上面的分号不能够少。

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦