linux系统编程笔记02——Linux命令:修改文件权限命令chmod、chgrp、chown详解
Linux命令:修改文件权限命令chmod、chgrp、chown详解
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
文件或目录的访问权限分为只读,只写和可执行三种。
以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
有那三种不同类型的用户可对文件或目录进行访问
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
每一文件或目录的访问权限都有三组
每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件(普通文件)
-rwxr-xr-x
普通文件(-) 文件主(rwx) 组用户(r-x) 其他用户(r-x)
-rw-r—r— 对应的10位
1234567890
1代表文件类型
234代表所有者读写执行权限
567代表同组用户读写执行权限
890代表其他人读写执行权限
Linux系统文件类型: 7/8 种
普通文件:-
目录文件:d
字符设备文件:c
块设备文件:b
软连接:l
管道文件:p
套接字:s
未知文件。
确定一个文件的访问权限
用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
chmod 命令
chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
简单的例子
以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:
1.打开终端。输入”su”(没有引号)
2.接下来会要你输入密码,输入你的root密码。
3.假设我的文件夹在主目录里,地址为 /var/home/dengchao/cc 。假设我要修改文件权限为777,则在终端输入 chmod 777 /var/home/userid/cc 文件夹的权限就变为了777。
如果是修改文件夹及子文件夹权限可以用 chmod -R 777 /var/home/userid/cc
具体的权限(例如777的含意等)在下面解释下:
1.777有3位,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限。
其中每一位的权限用数字来表示。具体有这些权限:
r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。
w(Write,写入,权限值为2):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行,权限值为1):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
2. 首先我们来看如何确定单独一位上的权限数值,
例如最高位表示文件所有者权限数值,当数字为7时,7用“rwx”表示 –{4®+2(w)+1(x)=7}–又如果数值为6,则用“rw-”表示–{4®+2(w)+0(x)=6}–,”-”表示不具备权限,这里表 示不具备“执行”权限。
假如我们设定其他用户的访问权限为 “r–”,则数值为4+0+0=4
一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则用1表示,没有则有0表示,那么rwx则可以表示成为:111
而二进制的111就是7。
3.我们再来看下怎么确定3个数位上的权限。假如我们要给一个文件设置权限,具体权限如下:
文件所有者有“读”、“写”、“执行”权限,群组用户有“读”权限,其他用户有“读”权限,则对应的字母表示为”rwx r– r–“,对应的数字为744
一般都是最高位表示文件所有者权限值,第二位表示群组用户权限,最低位表示其他用户权限。
下面来举些例子熟悉下。
权限 | 数值 |
---|---|
rwx rw- r– | 764 |
rw- r– r– | 644 |
rw- rw- r– | 664 |
为什么说Linux 新建的文件为什么没有可执行权
1、在Linux下,新bai建文件一般均为文档文件,用编辑器打开即可,故不需要X权限;
2、可执行文件都是用到编译器编译的, 在编译器生成可执行文件时自动增加了X权限。
2、目录默认是777,是因为目录下的文件都具备可执行权限。
chgrp命令
功能:改变文件或目录所属的组。
语法:chgrp [选项] group filename¼
参数:
-c或–changes 效果类似”-v”参数,但仅回报更改的部分。
-f或–quiet或–silent 不显示错误信息。
-h或–no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件。
-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或–verbose 显示指令执行过程。
–help 在线帮助。
–reference=<参考文件或目录> 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
–version 显示版本信息。
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
该命令的各选项含义为:
– R 递归式地改变指定目录及其下的所有子目录和文件的属组。
例1:
$ chgrp - R book /opt/local /book
改变/opt/local /book/及其子目录下的所有文件的属组为book。
chown 命令
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户yusi,为了让用户yusi能够存取这个文件,root用户应该把这个文件的属主设为yusi,否则,用户yusi无法存取这个文件。
语法:chown [选项] 用户或组 文件
说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
参数说明:
user : 新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
例1:把文件yusi123.com的所有者改为yusi。
$ chown yusi yusi123.com
例2:把目录/demo及其下的所有文件和子目录的属主改成yusi,属组改成users。
$ chown - R yusi.users /demo
例如:chown qq /home/qq (把home目录下的qq目录的拥有者改为qq用户)
例如:chown -R qq /home/qq (把home目录下的qq目录下的所有子文件的拥有者改为qq用户)
致谢
部分参考了Linux命令
关于如何创建用户组以及更改文件用户组,没有用代码演示。
linux系统编程笔记02——Linux命令:修改文件权限命令chmod、chgrp、chown详解相关推荐
- Linux系统编程笔记(李慧琴) 2
Linux系统编程笔记(李慧琴) 02系统IO介绍 02系统IO介绍 I/O:input & output, 是一切实现的基础,主要分为 stdio 标准IO (所有的标准都是为了和稀泥整合不 ...
- 嵌入式学习之linux系统编程----1 了解linux编程并且在ubuntu以及ARM上运行测试程序
1.何为linux系统编程? linux系统编程也称为linux下的高级编程,它介于应用层与驱动层之间. 一般来说分为三个层面,分别是:应用层(写一个qt程序或者c程序就属于是应用层面).驱动层(比如 ...
- linux下修改文件权限命令
查看文件权限 ls-l命令 修改文件权限 修改方法1:(参数) 命令:chomod 语法:chomod [参数][augo][+-=][rwx]文件名 例子: 1.将文件file1.txt增加可读权限 ...
- Linux系统编程笔记
文章目录 1.Linux系统编程 2.文件IO 2.1 文件描述符 2.2 open 2.3 perror 2.4 close 2.5 write 2.6 read 2.7 remove 2.8 系统 ...
- 【Linux系统编程学习】Linux进程控制原语(fork、exec函数族、wait)
此为牛客Linux C++和黑马Linux系统编程课程笔记. 1. fork函数 1.1 fork创建单个子进程 #include<unistd.h> pid_t fork(void); ...
- linux系统编程 小项目,linux系统编程小项目.doc
linux系统编程小项目.doc 一.项目概述简单智能远程监控功能服务器端1.服务器端利用随机数模拟向串口读取传感数据,需要模拟的传感数据要求有温度.湿度.光照.室内噪音度等等.2.服务器要求在数据保 ...
- Linux修改文件权限(chmod函数)
对于Linux中的修改文件权限,我们先看一张图片: 可以看到,对于一个文件而言,操作它的用户可以分为三类: 所有者,同组用户,其他用户 u: (user)表示文件属主的访问权限; g: (group) ...
- Linux 系统编程笔记-(1)基本概念
一.UNIX与Linux发展史 1965 年,Bell 实验室.MIT.GE(通用电气公司)准备开发 Multics 系统,为了同时支持 300 个终端访问主机,但是 1969 年失败了: 1969 ...
- 【Linux系统编程学习】Linux线程控制原语
此为牛客Linux C++课程笔记. 0. 关于线程 注意:LWP号和线程id不同, LWP号是CPU分配时间片的依据,线程id是用于在进程内部区分线程的. 1. 线程与进程的区别 对于进程来说,相同 ...
最新文章
- 计算机视觉系统中图像究竟经历了哪些“折磨”
- mybatis架构流程
- mysql键1键2_详解mysql基本操作详细(二)
- 游戏编程性能优化--------------------------------------------------------------------------------------...
- 【渝粤题库】国家开放大学2021春2704植物学基础题目
- maven项目,如何导入本地jar包
- 序列每天从0开始_【算法打卡】分割数组为连续子序列
- Set与WeakSet
- sap采购申请自动转采购订单_SAP财务常用的MM模块事务代码清单
- Flask和WebSocket
- Auto Layout详解
- 记事本代码在命令行运行时出现的中文乱码问题
- 你的伙伴对你最大会话_TeamViewer许可证对您与伙伴的最大会话有所限制解决办法...
- Nginx编译安装云锁
- 指针定义、指针与数组、指针运算、比较
- python - alipay sdk 使用 及 注意点
- 工作了3年的JAVA程序员应该具备什么技能?
- CHIL-SQL-function 函数
- 用芝麻二维码生成器制作App下载二维码
- 知识图谱--知识抽取--使用D2R将关系型数据库mysql中的数据转换为RDF形式,并使用protege查看
热门文章
- centos7 设置阿里云yum源、docker源和docker镜像加速
- java中使用模板设计模式
- 民间秘术——捉鬼杀鬼
- gossip 区块链_区块链教程Fabric1.0源代码分析流言算法Gossip服务端一兄弟连区块链教程-阿里云开发者社区...
- RestCloud服务编排平台,API可视化编排
- seo黑帽劫持用的php,黑帽seo劫持程序,js劫持搜索引擎代码
- pytorch中visdom安装
- 64位Win10下python调用dll出错
- iOS15.2 首个测试版推送,有严重bug
- vscode更改配置文件路径_VScode配置