Linux 权限管理基本命令

news/2024/11/17 1:29:03/

一、Linux 文件的基本属性

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

 

    

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

更改文件属性

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

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

3、chgrp:更改文件属组

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

1)文件:

      r-读:对文件的内容有读的权限,对应命令:cat,more,less,head,tail等

      w-写:可以修改文件的内容,对应命令:vi,vim,echo等,注意:对文件的写权限不能删除文件本身,要删除文件必须拥有文件的父文件夹的写权限

      x-执行:表示拥有执行这个文件的权限,但是不是说有这个权限,文件就可以执行,文件是否可以执行,要看这个文件里的内容是否是执行的代码。

2)目录:

      r-读:是可以查看文件夹里的内容,对应命令:ls

      w-写:可以修改子目录和文件里的内容,也就是可以复制,删除,新建,移动文件夹里的子目录和文件,对应命令:cp,touch,mv,rm等

      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)root用户:root用户是linux系统权限最大的用户。别人不能干的事,root用户都能干。

    2)文件的所有者:我们通过ls命令查看某个文件的详细信息,可以看到该文件的所有者。

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

    644(rw-r--r--):这是文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。

    755(rwxr-xr-x):这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。

    777(rwxrwxrwx):这是最大权限。在实际的生产服务器中,要尽力避免给文件或目录赋予这样的权限,这会造成一定的安全隐患。

实例:

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

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

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

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

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

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

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

       一般来说,这个指令只有是由系统管理者(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 [用户组]命令创建用户组

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

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

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

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

chgrp命令:英文 change file group ownership

命令所在路径:/bin/chown

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

执行权限:系统管理者

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

       或 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用户组

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

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

[root@centos7 abc]# ll
总用量 8
-rwxrw-r-- 1 lisi g_lisi 1440 12月 12 14:22 file2.cfg
drwxr-xr-- 3 root root     43 1月   4 14:08 test22
-rwxr-xr-- 1 root root     57 12月 12 14:37 test.txt
[root@centos7 abc]# ll ./test22
总用量 4
-rwxr-xr-- 1 root root   1440 12月 12 11:25 anaconda-ks.cfg
drwxr-xr-- 2 root g_lisi    6 1月   4 14:08 test_d
[root@centos7 abc]# chgrp -vR --reference=. ./test22
"./test22/anaconda-ks.cfg" 的所属组已保留为root
changed group of "./test22/test_d" from g_lisi to root
"./test22" 的所属组已保留为root
[root@centos7 abc]# ll
总用量 8
-rwxrw-r-- 1 lisi g_lisi 1440 12月 12 14:22 file2.cfg
drwxr-xr-- 3 root root     43 1月   4 14:08 test22
-rwxr-xr-- 1 root root     57 12月 12 14:37 test.txt
[root@centos7 abc]# ll ./test22                     
总用量 4
-rwxr-xr-- 1 root root 1440 12月 12 11:25 anaconda-ks.cfg
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介绍

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

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

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

[root@centos7 ~]# umask 
0022
[root@centos7 ~]# umask -S
u=rwx,g=rx,o=rx

        可以看到 umask 执行显示结果是 0022,第一个0表示特殊权限,可以暂时不用理会。然后,后三位022表示权限的掩码值(与普通权限(rwx)有关),可以简单理解为:

       若创建为文件,则 666(rw-rw-rw-) -  022 = 644(rw-r--r--)

       若创建为目录,则 777(rwxrwxrwx)- 022 = 755(rwxr-xr-x)

通过实例验证一下:

       

注意:

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

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

    设置当前的权限掩码为024,

    文件:666(rw-rw-rw-)- 024 = 642(rw-r---w-),目录:777(rwxrwxrwx)- 023 = 754(rwxr-xr--)

    

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

  全局设置: /etc/bashrc   

  用户设置:~/.bashrc

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

    

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

5、权限掩码值的计算

    

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

 

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

ends~


http://www.ppmy.cn/news/578565.html

相关文章

linux下mariadb设置权限,mariadb(MySql)设置远程访问权限

【问题】 mariadb(MySql)安装之后,本地连接mysql是可以的,但是远程的机器不能连接和访问。 【解决】 修改mysql远程连接的ip限制配置。 【步骤】 1.本地mysql客户端连接mysql mysql -u root -p 2.执行sql语句: 新安装的数据库 可以设置 /etc/my.cnf skip-grant-tabl…

sap 用户权限表_SAP 用户权限

SE93 查询所有TCODE 或者 table: tstc SE16 display SUIM 查询用户信息的报表们 技术流 SAP常用的TCODE---BASIS 事务码 描述 ( 中英文 ) SBIT Menu 菜单 SBTA Test background processing 后台处理测试 SBTU Background processing for user 对用户的后台处理 SM36 Define Bac…

Collapse折叠面板(antd-design组件库)展示所有配置选项和onChange的作用

1.Collapse折叠面板 可以折叠/展开的内容区域。 2.何时使用 对复杂区域进行分组和隐藏&#xff0c;保持页面的整洁。 手风琴 是一种特殊的折叠面板&#xff0c;只允许单个内容区域展开。 组件代码来自&#xff1a; 分页 Pagination - Ant Design 3.本地验证前的准备 参考文章【…

C# 天敏 SDK3000 二次开发时出的问题?? 求解

C# SDK3000 OCX组件二次开发时出的问题?? 求解 这是动态检测触发条件 private void btnStartTest_Click(object sender, EventArgs e) { byte[] bytes new byte[]{1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,25,25,25,25,25,25,25}; strin…

[软件测试] 期末答辩问题

1. 给你一个网站&#xff0c;你该如何测试&#xff1f; &#xff08;1&#xff09;确定测试目标和范围&#xff0c;查找相关文档如需求说明书、网站设计文档等&#xff0c;分析测试需求&#xff08;2&#xff09;制定测试计划&#xff0c;确定测试范围和测试策略&#xff0c;一…

模拟电路系列分享-晶体管的四种状态

目录 概要 整体架构流程 技术名词解释 1.截止状态 2.放大状态 3.饱和状态 4.倒置状态 技术细节 小结 概要 提示&#xff1a;这里可以添加技术概要 晶体管有4种工作状态&#xff0c;分别是截止、放大、饱和&#xff0c;以及倒置。 整体架构流程 提示&#xff1a;这里可以添加…

[补充]托福口语21天——day2 课堂内容

day1 课堂&#xff1a;http://t.csdn.cn/cyvZm day1 语料&#xff1a;http://t.csdn.cn/syTBy 目录 1 时间准备 2 例题 3 答题步骤 3.1 范例 3.2 范例 4 连接词 5 完整回答 5.1 范例 5.2 范例 6 总结 背背背&#xff01; 1. 如今的生活成本非常高。人们要付…

动态规划之下降路径最小和

1. 题目分析 题目链接选自力扣 : 下降路径最小和 如果光看这个题目说明的话, 是有点抽象的. 我们结合实例 1 来看 : 总的来说就是, 起始点是第一行中的任意一点, 每个点只有三个方向可以走即向下, 左下, 右下. 当到达最后一行的任意一点即算作到达终点. 期间不同的路径上不同…