“Linux文件目录的权限和归属”的版本间的差异
(→访问权限) |
(→设置文件/目录的权限) |
||
(未显示同一用户的10个中间版本) | |||
第1行: | 第1行: | ||
==文件类型== | ==文件类型== | ||
+ | 通过以下命令可以查看: | ||
+ | |||
+ | [root@maxin dev]# ls -l / | ||
===普通文件=== | ===普通文件=== | ||
我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令 | 我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令 | ||
第28行: | 第31行: | ||
==访问权限== | ==访问权限== | ||
+ | '''重点看一下这个图:''' | ||
+ | |||
[[文件:Linux2-4.png|500px]] | [[文件:Linux2-4.png|500px]] | ||
第40行: | 第45行: | ||
==归属(所有权)== | ==归属(所有权)== | ||
+ | [[文件:Linux2-4.png|500px]] | ||
+ | |||
===属主=== | ===属主=== | ||
属主:拥有该文件或目录的用户帐号 | 属主:拥有该文件或目录的用户帐号 | ||
第52行: | 第59行: | ||
你也可以这样理解,'''文件属主所具有的权限应高于本组用户,本组用户的权限应高于非本组用户。做为文件属主或者是root用户不可以随便赋予本组或非本组用户拥有与文件属主一样的权限,这样会导致安全漏洞'''。 | 你也可以这样理解,'''文件属主所具有的权限应高于本组用户,本组用户的权限应高于非本组用户。做为文件属主或者是root用户不可以随便赋予本组或非本组用户拥有与文件属主一样的权限,这样会导致安全漏洞'''。 | ||
− | ==查看文件/目录的权限和归属== | + | ==文件权限和归属相关命令== |
− | + | ===查看文件/目录的权限和归属=== | |
+ | $ ls -l afile | ||
+ | |||
+ | -rw-r--r-- 1 st01 class1 0 Apr 3 16:52 afile | ||
− | ==设置文件/目录的权限== | + | ===设置文件/目录的权限=== |
− | + | chmod命令 | |
− | 格式1:chmod [ugoa] [ | + | 格式1:chmod [ugoa] [=] [rwx] 文件或目录... |
*u、g、o、a 分别表示属主、属组、其他用户、所有用户 | *u、g、o、a 分别表示属主、属组、其他用户、所有用户 | ||
− | * | + | *= 表示设置权限 |
− | 格式2:chmod nnn 文件或目录... | + | 格式2:chmod [ugoa] [+-] [rwx] 文件或目录... |
+ | |||
+ | *u、g、o、a 分别表示属主、属组、其他用户、所有用户 | ||
+ | *+、-分别表示增加、去除、设置权限 | ||
+ | |||
+ | 格式3:chmod nnn 文件或目录... | ||
*nnn:3位八进制数 | *nnn:3位八进制数 | ||
第72行: | 第87行: | ||
− | + | 文件权限设置实例 | |
+ | |||
使用chmod命令设置文件权限 | 使用chmod命令设置文件权限 | ||
第147行: | 第163行: | ||
-rwxrw-r--. 1 horse horse 0 Jun 24 22:20 3.txt</nowiki> | -rwxrw-r--. 1 horse horse 0 Jun 24 22:20 3.txt</nowiki> | ||
− | ==使用附加权限== | + | ===使用附加权限=== |
− | ===SET位权限=== | + | ====SET位权限==== |
主要用途: | 主要用途: | ||
第164行: | 第180行: | ||
-rw-rwsr-x 1 harry root 19876 2008-07-17 /home/cnrts</nowiki> | -rw-rwsr-x 1 harry root 19876 2008-07-17 /home/cnrts</nowiki> | ||
− | ===粘滞位权限(Sticky)=== | + | ====粘滞位权限(Sticky)==== |
主要用途: | 主要用途: | ||
第178行: | 第194行: | ||
drwxrwxrwt 2 root root 4096 09-09 07:00 /var/tmp</nowiki> | drwxrwxrwt 2 root root 4096 09-09 07:00 /var/tmp</nowiki> | ||
− | ===使用附加权限=== | + | ====使用附加权限==== |
*设置SET位、粘滞位权限 | *设置SET位、粘滞位权限 | ||
*使用权限字符 | *使用权限字符 |
2019年7月2日 (二) 01:28的最新版本
目录
文件类型
通过以下命令可以查看:
[root@maxin dev]# ls -l /
普通文件
我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具... .... 或 cp工具等。这类文件的删除方式是用rm 命令
目录文件
当我们在某个目录下执行,看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d。创建目录的命令可以用 mkdir 命令,或cp命令,cp可以把一个目录复制为另一个目录。删除用rm 或rmdir命令。
链接文件
当我们查看文件属性时,会看到有类似 lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名 新文件名 。上面是一个例子,表示setup.log是install.log的软链接文件。怎么理解呢?这和Windows操作系统中的快捷方式有点相似。以上介绍Linux文件类型。
设备文件
与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下!通常又分为两种:
区块(block)设备档
就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等就是啦! 你可以随机的在硬盘的不同区块读写,这种装置就是成组设备!你可以自行查一下/dev/sda看看, 会发现第一个属性为[ b ]!
字符(character)设备文件
亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特色就是一次性读取的,不能够截断输出。 举例来说,你不可能让鼠标跳到另一个画面,而是滑动到另一个地方!第一个属性为 [ c ]。 如时您进入/dev目录,列一下文件,会看到类似如下的:
[root@localhost ~]# ls -al /dev/tty
crw-rw-rw- 1 root tty 5, 0 11-03 15:11 /dev/tty
[root@localhost ~]# ls -la /dev/sda1
brw-r----- 1 root disk 8, 1 11-03 07:11 /dev/sda1
我们看到/dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备。我们看到 /dev/sda1 的属性是 brw-r----- ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备。
访问权限
重点看一下这个图:
读取
读取:允许查看文件内容、显示目录列表
写入
写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行
可执行:允许运行程序、切换目录
例如python程序,并不是所有人都有执行的权限,只有最高权限的人有!
归属(所有权)
属主
属主:拥有该文件或目录的用户帐号
属组
属组:拥有该文件或目录的组帐号
打个比方可能好理解点,
- 恰好你有一套非常流行的漫画,你就是文件(漫画)的属主,文件属主对自己的文件拥有最大权限可读可写可执行。
- 如果你愿意与同组用户共享文件,那么就可以赋予同组用户(同班同学)一定的权限访问你的文件比如可读不可写可执行。
- 如果你愿意与外班学生分享漫画,文件属主也可以赋予可读不可写不可执行的权限给非同组用户。
你也可以这样理解,文件属主所具有的权限应高于本组用户,本组用户的权限应高于非本组用户。做为文件属主或者是root用户不可以随便赋予本组或非本组用户拥有与文件属主一样的权限,这样会导致安全漏洞。
文件权限和归属相关命令
查看文件/目录的权限和归属
$ ls -l afile
-rw-r--r-- 1 st01 class1 0 Apr 3 16:52 afile
设置文件/目录的权限
chmod命令
格式1:chmod [ugoa] [=] [rwx] 文件或目录...
- u、g、o、a 分别表示属主、属组、其他用户、所有用户
- = 表示设置权限
格式2:chmod [ugoa] [+-] [rwx] 文件或目录...
- u、g、o、a 分别表示属主、属组、其他用户、所有用户
- +、-分别表示增加、去除、设置权限
格式3:chmod nnn 文件或目录...
- nnn:3位八进制数
常用命令选项
-R:递归修改指定目录下所有文件、子目录的权限
文件权限设置实例
使用chmod命令设置文件权限
查看文件权限
$ ls -l afile -rw-r--r-- 1 st01 class1 0 Apr 3 16:52 afile 将其更改为rwxrw-r-- 方法一: [root@cloud17 test]# chmod u=rwx,g=rw,o=r 1.txt 方法二: [root@cloud17 test]# chmod u+x,g+w 2.txt 方法三: [root@cloud17 test]# chmod 764 3.txt [root@cloud17 test]# ls -l 2.txt 3.txt -rwxrw-r--. 1 root root 0 Jun 24 22:20 2.txt -rwxrw-r--. 1 root root 0 Jun 24 22:20 3.txt
设置文件/目录的归属
chown命令用于设置文件的属主和属组
命令格式 chown OWNER[:[GROUP]] FILE... 格式:
chown 属主 文件或目录 chown :属组 文件或目录 chown 属主:属组 文件或目录
常用命令选项
-R:递归修改指定目录下所有文件、子目录的归属
设置文件属主和属组
[root@cloud17 test]# ll -l
total 0 -rwxrw-r--. 1 root root 0 Jun 24 22:10 1.txt -rwxrw-r--. 1 root root 0 Jun 24 22:20 2.txt -rwxrw-r--. 1 root root 0 Jun 24 22:20 3.txt
将文件的拥有者由root改为horse:
[root@cloud17 test]# chown horse *.txt
[root@cloud17 test]# ll -l
total 0 -rwxrw-r--. 1 horse root 0 Jun 24 22:10 1.txt -rwxrw-r--. 1 horse root 0 Jun 24 22:20 2.txt -rwxrw-r--. 1 horse root 0 Jun 24 22:20 3.txt
将文件的拥有者和所属组设置为horse用户和horse组
[root@cloud17 test]# chown horse:horse *.txt
[root@cloud17 test]# ll -l
total 0 -rwxrw-r--. 1 horse horse 0 Jun 24 22:10 1.txt -rwxrw-r--. 1 horse horse 0 Jun 24 22:20 2.txt -rwxrw-r--. 1 horse horse 0 Jun 24 22:20 3.txt
使用附加权限
SET位权限
主要用途:
为可执行(有 x 权限的)文件设置,权限字符为“s” 其他用户执行该文件时,将拥有属主或属组用户的权限
SET位权限类型:
SUID:表示对属主用户增加SET位权限 SGID:表示对属组内的用户增加SET位权限 如果SGID是设定在目录上面,则在该目录内所建立的文件或目录的所属组,将会自动成为此目录的所属组。
[root@localhost ~]# ls -l /home/cnrts -rw-rwsr-x 1 harry root 19876 2008-07-17 /home/cnrts
粘滞位权限(Sticky)
主要用途:
为公共目录(例如,权限为777的)设置,权限字符为“t”
用户不能删除该目录中其他用户的文件
应用示例:/tmp、/var/tmp
[root@localhost ~]# ls -ld /tmp /var/tmp drwxrwxrwt 8 root root 4096 09-09 15:07 /tmp drwxrwxrwt 2 root root 4096 09-09 07:00 /var/tmp
使用附加权限
- 设置SET位、粘滞位权限
- 使用权限字符
- chmod ug±s 可执行文件...
- chmod o±t 目录名...
使用权限数字:
chmod mnnn 可执行文件...
m为4时,对应SUID,2对应SGID,1对应粘滞位,可叠加
文件ACL权限
ACL是 Access Control List 的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的细部权限设定。
ACL可以针对单一使用者,单一文件或目录来进行r,w,x的权限规范,对于需要特殊权限的使用状况非常有帮助。
ACL 主要可以针对以下方面来控制权限:
使用者 (user):可以针对使用者来设定权限;
组群 (group):针对用户组为对象来设定其权限;
预设属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的预设权限
管理文件系统访问控制列表�
查看:
$ getfacl filename
修改 : $ setfacl -m u:username:rw filename $ setfacl -m g:groupname:rw filename 删除 : $ setfacl -x u:username filename
实验案例:用户和文件权限管理
需求描述
将/etc/fstab 复制到/var/tmp/fstab ,设置harry可以读写,natasha不能做任何操作,其他用户可读,设置manager组为fstab 所属组
设置用户natasha对目录/home/cnrts(创建)有完全控制权限,在目录中创建的文件自动继承组的权限,设置manager组用户对目录有读写执行权行,其他人没有权限,(root除外)
完成后,分别运行lab-grade-3和lab-grade-14评估脚本以确定一切已正确完成。