2011-09-02 15:55:30 JIANDANQINXINILOVEYO 阅读数 208
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7210 人正在学习 去看看 沈寒
[size=large]接触linux一段时间了,有个权限问题让我一直郁闷。网上也没找到(估计是关键字不对),就是这个0777,最前面的0是什么意思。最近看到一本书(Linux与unix shell编程指南),终于找到答案了。
先说一下777什么意思吧,linux下文件权限分为所属用户权限、所属组权限和其他权限。
每一个又分为r(读)w(写)x(可执行)。如果你在linux中运行 ls -l就会显示权限如:[/size]

-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh

[size=large]
“-”表示文件类型不用管。第一个rwx是所属用户的权限,表示所属用户(root)对本文件可读(r)可写(w)可执行(x)。第二个”-rx“表示属于同一组的用户的权限可读(r)不可写(-)可执行(x)。第三个表示其他用户的权限可读不可写可执行。
这些数字就分别对应针对不用用户的权限。第一个7表示第一个rwx,当然第二个就表示第二个,第三个就表示第三个。

下面就说说7表示什么权限
7换成2进制就是 111,这样就对了,正好对应rwx。当然都知道1表示true,所以,7的权限就是rwx了,如果上面的my_test.sh改成777的话,ls -l 那就显示:[/size]

-rwxrwxrwx 1 root root 12 09-02 15:21 my_test.sh

[size=large]
反过来,你知道上面的my_test.sh 的权限用数字应该是什么呢,
应该是 111101101 = 755
[color=red]下面说一下最前面的那个0是什么意思:[/color]
0777前面的0原来是叫个suid和guid的东西。
suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。
guid则表示执行相应脚本的用户将具有该文件所属用户组中用户的权限。
是不是不大明白呀,下面举个例子:[/size]

-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh

[size=large]上面的mysql_test.sh文件权限是所属用户(root)是7,如果设置了suid,那么其他任何用户的权限都是7,如果设置了guid,那么任何用户的权限都是5。
如何设置suid和guid:
设置suid就是把0变为4,设置guid就把0变为2,如果都设置那就是6了
chmod 4777 mysql_test.sh
[/size]
2011-03-16 15:24:27 iteye_19515 阅读数 25
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7210 人正在学习 去看看 沈寒
在 LINUX 下用电脑经常会用到 chmod 命令。

Linux 的文件权限可以分成三段, 通常 ls -l 出来的第一列就是文件权限信息。每个文件(任意类型的文件或者文件夹)的属性都用10个字符表示。举个简单的例子, 看下面这行权限信息:
drwxr-xr-x

可以知道, 第一字符是 d , 说明它是一个文件夹. 文件权限信息第一字符通常都是链接符 “-”.

从第二到第四位 (rwx) 是文件所有者的权限.
r: 可读, w: 可写, x: 可执行.

所有上面的信息表示该文件夹的拥有者有可读,可写, 可执行给文件夹的权限. 用就是全部权限.

再看第五位到第七位 (r-x) 是文件夹用户拥有者所在组的权限. 根据上面的说法就是这个组对该文件夹有可读可执行的权限. 链接号表示没有权限空缺, 没有写权限.

同样第八位到第十位 (r-x) 是其他人对这个文件夹操作的权限. 这里看来就是可读, 可执行权限.

其实我们更多的看到的是数字组成的权限. 文件的权限组成是由 用户的权限, 用户所在组的权限, 其他人的权限 这三个权限组成的. 每个权限都可以是 r,w,x 的任意组合. 所以用字符表示太麻烦, 简单的用数字表示比较方便. 我们只要记住3个数字就行了.

其中: r = 4, w = 2, x = 1. 没有见过 linux 权限有超过7的数字的. ^o^

所以如果是可读可写可执行的话那就是: rwx = 4 + 2 + 1 = 7 上面的三个权限都可以这样算出来.

比如我们看一个文件的权限如下: -rw-r–r–

说明这个文件是个普通文件, 因为第一个字母是连接符 “-”, 看接下来的三个字母是: rw- , 表示该文件的所有者对该文件可读可写. 那么用数字表示也就是 4 + 2 + 0 = 6,

再看第5-7个字符: r–, 表示该文件所有者所在的组对该文件只有可读权限. 那么用数字表示为: 4 + 0 + 0 = 4,

看最后三个字符: r–, 表示其他人对该文件的权限. 同样是知读. 用数字表示也是 4.

所有该文件的权限用数字看起来就是: 644

了解了权限的组成. 现在用 chmod 命令就方便了. 最简单的用法.

sudo chmod 644 readme.txt

这样就给当前目录下的 readme.txt 文件重新赋予了权限. 只有拥有者可以修改, 其他人只能看文件内容.

另外还有一种比较方便的针对某一类的用户的操作. 先介绍2个操作符. “+” 表示增加权限. “-” 表示消减权限.

文件所有者可以用字母 u 表示. 用户所在的组可以用字母 g 来表示. 其他人可以用字母 o 来表示. 所有人可以用字母 a 了表示.

其实就是单词 user, group, other, all 的第一个字母.

比如对一个文件 readme.txt 执行修改其他人对这个文件的权限. 修改位其他人可以写. 可以这样

sudo chmod o+w readme.txt

相对的, 修改用户所在组的成员对该文件也有可修改的权限:

sudo chmod g+w readme.txt

现在如果想去掉 其他人对该文件的可修改的权限的话:

sudo chmod o-w readme.txt

最后, 我们让所有人对该文件都有全部权限的话, 这样做是很危险的.只是测试举例才用而已. 可以这样

sudo chmod a+rwx readme.txt

OK, 到这里就简单的介绍完了. 如果想对一个目录及其下面的文件都修改成统一的权限信息的话可以加参数 -R , 比如对当前目录 test 及其下面的文件都该成 文件拥有者可读可写, 其他人都只能看的话:

chmod -R 644 test
2018-07-22 15:32:32 kc_1197977022 阅读数 84
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7210 人正在学习 去看看 沈寒

Linxu权限

  1. drwxr-xr-x
    • d 文件类型
      • d 目录
    • 权限码四段
      • 一段 所有人 All
      • 二段 所有者 User, 主人
      • 三段 所属组 Group
      • 四段 其他人 Other
  2. 更改权限
    • chmod a+/- rwx, u+/- rwx, g+/- rwx, o+/- rwx
    • chmod 十进制
      • 三段 chmod 777
        • 段码 二进制 十进制
        • r-- 100 4
        • -w- 010 2
        • –x 001 1
      • 四段 chmod 7777
2017-07-27 09:58:00 weixin_30622107 阅读数 7
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7210 人正在学习 去看看 沈寒

1、linux文件属性权限简介

         生活中很多时候,都是你拥有什么权限,就享受什么待遇。就像你充值会员,享受成长加速一样,我们系统中的文件也是针对不同对象,设定了相应的操作权限的。linux把访问对象定义为三类:owner、group、other。给予他们的权限也细分为三种:r、w、x(read、write、eXecute)。

     文件的权限位分为三段表示,每一段对应上述的一位对象, -rwx-rw-r--  第一个-代表文件的类型为普通文件,rwx表示文件所属者拥有该文件的所有权限,rw-表示文件所属组拥有对该文件读写的操作,r- -表示其他人(非主人,非组人),只拥有读的权限。这些权限对于目录文件和普通文件的意义是有差别的,这里主要体现在了x执行权限上。对目录来说x权限是基础权限,有了它可以进入目录下进一步操作,缺了它啥也干不了。

对于文件来说,文件拥有x权限是很危险的事情,一不小心就会酿成大错。所以目录的最大权限就是7即rwx,而文件的最大权限是6即rw-.这三种权限可以根据需要来灵活搭配,下面我们来具体介绍一下权限的作用:

(1)权限对普通文件的意义

         r:可读取文件的内容

         w:可以修改文件的内容

         x:可以执行该文件(主要体现在执行脚本,不能单独使用,执行过程是从第一行执行到最后一行,所以要有r权限)

(2)权限对目录文件的意义

         r - - :只能查看目录的文件列表,不能访问文件,也不能cd目录

    -w-:单独使用对目录没意义,必须配合x权限才能生效

    --x:可以cd,不能ls,可以访问目录中你所知道的文件,x是目录的基础权限

    r-x :可以进入目录,且可以长列出

    wx:能进入,能创建、删除,不能ls。用户能否删除文件与文件自身权限无关,与文件所在目录有关。

    rw-相当于只有r

         rwx 最高权限,支持对该文件所有操作

         --- 没有权限

 

看了这么多组合,是不是有点蒙圈?来喝一口益生菌消化一下吧!

  1)  门都进不去,更不要说看清和搬东西了。但是你可以从外面把房子给拆了,前提是小区门岗不管你(有文件所在目录的权限权限),

  2)  r仅仅是显示目录中的文件列表,有了x才能进入目录(如果只有一个x权限,哪怕你看不见吃的,只要你能摸到依然可以吃),有rx眼就能仔细看,有wx手就能修改破坏。

 

可能大家发现了,权限的表示方式有两种:一种是模式法、一种是数字法

  目录的最大权限用数字法表示 777 用模式法表示就是 rwxrwxrwx

  文件的最大权限用数字法表示 666 用模式法表示就是rw-rw-rw-

 

来放点干货

 

修改文件的属主和属组为指定用户、指定组

  chown [uname]:[gname] filename

  或chown [uname].[gname] filename

修改文件的属主为指定用户,属组为该用户的主要组

  chown [uname]: filename

只修改属主

  chown [uname] filename

只修改属组

  chown :[gname] filename

  chgrp [gname] filename

递归修改d1下的所有文件的所属人、所属组

   chown -R mage:bin d1

 

2、权限的修改

数字法修改权限:

  chmod 764 filename 修改文件权限为rwxrw-r- -

模式法修改权限:

  chmod [ugoa] [+-=] [rwx] filename

选项中:u代表所属人、g代表所属组、o代表其他人、a代表所有人

  eg:chmod u+x filename  为文件或目录的所属人加上执行权限

           chmod o= filename 为文件其他人的权限重新赋值,- - -表示什么权限都没有。使用这种方法会覆盖之前的权限

           chomd g-x filename 为文件所属组去除执行权限

           chmod a=rw filename 为文件ugo给予rw权限

           chmod a-x filename 为文件ugo去除执行权限

                            -R 递归修改权限

                            -X 仅为目录添加执行权限(这种方法就是为了避免递归修改x权限时普通文件也给加上执行权限)

          chmod –R a=rwX dir2 给dir2下的目录赋予执行权限,文件赋予rw权限

     chmod --reference a b    b参考a的权限

3、默认权限

创建文件时会发现,我们没有给文件赋权限,它也会有一些权限,即默认权限。默认权限怎么看呢?

创建文件和复制文件时默认权限是不同的,具体如下:

  (1)创建文件时:最大权限-umask=默认权限

  (2)复制文件时:复制前权限-umask=复制后的权限

 

 

:目录最大权限 777, 文件的最大权限666

  设umask为:002 ,默认权限 775 664

  默认文件是不可以有执行权限的,权限减到奇数就会加一(只针对文件的权限计算)

    eg:666-345=(3+1)2(1+1)=422=-r---w--w-

 

    umask 查看当前的uamsk值

    umask -p 打印当前umask值

 

4、特殊权限

linux文件系统上的特殊权限:SUID,SGID,Stick

  通常情况下,用户是不能直接访问文件的,需要通过系统提供的二进制程序,来对文件进行访问。我们都知道文件是有访问权限的,那么二进制程序有么?当然,它也是有权限的。

通过二进制程序访问文件的步骤如下:

  (1)   任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有权限

  (2)   启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

  (3)   进程访问文件时的权限,取决于进程的发起者

 

  SUID和SGID这两种特殊权限相当于发起人在启用进程时,进程的所属临时调用了二进制程序的所属,而不是发起人的所属。这就像是身份的临时转换,本来我是路人,是不可以进房间的,但是我把它租下来了,房东给我了一把钥匙,我就能进入房间了。身份也由路人转为了租客,当租期满后(进程结束)又变为路人。

(1)SUIDSGID作用在二进制的可执行程序上时:

    SUID发起人调用二进制文件,身份临时转为程序的所属人

    chmod u+s filename

           -s

    SGID 发起人调用二进制文件,身份临时转为程序的所属组

       Chmod g+s filename

                  -s

 

(2)SGID作用在目录时

    功能:新建文件的所属组自动继承父目录的所属组

 

(3)sticky 粘滞位

    作用在目录上才有意义

    chmod o+t filename

                -t

功能:只有自己(文件所属人)才能删除自己的文件。覆盖范围仅是在增加了粘滞位的目录下的一级子目录,不会影响二级、三级..等目录。

 

 

5、例题

   (1)刘关张,未来创建的文件/目录,其他人没有任何权限,而彼此之间可以相互读写。(三人的主组不相同),且不能删除别人创建的文件。

   

     图1-1,创建三个用户,使他们共属于shuguo组(附属组),主组为各自的名称的组

        

                图1-2,注释见图

       

                图1-3,注释见图

       

                图1-4,注释见图

       

                图1-5,注释见图

       

                图1-6,注释见图

       

                图1-7,注释见图

       

                图1-8,注释见图

 

转载于:https://www.cnblogs.com/whblinux/p/7243257.html

2019-04-05 21:44:09 weixin_43889879 阅读数 38
  • 嵌入式Linux文件与串口编程

    本课程介绍Linux环境下shell编程,普通文件与设备文件的编程方法,串口介绍与应用编程。 学习条件: 1.C语言编程基础 2.嵌入式Linux开发基础

    7210 人正在学习 去看看 沈寒

你应该知道的常用Linux语法-1

  1. -rw-rw-r-- l
    Linux文件权限你分开三段来看,首位代表是目录还是文件,一般不用管,后面的三段每段3位,r代表可读,w代表可写,x代表可执行,第一段是代表文件所属的用户对它的权限,第二段是所属用户组的用户对它的权限,第三段是其他用户对它的权限。
    第一段:rw- ,所属用户(比如是root)对这个文件可读可写
    第二段:rw- ,所属用户组用户,对这个文件可读可写
    第三段:r-- ,其他用户对这个文件可读
  2. cat命令
    cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。以下整理摘自Linux cat命令的使用

查看文件内容主要用法:
1、cat f1.txt,查看f1.txt文件的内容。
2、cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号。
3、cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,只不过对于空白行不编号。
4、cat -s f1.txt,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。
5、cat -e f1.txt,在输出内容的每一行后面加一个$符号。
6、cat f1.txt f2.txt,同时显示f1.txt和f2.txt文件内容,注意文件名之间以空格分隔,而不是逗号。
7、cat -n f1.txt>f2.txt,对f1.txt文件中每一行加上行号后然后写入到f2.txt中,会覆盖原来的内容,文件不存在则创建它。
8、cat -n f1.txt>>f2.txt,对f1.txt文件中每一行加上行号后然后追加到f2.txt中去,不会覆盖原来的内容,文件不存在则创建它。

linux命令第二篇

阅读数 72

没有更多推荐了,返回首页