Linux 权限管理基本命令

电玩女神 2023-06-27 05:50 130阅读 0赞

一、Linux 文件的基本属性

  1. Linux系统中“一切皆文件”,使用 ll 或者 ls l 命令来显示一个文件的权限信息。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAyODU0_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAyODU0_size_16_color_FFFFFF_t_70 1

  1. 第一列: 文件类型(共10个字符) + 权限 --> man find 搜索type可看
  2. -:普通文件
  3. d:目录
  4. c:字符设备 --> /dev/tty 例如 USB接口、猫等一些串行端口设备
  5. b:块设备 --> /dev下查找 例如光驱,硬盘等属于块设备
  6. .:SELINUX相关
  7. l:链接文件 --> 软连接
  8. p:管道文件,特殊少见的设备
  9. 后面的9个字符每3个为一组[rwx],分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。
  10. [r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)。若没有其中的任何一个权限则用“-”表示。
  11. 执行的权限有两个字符可选,最常见的一个是“x”代表可执行。另一个是“s”代表套接口文件。
  12. 第二列:硬链接个数 默认从1开始
  13. 如果是目录,则默认是2(目录不做硬链接)为这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目)。
  14. (如果这只是一个普通文件,那“2”就代表这个文件有两个别名,这个文件被人创建了一个硬链接文件),总而言之它就是一个计数
  15. 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
  16. 第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
  17. 第五列:文件大小(默认字节数),如果想看K或者M等,前面加一个选项-h
  18. 第六-八列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
  19. 第九列:文件名或目录名。

更改文件属性

1、chmod:更改文件9个属性

2、chown:更改文件属主,也可以同时更改文件属组

3、chgrp:更改文件属组

对文件和目录文件的权限的正确认识

1)文件:

  1. r-读:对文件的内容有读的权限,对应命令:catmorelessheadtail
  2. w-写:可以修改文件的内容,对应命令:vivimecho等,注意:对文件的写权限不能删除文件本身,要删除文件必须拥有文件的父文件夹的写权限
  3. x-执行:表示拥有执行这个文件的权限,但是不是说有这个权限,文件就可以执行,文件是否可以执行,要看这个文件里的内容是否是执行的代码。

2)目录:

  1. r-读:是可以查看文件夹里的内容,对应命令:ls
  2. w-写:可以修改子目录和文件里的内容,也就是可以复制,删除,新建,移动文件夹里的子目录和文件,对应命令:cptouchmvrm
  3. x-执行:文件夹显示是不能运行的,对文件夹设置执行权限,表示可以进入到文件夹里边去,对应的命令:cd

二、更改文件或目录权限的9个属性

chmod命令:英文 change the permissions mode of a file

命令所在路径:/bin/chmod

功能:改变文件或目录权限

执行权限:所有使用者

语法: chmod [-cfvR] [—help] [—version] mode file…

参数说明

mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。权限用数字表示:r=4,w=2,x=1

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

注意:不是每一个Linux用户都有权限更改某个文件或目录权限,能更改文件或目录权限的只有两种用户

  1. 1root用户:root用户是linux系统权限最大的用户。别人不能干的事,root用户都能干。
  2. 2)文件的所有者:我们通过ls命令查看某个文件的详细信息,可以看到该文件的所有者。

常用的权限的数字模式又这几种:

  1. 644rw-r--r--):这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
  2. 755rwxr-xr-x):这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
  3. 777rwxrwxrwx):这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。

实例:

1)赋予abc目录下的file2.cfg文件,拥有者rwx,所属组rw,其他人r权限

  1. [root@centos7 abc]# ll
  2. 总用量 8
  3. -rw------- 1 root root 1440 12 12 14:22 file2.cfg
  4. drwxr-xr-x 2 root root 29 12 12 11:27 test22
  5. -rw-r--r-- 1 root root 57 12 12 14:37 test.txt
  6. [root@centos7 abc]# ^C
  7. [root@centos7 abc]# chmod u+rwx,g+rw,o+r ./file2.cfg
  8. [root@centos7 abc]# ll
  9. 总用量 8
  10. -rwxrw-r-- 1 root root 1440 12 12 14:22 file2.cfg
  11. drwxr-xr-x 2 root root 29 12 12 11:27 test22
  12. -rw-r--r-- 1 root root 57 12 12 14:37 test.txt

2)赋予abc目录下的test.txt文件,拥有者rwx,所属组rx,其他人r权限,数字操作754

  1. [root@centos7 abc]# chmod 754 ./test.txt
  2. [root@centos7 abc]# ll
  3. 总用量 8
  4. -rwxrw-r-- 1 root root 1440 12 12 14:22 file2.cfg
  5. drwxr-xr-x 2 root root 29 12 12 11:27 test22
  6. -rwxr-xr-- 1 root root 57 12 12 14:37 test.txt

3)赋予test22目录下的所有子目录和文件(递归赋予权限,包含该目录),拥有者rwx,所属组rx,其他人r权限,数字操作754

  1. [root@centos7 abc]# ll ./test22
  2. 总用量 4
  3. -rw------- 1 root root 1440 12 12 11:25 anaconda-ks.cfg
  4. drwxr-xr-x 2 root root 6 1 4 14:08 test_d
  5. [root@centos7 abc]# chmod -R 754 ./test22/
  6. [root@centos7 abc]# ll ./test22
  7. 总用量 4
  8. -rwxr-xr-- 1 root root 1440 12 12 11:25 anaconda-ks.cfg
  9. drwxr-xr-- 2 root root 6 1 4 14:08 test_d
  10. [root@centos7 abc]# ll
  11. 总用量 8
  12. -rwxrw-r-- 1 root root 1440 12 12 14:22 file2.cfg
  13. drwxr-xr-- 3 root root 43 1 4 14:08 test22
  14. -rwxr-xr-- 1 root root 57 12 12 14:37 test.txt

三、改变文件或目录拥有者权限

  1. 一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。

chown命令:英文 change file ownership

命令所在路径:/bin/chown

功能:更改文件属主,也可以同时更改文件属组

执行权限:系统管理者

语法: chown [-cfhvR] [—help] [—version] user[:group] file…

参数 :

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • --help : 显示辅助说明
  • --version : 显示版本

实例:

1)先创建一个lisi用户,和g_lisi用户组

通过useradd [户名]命令创建用户,通过passwd [用户名] 命令设置密码

通过 groupadd [用户组]命令创建用户组

  1. [root@centos7 abc]# useradd lisi
  2. [root@centos7 abc]# passwd lisi
  3. 更改用户 lisi 的密码
  4. 新的 密码:
  5. 无效的密码: 密码包含用户名在某些地方
  6. 重新输入新的 密码:
  7. passwd:所有的身份验证令牌已经成功更新。
  8. [root@centos7 abc]# groupadd g_lisi

2)将abc目录下的file2.cfg文件的拥有者改为lisi用户,所属组改为g_lisi用户组(若是递归修改,加 -R)

  1. [root@centos7 abc]# ll
  2. 总用量 8
  3. -rwxrw-r-- 1 root root 1440 12 12 14:22 file2.cfg
  4. drwxr-xr-- 3 root root 43 1 4 14:08 test22
  5. -rwxr-xr-- 1 root root 57 12 12 14:37 test.txt
  6. [root@centos7 abc]# chown -c lisi:g_lisi ./file2.cfg
  7. changed ownership of "./file2.cfg" from root:root to lisi:g_lisi
  8. [root@centos7 abc]# ll
  9. 总用量 8
  10. -rwxrw-r-- 1 lisi g_lisi 1440 12 12 14:22 file2.cfg
  11. drwxr-xr-- 3 root root 43 1 4 14:08 test22
  12. -rwxr-xr-- 1 root root 57 12 12 14:37 test.txt

四、改变文件或目录所属组

chgrp命令:英文 change file group ownership

命令所在路径:/bin/chown

功能描述:用于变更文件或目录的所属群组。

执行权限:系统管理者

语法: chgrp [-cfhRv] [—help] [—version] [所属群组] [文件或目录…]

  1. chgrp \[-cfhRv\] \[--help\] \[--reference=<参考文件或目录>\] \[--version\] \[文件或目录...\]

参数说明

  -c或—changes 效果类似”-v”参数,但仅回报更改的部分。

  -f或—quiet或—silent  不显示错误信息。

  -h或—no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。

  -R或—recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

  -v或—verbose  显示指令执行过程。

  —help  在线帮助。

  —reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

  —version  显示版本信息。

实例:

1)将test22目录下的test_d目录的所属组,改为g_lisi用户组

  1. [root@centos7 abc]# ll ./test22
  2. 总用量 4
  3. -rwxr-xr-- 1 root root 1440 12 12 11:25 anaconda-ks.cfg
  4. drwxr-xr-- 2 root root 6 1 4 14:08 test_d
  5. [root@centos7 abc]# chgrp -v g_lisi ./test22/test_d/
  6. changed group of "./test22/test_d/" from root to g_lisi
  7. [root@centos7 abc]# ll ./test22
  8. 总用量 4
  9. -rwxr-xr-- 1 root root 1440 12 12 11:25 anaconda-ks.cfg
  10. drwxr-xr-- 2 root g_lisi 6 1 4 14:08 test_d

2)将test22目录下的所有文件及目录的所属组,改为abc目录的所属组(递归修改)

  1. [root@centos7 abc]# ll
  2. 总用量 8
  3. -rwxrw-r-- 1 lisi g_lisi 1440 12 12 14:22 file2.cfg
  4. drwxr-xr-- 3 root root 43 1 4 14:08 test22
  5. -rwxr-xr-- 1 root root 57 12 12 14:37 test.txt
  6. [root@centos7 abc]# ll ./test22
  7. 总用量 4
  8. -rwxr-xr-- 1 root root 1440 12 12 11:25 anaconda-ks.cfg
  9. drwxr-xr-- 2 root g_lisi 6 1 4 14:08 test_d
  10. [root@centos7 abc]# chgrp -vR --reference=. ./test22
  11. "./test22/anaconda-ks.cfg" 的所属组已保留为root
  12. changed group of "./test22/test_d" from g_lisi to root
  13. "./test22" 的所属组已保留为root
  14. [root@centos7 abc]# ll
  15. 总用量 8
  16. -rwxrw-r-- 1 lisi g_lisi 1440 12 12 14:22 file2.cfg
  17. drwxr-xr-- 3 root root 43 1 4 14:08 test22
  18. -rwxr-xr-- 1 root root 57 12 12 14:37 test.txt
  19. [root@centos7 abc]# ll ./test22
  20. 总用量 4
  21. -rwxr-xr-- 1 root root 1440 12 12 11:25 anaconda-ks.cfg
  22. drwxr-xr-- 2 root root 6 1 4 14:08 test_d

五、查看,设置建立文件时预设的权限掩码

umask命令:英文 the user file-creation mask

命令所在路径:shell 内置命令

功能描述:查看,设置建立文件时预设的权限掩码

语法:umask [-S] [权限掩码]

参数说明:

-S  以文字的方式(rwx形式)来表示权限掩码。

1、umask介绍

  1. linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。

注意:可能大家不太明白这个命令的意思,我们分别执行umask和 umask -S

2、查看默认/当前权限掩码

  1. [root@centos7 ~]# umask
  2. 0022
  3. [root@centos7 ~]# umask -S
  4. u=rwx,g=rx,o=rx
  5. 可以看到 umask 执行显示结果是 0022,第一个0表示特殊权限,可以暂时不用理会。然后,后三位022表示权限的掩码值(与普通权限(rwx)有关),可以简单理解为:
  6. 若创建为文件,则 666rw-rw-rw-) - 022 = 644rw-r--r--)
  7. 若创建为目录,则 777rwxrwxrwx)- 022 = 755rwxr-xr-x

通过实例验证一下:

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAyODU0_size_16_color_FFFFFF_t_70 2][]

注意:

  1. Linux系统中,所有新创建的文件都是没有可执行权限的。这是由于Linux系统的一种自我保护,因为类似的病毒木马程序都是具有可执行权限的。所以在Linux系统中,新创建的文件是没有可执行权限的。对于新建的文件最高的权限666rw-rw-rw-)

3、暂时修改默认/当前权限掩码(重启失效,了解即可)

  1. 设置当前的权限掩码为024
  2. 文件:666rw-rw-rw-)- 024 = 642rw-r---w-),目录:777rwxrwxrwx)- 023 = 754rwxr-xr--)
  3. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAyODU0_size_16_color_FFFFFF_t_70 3][]

如要永久更改修改,将umask保存到环境文件中:

  全局设置: /etc/bashrc

  用户设置:~/.bashrc

4、递归创建目录时的权限分配问题

20200105135353112.png

结论:递归创建时指定的权限只对最底层目录生效,而上级目录都是默认权限。

5、权限掩码值的计算

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAyODU0_size_16_color_FFFFFF_t_70 4][]

参考文章:http://www.360doc.com/content/17/1213/10/41190201_712627810.shtml

  1. 站在前辈的肩膀上,每天进步一点点

ends~

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux权限管理命令

    su命令 切换用户,从管理员到普通用户,不需要密码。从普通到管理则需要。该指令系统变量仍保持原用户一致 su -命令 切换用户,从管理员到普通用户,不需要密码。

    相关 Linux 权限管理命令

    文章目录 更改文件的权限 更改文件的所有者 更改文件的所属组 查看并更改文件的默认权限 更改文件的权限 命令名称:chmod 命令英文原

    相关 Linux 常用基本命令 权限

        小编今天给大家讲解一些关于文件的权限的问题,在下图中,可以看到文件或者目录的最前面有10个位置,第一个位置代表文件类型,前面是-的为普通文件。第二到第四个是文件拥有者所