[Linux Shell学习系列三]常用Shell(Bash)命令-管理文件或目录权限

Posted workingdiary

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Linux Shell学习系列三]常用Shell(Bash)命令-管理文件或目录权限相关的知识,希望对你有一定的参考价值。

D8

1. ls命令

之前讲过,使用ls -l可显示文件和目录的权限,这里不重复。

 

2. chmod命令

chmod命令用户修改文件或目录的权限。

可使用的模式有两种:

1)符号表达式模式,格式:chmod [OPTION]...[ugoa][[+-=][rwxug]][,...] FILE...

其中:

a)字母"ugoa"的组合控制哪些用户对文件的访问权限将被改变,如果不给出,则与a结果相同。

u:文件或目录的所有者

g:文件或目录的用户组的成员

o:不在文件或目录的用户组中的其他用户

a:所有用户,即(ugo)

b)操作符“+-=”表示权限的赋予和撤销。

+:选定的权限将被添加

-:选定的权限将被移除

=:只拥有选定的权限

$ ls -l a.txt #查看文件权限
-rw-rw-r--. 1 user1 user1 0 May 11 15:32 a.txt

$ chmod g-w a.txt #用户组删除写权限
$ ls -l a.txt 
-rw-r--r--. 1 user1 user1 0 May 11 15:32 a.txt

$ chmod o+w a.txt #其他用户添加写权限
$ ls -l a.txt 
-rw-r--rw-. 1 user1 user1 0 May 11 15:32 a.txt

$ chmod u=w a.txt #所有者只保留写权限
$ ls -l a.txt 
--w-r--rw-. 1 user1 user1 0 May 11 15:32 a.txt

$ chmod o=g a.txt #其他用户的权限配置为与用户组一致
$ ls -l a.txt 
--w-r--r--. 1 user1 user1 0 May 11 15:32 a.txt

$ chmod a+rwx a.txt #为所有人赋予读写和执行权限
$ ls -l a.txt 
-rwxrwxrwx. 1 user1 user1 0 May 11 15:32 a.txt

2)八进制位模式:用数字表示读(4)、写(2)、执行(1)权限,而每个用户权限组的值就是读写和执行这三个数字组合的相加得到的8进制数(0至7)。

$ chmod 777 a.txt #修改文件权限,7表示rwx,表示所有人都具有读写和执行

$ chmod -R 775 * #递归地修改目录下所有文件和子目录的权限,5表示r-x,表示所有者和用户组具有读写执行,而其他用户只有读和执行

$ find . -type f -exec chmod 777 {} ; #结合find命令只修改文件的权限

 

3. chown、chgrp命令

chown命令用于修改文件或目录的所有者和用户组信息。

语法:chown [OPTION]... [OWNER][:[GROUP]] FILE

# chown root a.txt #修改文件的所有者
# ls -l a.txt 
-rwxrwxrwx. 1 root user1 0 May 11 15:32 a.txt

# chown :root a.txt #修改文件的用户组
# ls -l a.txt 
-rwxrwxrwx. 1 root root 0 May 11 15:32 a.txt

# chown user1:user1 a.txt #同时修改所有者和用户组
# ls -l a.txt 
-rwxrwxrwx. 1 user1 user1 0 May 11 15:32 a.txt

# ln -s a.txt als #创建软连接
# ls -l
lrwxrwxrwx. 1 user1 user1    5 May 13 10:57 als -> a.txt
-rwxrwxrwx. 1 user1 user1    0 May 11 15:32 a.txt

# chown root:root als #尝试修改软链接的所有者和用户组,发现实际修改了指向的文件
# ls -l
lrwxrwxrwx. 1 user1   user1      5 May 13 10:57 als -> a.txt
-rwxrwxrwx. 1 root   root      0 May 11 15:32 a.txt

# chown -h :root als #使用-h选项,强制地修改软链接
# ls -l
lrwxrwxrwx. 1 user1 root      5 May 13 10:57 als -> a.txt
-rwxrwxrwx. 1 root root    0 May 11 15:32 a.txt

# chown --from=user1 root a.txt #使用--from选项,可以仅在当前所有者或用户组匹配指定所有者或用户组时,才修改

# chown --from=:user1 :root a.txt #使用--from选项,此处为检查并修改用户组

# chown -R root:root /root #递归地修改目录下所有文件和子目录

通过目录的软链接递归的修改目录下文件及子目录

# mkdir d/d1 d/d2 d/d3
# ln -s d d_lns #为目录d创建软链接
# ls -l
drwxr-xr-x. 5 root   root   4096 May 13 11:09 d
lrwxrwxrwx. 1 root   root      1 May 13 11:09 d_lns -> d
# ls -l d
total 12
drwxr-xr-x. 2 root root 4096 May 13 11:09 d1
drwxr-xr-x. 2 root root 4096 May 13 11:09 d2
drwxr-xr-x. 2 root root 4096 May 13 11:09 d3

# chown -R user1:user1 d_lns #尝试使用-R选项修改软链接的所有者和用户组,发现只修改了软链接,而没有修改指向的目录及子目录,因为默认情况下chown不能穿越软链接
# ls -l
drwxr-xr-x. 5 root   root   4096 May 13 11:09 d
lrwxrwxrwx. 1 user1 user1    1 May 13 11:09 d_lns -> d
# ls -l d
total 12
drwxr-xr-x. 2 root root 4096 May 13 11:09 d1
drwxr-xr-x. 2 root root 4096 May 13 11:09 d2
drwxr-xr-x. 2 root root 4096 May 13 11:09 d3


# chown -R -H user1:user1 d_lns #使用-H选项,配合-R选项通过软链接递归的修改目录及子目录的所有者和用户组
# ls -l
drwxr-xr-x. 5 user1 user1 4096 May 13 11:09 d
lrwxrwxrwx. 1 user1 user1    1 May 13 11:09 d_lns -> d
# ls -l d
total 12
drwxr-xr-x. 2 user1 user1 4096 May 13 11:09 d1
drwxr-xr-x. 2 user1 user1 4096 May 13 11:09 d2
drwxr-xr-x. 2 user1 user1 4096 May 13 11:09 d3

 

以上是关于[Linux Shell学习系列三]常用Shell(Bash)命令-管理文件或目录权限的主要内容,如果未能解决你的问题,请参考以下文章

[Linux Shell学习系列三]常用Shell(Bash)命令-管理文件或目录权限

[Linux Shell学习系列三]常用Shell(Bash)命令-管理文件或目录权限

面试系列三 之 项目涉及技术Shell

Linux实验三

[Linux Shell学习系列十二]管道和过滤器-2.过滤器

[Linux Shell学习系列十二]管道和过滤器-2.过滤器