linux之chgrp命令

2023-05-16

chgrp 命令更改【目录或文件所属的组】
chgrp [-R]目录 或 文件
-R: 递归式改变指定目录及目录下所有文件和子目录

chgrp eg:
chgrp group2 file2 将file2的属组更改为group2
以空格分开,同时更改多个目录,并且支持通配符来修改多个目录和文件,
支持用户和组的ID来修改-R 递归式改变指定目录及目录下所有文件和子目录

[crx@master Desktop]$ ll
-rw-rw-r–. 1 crx crx 0 Sep 6 16:29 a2.txt

[crx@master Desktop]$ chgrp group1 a2.txt
chgrp: changing group of `a2.txt’: Operation not permitted

[crx@master Desktop]$ su root
Password:

[root@master Desktop]# chgrp group1 a2.txt
[root@master Desktop]# ll
-rw-rw-r–. 1 crx group1 0 Sep 6 16:29 a2.txt

1.批量修改多个文件的user和group
chown ats:ats /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk /dev/sdl /dev/sdm
可以精简为
chown ats:ats /dev/sd[c-m]

2.修改一个目录下的所有文件的user和group
对/opt/oracle/目录下的所有文件与子目录执行相同的所有者变更,使所有者修改为oinstall用户组的oracle用户
chown -R oracle:oinstall /opt/oracle/

利用chmod改变访问权限

chmod命令用于改变linux系统文件或目录的访问权限。
用它控制文件或目录的访问权限。
该命令有两种用法:
一种是包含字母和操作符表达式的文字设定法;
另一种是包含数字的数字设定法。

一、字符设定法
chmod [who] [+ - = ] [mode] 文件/目录
-R: 递归式改变指定目录及目录下所有文件和子目录

[权限范围]
who表示操作对象,可以是下面字母中的任何一个或者它们的组合
u 表示 “用户” user, 即文件或目录的所有者
g 表示 “用户组” group, 即文件或目录所属的用户组
o 表示 “其他用户” others,即文件或目录所的用户组
a 表示 “所有用户” all, 它是系统默认值

[操作符号]
“+” 表示添加某个权限
“-” 表示取消某个权限
“=” 表示赋予给定的权限,同时取消文档以前的所有权限

[权限设置]
mode 表示可以执行的权限,可以是"r"(只读),“w”(可写),“x”(可执行)以及它们的组合

有关权限代号的部分,列表于下:
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
-:不具任何权限,数字代号为"0"。
1代表执行, 2代表写,3代表 1+2 ,4代表读, 5代表 1+4,6 代表2+4, 7代表1+2+4

文件名可以是以空格分开的文件列表,支持通配符

例:字母描述法
chmod [who] [+ - = ] [mode] 文件名
[权限范围] + [权限设置] 文件名/目录名
[权限范围] - [权限设置] 文件名/目录名
[权限范围] = [权限设置] 文件名/目录名

chmod u=r file1 给文件的属组赋予读取权限
chmod u=wx file1 给文件的属组赋予写和执行权限
chmod g+rw file1 给文件的属组增加读写权限
chmod g-rw file1 给文件的属组去掉读写权限
chmod o=rw file1 给文件的其他用户的权限改为读写
chmod a+rwx file1 给所有用户增加读写和执行权限
chmod u=rwx,g+r,o+r file1 给文件所有者赋予所有权限,用户组和其他用户具有只读权限

例:创建aa1.txt ,使其所有者具有所有权限,用户组和其他用户只有可读权限
$> chmod u=rwx,g=r,o=r aa1.txt
$> ll
total 72
-rwxr–r--. 1 root root 0 Oct 25 04:13 aa1.txt

例:修改aa1.txt文件,使其所有者具有可写可执行权限,用户组和其他用户没有权限.
#具体查看aa1.txt现在的权限在进行±操作

> l l − r w − r w − r − − . 3 c r x c r x 0 O c t 3021 : 54 i n s t a l l . l o g − r w − r w − r − − . 3 c r x c r x 0 O c t 3021 : 54 i n s t a l l . l o g 1 − r w − r w − r − − . 3 c r x c r x 0 O c t 3021 : 54 i n s t a l l . l o g 2 [ c r x @ m a s t e r D e s k t o p ] > ll -rw-rw-r--. 3 crx crx 0 Oct 30 21:54 install.log -rw-rw-r--. 3 crx crx 0 Oct 30 21:54 install.log1 -rw-rw-r--. 3 crx crx 0 Oct 30 21:54 install.log2 [crx@master Desktop] >llrwrwr.3crxcrx0Oct3021:54install.logrwrwr.3crxcrx0Oct3021:54install.log1rwrwr.3crxcrx0Oct3021:54install.log2[crx@masterDesktop] chmod u=rx,g-r,o-r install.log
[crx@master Desktop]$ ll
-r-x-w----. 3 crx crx 0 Oct 30 21:54 install.log
-r-x-w----. 3 crx crx 0 Oct 30 21:54 install.log1
-r-x-w----. 3 crx crx 0 Oct 30 21:54 install.log2

2)数字设定法
首先了解一下用数字表示属性的含义,0表示没有任何权限,1表示有可执行权限,与上面字符设定法中的"x"
有相同含义。2表示有可写权限,与"w"对应,4表示有可读权限,与"r"对应

如果想让文件的属主拥有读和写的权限,那么可以通过4(可读) + 2(可写) = 6(可读可写)的方式来实现,因此
用数字6就表示拥有读写权限

 数值表示语法:

	|rwx     |r-x     |r-x
	|421     |4-1     |4-1
	|user    |group   |others  
	
	 chmod   755  file_name

chmod 数值 文件名/目录名
chmod [属主权限的数字组合] [用户组权限的数字组合] [其他用户权限的数字组合] 文件名/目录名

chmod -R 766 dir 将目录dir的权限更改为 4+2+1 4+2 4+2
chmod 777 file1 将文件file1的权限更改为4+2+1 4+2+1 4+2+1

例:创建aa1.txt ,使其所有者具有所有权限,用户组和其他用户只有可读权限
$> chmod 744 aa1.txt
$> ll
-rwxr–r--. 1 crx crx 0 Oct 20 04:14 aa1.txt

例:修改aa1.txt文件,使其所有者具有可写可执行权限,用户组和其他用户没有权限
$> chmod 300 aa1.txt

$> ll
–wx------. 1 crx crx 0 Oct 25 04:14 aa.txt

3)umask:显示当前用户在创建文件或目录的默认权限
系统的umask值
umask值可以计算,当创建目录或文件时系统盘默认分配的权限,
umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、
其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。
系统不允许你在创建一个文本文件时就赋予它执行权限,
必须在创建后用chmod命令增加这一权限。
目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。

1)例如root用户 创建文件的默认权限是666减掉权限位数值,
2)例如root用户 目录的默认权限是777减掉权限位的数值.

[crx@master Desktop]$ umask
0002

[root@master Desktop]# umask
 0022

查看系统默认的umask值为0022,第一位0代表粘贴位,第2-4位代表权限位
这样系统默认创建(文件)的权限为666-022为644为属主读写,属组读,
其他读系统默认创建(文件夹)权限为777-022为属主读写执行,属组读执行,其他读执行

目录:所有权限为777
在使用umask命令时显示的是权限的补码/掩码
reg: # umask
022
第一个0:特殊权限位
之后三位:022,就是权限的掩码
真实权限为:
777

  • 022

755

文件:linux系统要求新建的文件权限,没有执行权限
即最大值为:666
掩码为:022
文件的真实权限:
666
-022

 644

选项 -S 查看真实权限
umask -S
u=rwx,g=rx,o=rx
假设 u m a s k值为0 2 2:
  1) 目录权限的最大权限 rwx rwx rwx (777)
  文件权限的最大权限 rw rw rw (666)
  2) 如:u m a s k值为0 2 2 — -w- -w-
  3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限
  4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux之chgrp命令 的相关文章

  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 捕获实时流量时如何开启纳秒精度?

    如何告诉 libpcap v1 6 2 将纳秒值存储在struct pcap pkthdr ts tv usec 而不是微秒值 捕获实时数据包时 Note This question is similar to How to enable
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 后台分叉无法正常工作[重复]

    这个问题在这里已经有答案了 我运行这个程序 在前景和背景中 int main int pid printf App Start pid d n getpid while 1 pid fork if pid 0 printf Child n
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 使用 inotify 的正确方法是什么?

    我想使用inotifyLinux 上的机制 我希望我的应用程序知道文件何时aaa被改变了 您能给我提供一个如何做到这一点的示例吗 文档 来自监视文件系统活动 inotify https developer ibm com tutorials
  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那

随机推荐

  • pandas学习笔记:pandas.Dataframe.rename()函数用法

    pandas学习笔记 xff1a pandas Dataframe rename 函数用法 pandas Dataframe rename 函数主要是用来修改Dataframe数据的行名和列名 主要用到的参数有 columns xff1a
  • mac os 查看日历_从命令行查看Mac日历

    mac os 查看日历 As someone that loves using UI tools I do pride myself in learning how to accomplish the same feats from com
  • Sql基础教程

    sql基础教程 第一章 数据库与sql1 1 数据库是什么DBMS的种类 1 2 数据库的结构表的结构 1 3 SQL 概要SQL语句及其种类SQL的基本书写规则 1 4 表的创建数据库的创建表的创建命名规则数据类型约束的设置 1 5 表的
  • Jetson TX2更换软件源(转)

    感谢博客 xff1a 点击打开链接 TX2的软件源为国外服务器 xff0c 网速会很慢 xff0c 需要换国内的ARM源 1 备份 etc lib路径下的source list文件 xff0c 然后在终端 xff08 按ctrl 43 al
  • c语言中求数组长度(*的作用,定义指针变量与取值)

    最近在学习c语言 xff0c 在c语言中少了很多库函数 xff0c 就比如我在求数组长度的时候 xff0c len 不能用了 xff0c 这在python中是自带的函数 即使在c 43 43 中 xff0c 求字符串长度时也能用str le
  • 个人使用ubuntu18相关配置

    root登陆 1 首先获得临时的root权限 xff0c 因为后面的一些操作需要root权限才可以 xff0c 打开终端输入以下命令 sudo s 之后直接输入当前账户的密码 xff0c 就可以获得临时的root权限 2 先创建root账户
  • Manjaro内存不足解决记录

    1 Linux虚拟机 最近在家闲得没事做 xff0c 就使用VMware装了一个linux虚拟机 xff0c 虽然之前装过许多linux发行版的虚拟机 xff0c 也装过win10 43 Deepin双系统 xff0c 但是从来没具体了解过
  • String/StringBuilder/StringBuffer

    String StringBuilder StringBuffer 1 可变性 String 字符串常量 xff0c 字符串是不可变的 源码中 xff1a span class token keyword private span span
  • 计算机网络-网络结构

    计算机网络 三种网络结构 OSI xff1a 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 TCP IP xff1a 网络接口层 网际层 传输层 应用层 五层 xff1a 物理层 数据链路层 网络层 传输层 应用层 应用层 它
  • 计算机网络-三次握手/四次挥手/可靠传输/ARQ协议

    计算机网络 TCP三次握手 同步SYN 确认ACK 发送端 SYN标志的数据报 seq 61 x gt 接收端 xff08 SYN 61 1 xff09 发送端 lt SYN ACK标志的数据报 seq 61 y ack 61 x 43 1
  • 计算机网络-拥塞控制/HTTP/URL

    滑动窗口和流量控制 TCP利用滑动窗口实现流量控制 xff0c 流量控制就是为了控制发送方发送速率 xff0c 保证接收方来得及接收 接收方发送的确认报文中的窗口字段可以来控制发送方窗口大小 xff0c 从而影响发送方的发送速率 xff0c
  • Integer和int进行==比较

    Integer amp int int是Java的基本数据类型 xff0c 而Integer是它的包装类 xff0c 61 61 在进行比较时 xff0c 如果是基本类型 xff0c 比较的是值 xff0c 如果是引用类型 xff0c 比较
  • deepin恢复出厂设置_如何恢复出厂设置

    deepin恢复出厂设置 There comes a time in every user s life when they have to reset something back to its factory default Perha
  • JUC-JMM/Volatile/单例模式

    JMM Java内存模型 xff0c 是一个概念 xff0c 不存在的东西 xff0c 概念 约定 关于JMM的一些同步约定 xff1a 线程解锁前 xff0c 必须把共享变量刷回主存线程加锁前 xff0c 必须读取主存中的最新值到工作内存
  • 设计模式-六大原则/单例模式

    设计模式 概念 xff1a 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 作用 xff1a 为了可重用代码 让代码更容易被他人理解 保证代码可靠性 程序的重用性 JDK Spring等源码中许多地方用到了设计模式 设计
  • 设计模式-工厂模式/代理模式

    工厂模式 创建对象时不会对客户端暴露创建逻辑 xff0c 并且通过使用一个共同的接口来指向新创建的对象 xff0c 实现创建者和调用者分离 xff0c 工厂模式分为简单工厂 工厂方法 抽象工厂 xff0c Spring中的IOC容器创建be
  • WSL2+VcXsrv 打开图形窗口实现可视化

    前些天有个朋友拜托我帮忙看看 老师让配置的 Cygwin 安装 gnuplot 用 XLaunch 做图形界面 始终画不出图来 这个问题我研一的时候也遇到过 走了许多弯路 所以在电脑上一阵鼓捣 现在做一个如下记录 Cygwin 43 XLa
  • gitlab 安装/卸载/备份/迁移/汉化/重置root密码 全套教程

    服务器环境 centos7 4 gitlab版本 gitlab span class token operator span ce span class token operator span 11 span class token pun
  • bash: line 5: bgzip: command not found

    报错信息 xff1a bash line 5 bgzip command not found 解决方式 xff1a conda install tabix
  • linux之chgrp命令

    chgrp 命令更改 目录或文件所属的组 chgrp R 目录 或 文件 R xff1a 递归式改变指定目录及目录下所有文件和子目录 chgrp eg chgrp group2 file2 将file2的属组更改为group2 以空格分开