权限模型
linux权限模型,指的就是对用户、组、所有人这三个类别的用户对文件、文件夹的操作权限管控
三种角色
- user 文件、文件夹的创建者,所有人
- group 一个group对应多个user,user自动具有group的权限
- all 也叫others, 就是除开上述两个角色之外的所有用户
三种权限
- 读 r .文件读表示可以读内容,文件夹的读,表示可以查看其下的文件列表。具体其下的文件的读写权限,要在单个的文件上控制
- 写w. 文件的写权限能让你修改文件内容。文件夹的写权限,让你有权限在其下添加、删除文件和更改文件名。若果你没有文件夹的写权限,只有其下某个文件的写权限,那么你可以更改文件的内容,但确无法添加新文件,或删除该文件,或更改文件名
- 执行x. 文件的可执行,就是能不能执行该文件,文件夹的可执行则是限制对应角色能否进入该文件夹,比如你把一个文件夹组的x的权限去掉,那么所有该组下的用户将无法进入该该文件夹
查阅方式
使用ls -l命令即可查看当前路径下的文件、文件夹的权限。
- 红色部分是文件所有人、文件所属组、其它用户各自的读、写、可执行的权限。形如:
lrwxrwxrwx。从左开始,第一个字符表示文件的类型,可以有l,-,d其中l表示当前项目是个链接文件,-表示当前项目是文件,d表示当前项目是文件夹。从截图中可以看到,前三个项目分别是:链接文件、文件夹、文件 - 蓝色框选部分显示的是当前项目的所有人和所属组。第一个root是所有人,第二个root是所属组。一般一个用户创建后,其默认的分组跟他的用户名相同
- 黑色框选部分,为项目的名称,即链接路径,或文件名,或文件夹名
权限更改
这部分操作是不改变文件所有者和所属组,而只对其现有所有者,组、其它人能操作文件、文件夹的权限进行修改。
数字更改
以三位二进制来代表读、写、执行的权限。为1表示具有权限,0表示没有权限。3位二进制转成的十进制为从0到7。 比如二进制111,即为7,表示读写执行权限都有
chmod 764 sample
英文缩写更改
上述基于数字的方式赋权,需要计算二级制到十进制的转化,不够友好。而使用英文缩写的方式,见名知意,更容易使用。
用户角色的字母指代
- u 文件、文件夹的拥有者user
- g 文件、文件夹的所属组group
- o 除上述两者之外的其它用户others
- a 上述三个角色的指代 all
而权限本身的字母指代为
- r 读权限read
- w 写权限write
- x 执行权限executive
将权限赋予给某个角色,或从某个角色上摘除的操作符如下
- +表示添加权限
chmod u+x filename给文件拥有者赋执行权限 - -表示删除指定权限
chmod u-x filename将文件拥有者的执行权限移除 - = 重新设置对应角色的权限,也即会将对应角色的权限覆盖成新的。比如原来其它用户的权限为rwx, 你执行
chmod o=r filename后,其它用户的权限就只有‘r‘了。但用户所有者和所属组的权限不会给覆盖
可以chmod u+wx filename一次性给某文件的所有者赋几个权限。
再次总结下,赋值符号,=和+,-的区别在于。=是会覆盖对应角色的所有权限,+和-只修改制定的权限项。比如你改的是执行权限,那么文件的读写权限还是原来的。
角色更改
前面介绍的只是改文件对应角色的权限。这里介绍下,怎么改文件属于的角色。比如改其拥有者,改其所属组。
更改文件所有者的命令
chown user filename//更改文件的所有者
文件所有者,文件所属组一起更改
chown user:group filename
更改文件所属组
chgrp group_name filename
查看当前用户的组
使用groups命令即可
查看当前用户的分组情况
id
查看系统都有哪些组
通过/etc/group文件即可。该文件中一行代表一个分组。一行的含义解读为
- 1表示分组名
- 2表示密码,一般没使用密码功能,都是x
- 3表示分组id
- 4表示该分组下的用户列表,以逗号分隔
查看系统都有哪些用户
通过/etc/passwd查看。该文件每一行代表一个用户,每一行的解释如下
mark:x:1001:1001:mark,,,:/home/mark:/bin/bash
[--] - [--] [--] [-----] [--------] [--------]
| | | | | | |
| | | | | | +-> 7. Login shell
| | | | | +----------> 6. Home directory
| | | | +--------------------> 5. GECOS
| | | +--------------------------> 4. GID
| | +-------------------------------> 3. UID
| +-----------------------------------> 2. Password
+----------------------------------------> 1. Username
查看一个组有哪些用户
前面说的/etc/group文件中,可以有一个组的用户列表,但通过这个文件去看一个组有哪些用户,往往是不准确的。因为一个组的用户,往往不一定在该文件中体现。最准确的查看方式为
lid -g groupname
参考资料
https://www.guru99.com/file-permissions.html
https://www.cyberciti.biz/faq/understanding-etcgroup-file/
https://linuxize.com/post/etc-passwd-file/
原文:https://www.cnblogs.com/niceshot/p/12901539.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!