热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux文件基本属性:chown修改所属组和chmod修改文件属性命令

[root@www]#ls-ltotal64dr-xr-xr-x2rootroot4096Dec142012bin-rwxrwxr-x4rootroot4096
[root@www /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin -rwxrwxr-x 4 root root 4096 Apr 19 2012 main.c

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

第0位确定文件类型,

第1-3位确定属主(该文件的所有者)拥有该文件的权限。

第4-6位确定属组(所有者的同组用户)拥有该文件的权限,

第7-9位确定其他用户拥有该文件的权限。

第1、4、7位表示读权限 

第2、5、8位表示写权限

第3、6、9位表示可执行权限

 

在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

[root@www /]# ls -l total 64 d rwx r-x r-x 2 root root 4096 Feb 15 14:46 cron d rwx r-x r-x 3 mysql mysql 4096 Apr 21 2014 mysql

就是说root用户组 其他用户组的不可以修改

在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,

属主有可读、可写、可执行的权限;

与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

对于 root 用户来说,一般情况下,文件的权限对其不起作用。

 

更改文件属性

1、chgrp:更改文件属组

语法:

chgrp [-R] 属组名文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

 如: 

chgrp -R daokr test  更改 test的 目录属于组daokr  但是daokr用户无法修改该目录文件

 

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

语法:

chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名


daokr@daokr-sys:/home$ chown -R daokr:daokr test
chown: 正在更改'test/tt/m.c' 的所有者: 不允许的操作
chown: 正在更改'test/tt' 的所有者: 不允许的操作
chown: 正在更改'test' 的所有者: 不允许的操

 

必须用root用户操作修改权限组和属性主

 

root@daokr-sys:/home# ls -l
总用量 12
drwxr-xr-x 20 daokr daokr 4096 3月  27 14:41 daokr
-rw-r--r--  1 root  root    19 3月  27 14:23 maintest.c
drwxr-xr-x  3 daokr daokr 4096 3月  27 14:35 test

利用冒号 “:”改变所属组

如: 把myfile文件夹的组改成ikphp组直接用:

drwxrwx--x 2 daokr daokr 4096 3月  31 22:49 myfile

daokr@DK:~$ sudo chown -R :ikphp myfile

 

 

drwxrwx--x 2 daokr ikphp 4096 3月 31 22:49 myfile

 

 

3、chmod:更改文件9个属性 更改文件 只读 只写 可执行的属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。读写执行权限

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:


第一种案例:数字更改

数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

 chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

改下m.c 文件的属性 为 rwx rwx ---  意思是 主用户权限是 rwx=7 root用户是 rwx=7 其他用户 无权限

daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-rw-r--r-- 1 daokr daokr 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ chmod 770 m.c 
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-rwxrwx--- 1 daokr daokr 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ sudo chown daokr:root m.c
[sudo] daokr 的密码: 
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-r--rwx--- 1 daokr root 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ vim m.c 
daokr@daokr-sys:/home/test/tt$ chmod 440 m.c

上面的 把 m.c 修改了权限组root 和 文件属性 440;说明 daokr用户和root用户都无法修改该文件;因为是只读文件

 

第二种案例:通过字符更改

基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!
那么我们就可以藉由u, g, o来代表三种身份的权限!



此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

 

chmod u
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

 

daokr@daokr-sys:/home/test/tt$ chmod u=rwx,g=rwx,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-rwxrwx--- 1 daokr root 26 3月  27 14:45 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=r-x,g=-wx,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-r-------- 1 daokr root 32 3月  27 15:35 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=r-x,g=r,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-r--r----- 1 daokr root 32 3月  27 15:35 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=r-x,g=rw,o=- m.c
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-r--rw---- 1 daokr root 32 3月  27 15:35 m.c

 

 

 

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

 
#  chmod  a-x test1 # ls -al test1 -rw-r--r-- 1 root root 0 Nov 15 10:32 test1

然后

daokr@daokr-sys:/home/test/tt$ chmod a-x m.c
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-r--rw---- 1 daokr root 32 3月 27 15:35 m.c
daokr@daokr-sys:/home/test/tt$ chmod u=rwx,g=rwx,o=r m.c
daokr@daokr-sys:/home/test/tt$ ls -l
总用量 4
-rwxrwxr-- 1 daokr root 32 3月 27 15:35 m.c


利用 加号和减号 添加和删除权限
分别u,g,o用户进行加减操作权限
daokr@DK:~$ chmod o-x a.out
daokr@DK:~$ chmod o+x a.out
daokr@DK:~$ chmod u-x a.out
daokr@DK:~$ chmod g-x a.out
 

设置权限当前用户有读写执行;用户组;读写执行;other用户只有可执行权限

chmod u=rwx,g=rwx,o=x myfile

 

4.对目录dir默认系统设置umaks

umask 022设置当前系统 新建的目录默认权限是022 就是775
参数-S 表示以源码查看
daokr@DK:~$ umask -S
u=rwx,g=rwx,o=rx
daokr@DK:~$ umask 022
daokr@DK:~$ umask -S
u=rwx,g=rx,o=rx

daokr@DK:~$ umask
0022

 




                        
                        
                         
推荐阅读
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 在重新安装Ubuntu并配置Django和PyCharm后,忘记测试MySQL连接,导致在后续配置过程中遇到错误:ERROR 2003 (HY000) - 无法连接到本地服务器 ‘127.0.0.1’ (111)。本文将详细介绍该错误的原因及解决步骤,帮助用户快速恢复MySQL服务的正常运行。我们将从检查网络配置、验证MySQL服务状态、配置防火墙规则等方面入手,提供全面的故障排除指南。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 在 Goland IDE 中配置 Go 开发环境的方法与步骤
    在 Goland IDE 中配置 Go 开发环境的方法与步骤 ... [详细]
  • 1. 设置用户密码:使用 `slappasswd` 工具生成加密密码,确保账户安全。具体步骤如下:输入命令 `slappasswd -s NewPassword`,系统将提示重新输入新密码,并生成加密后的哈希值 {SSHA}xxxxxxxxxxxxxxxxx。2. 编写配置文件:编辑 `vildapus` 配置文件,添加必要的用户账户信息,以确保新用户能够顺利登录系统。 ... [详细]
  • ROS主机与从机之间的通信原理及机制分析
    本文深入探讨了ROS(Robot Operating System)主机与从机之间的通信原理及机制。通过分析ROS网络架构,详细阐述了节点间的通信方式、消息传递流程以及数据同步机制。此外,还介绍了ROS中常用的通信模式,如发布/订阅、服务调用和参数服务器,为开发者提供了全面的技术指导。 ... [详细]
  • 在Linux系统中,为了提高安全性,可以通过设置命令执行超时和用户超时注销来防止因用户长时间未操作而带来的安全隐患。具体而言,可以通过编辑 `/etc/profile` 文件,添加或修改相关参数,确保用户在指定时间内无操作后自动注销。此外,还可以利用 `timeout` 命令来限制特定命令的执行时间,进一步增强系统的稳定性和安全性。 ... [详细]
author-avatar
srh女孩不哭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有