Linux基础知识整理(二)——用户及权限管理 Linux基础知识整理(二)–用户及权限管理
前言
整理这部分Linux基础知识,更多是为了自己巩固知识点,其中很多内容都是基于前辈的整理,感谢。
之所以整理到我自己的博客是想着方便查阅,并根据自己的需要,删减增加一些内容。
一、用户与用户组管理
1.用户类别
用户是根据用户ID(UID)来识别的,默认ID长度为32位,默认ID编号从0开始 ,但是为了和老式系统兼容,用户ID限制在60000以下。Linux用户分总共分为三种,分别如下:
- root用户(用户ID 0)
- 系统用户(用户ID 1-499)
- 普通用户(用户ID 500以上)
所有用户具有如下特点:
- 每个用户拥有一个UserID,操作系统实际读取的是UID,而非用户名;
- 每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组;
- 每个组拥有一个GroupID;
- 每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限;
- 每个可登陆用户拥有一个指定的Shell环境。
2.用户相关配置文件
Linux用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件如下:
- /etc/passwd 保存用户信息
- /etc/shdaow 保存用户密码(以加密形式保存)
- /etc/group 保存组信息
- /etc/login.defs 用户属性限制,密码过期时间,密码最大长度等限制
- /etc/default/useradd 显示或更改默认的useradd配置文件
如需创建新用户,可以使用命令useradd。执行命令useradd test1即可创建test1用户,同时会创建一个同名的组test1,默认该用户属于test1主组。 执行useradd test1命令时,会根据如下步骤进行操作:
- 在/etc/passwd文件中添加用户信息;
- 如使用passwd命令创建密码,密码会被加密保存在/etc/shdaow中;
- 为test1创建家目录:/home/test1;
- 将/etc/skel中的.bash开头的文件复制至/home/test1;
- 创建与用户名相同的test1组,test1用户默认属于test1同名组;
- test1组信息保存在/etc/group配置文件中。
3.用户权限
在 Linux 操作系统中, root 用户的权限是最高的,能执行任何命令和操作。
Linux系统通过 UID来区分用户的权限级别,UID=0,表示此用户具有最高权限,即root用户。其他用户 UID 依次增加,通过/etc/passwd 可以查看到每个用户的独立的 UID。
4.用户组管理
所有的Linux或者Windows系统都有组的概念,通过组可以更加方便的管理用户,组的概念应用于各行行业,例如企业会使用部门、职能或地理区域的分类方式来管理成员。映射在Linux系统,同样可以创建用户,并用组的概念对其管理。Linux组有如下特点:
- 每个组有一个组ID;
- 组信息保存在/etc/group中;
- 每个用户至少拥有一个主组,同时还可以拥有31个附属组。
通过命令groupadd、groupdel、groupmod来对组进行管理,详细参数使用如下:
groupadd
- -g, --gid 指定新建工作组的 id;
- -o, --non-unique 允许创建有重复 GID 的组;
- -r, --system 创建系统工作组,系统工作组的组ID小于 500;
groupmod
- -g, --gid 修改用户组的GID;
- -n, --new-name 修改用户组的名称;
- -o, --non-unique 允许使用重复的 GID;
groupdel
- groupdel admin 删除admin组;
二、权限管理
1.概述
Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。 系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
Linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
2.权限类别
Lnux中有的文件及文件夹都有至少三种权限,常见的权限如下表所示:
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 可修改文件内容 | 可在目录中创建或删除内容 |
x(执行) | 可作为命令执行 | 可访问目录内容 |
划重点:目录必须拥有 x 即执行权限,否则无法查看其内容
3.权限与用户之间的关联
Linux权限授权,默认是授权给三种角色,分别是user、group、other,权限与用户之间的关联如下:
- U代表User,G代表Group,O代表Other; 每个文件的权限基于UGO进行设置;
- 权限三位一组(rwx),同时需授权给三种角色,UGO;
- 每个文件拥有一个所属用户和所属组,对应UGO,不属于该文件所属用户或所属组使用O来表示;
举个栗子,查看/usr/practice/
目录的权限,结果如下图:
/usr/practice/
目录属性参数详解如下:
- d 表示目录,同一位置如果为-,则表示普通文件;
- rwxr-xr-x 表示三种角色的权限,每三位为一种角色,依次为u,g,o权限,如上则表示user的权限为rwx,group的权限为r-x,other的权限为r-x;
- 2表示文件夹的链接数量,可理解为该目录下子目录的数量;
- 从左到右,第一个root表示该用户名,第二个root则为组名,其他人角色默认不显示;
- 4096表示该文件夹占据的字节数;
- Feb 19 20:28 表示文件创建或者修改的时间;
- /usr/practice 为目录的名,或者文件名。
4.权限变更
(1)chmod
修改某个用户、组对文件夹的权限,用命令chmod实现。其中:
- +表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- u代表User,g代表Group,o代表Other
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
具体案例如下:
-
授予用户对
/usr/practice/
目录拥有rwx权限chmod –R u+rwx /usr/practice/
-
授予组对
/usr/practice/
目录拥有rwx权限chmod –R g+rwx /usr/practice/
-
授予用户、组、其他人对
/usr/practice/
目录拥有rwx权限chmod –R u+rwx,g+rwx,o+rwx /usr/practice/
-
撤销用户对
/usr/practice/
目录拥有w权限chmod –R u-w /usr/practice/
-
撤销用户、组、其他人对
/usr/practice/
目录拥有x权限chmod –R u-x,g-x,o-x /usr/practice/
-
授予用户、组、其他人对
/usr/practice/
目录只有rx权限chmod –R u=rx,g=rx,o=rx /usr/practice/
(2)chmod二进制权限
Linux权限默认使用rwx来表示,为了更简化在系统中对权限进行配置和修改,Linux权限引入了二进制表示方法。
将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示;
Linux权限用二进制显示如下:
- rwx = 111
- r-x = 101
- rw- = 110
- r-- = 100
依次类推,转化为十进制,对应十进制结果显示如下:
- rwx = 111 = 4 + 2 + 1 = 7
- r-x = 101 = 4 + 0 + 1 = 5
- rw- = 110 = 4 + 4 + 0 = 6
- r-- = 100 = 4 + 0 + 0 = 4
得出结论,用r = 4,w = 2,x = 1来表示权限。
使用二进制方式来修改权限案例演示如下,其中默认/usr/parctice/
目录权限为755:
-
授予用户对/usr/parctice/目录拥有rwx权限
chmod –R 755 /usr/parctice/
-
授予组对/usr/parctice/目录拥有rwx权限
chmod –R 775 /usr/parctice/
-
授予用户、组、其他人对/usr/parctice/目录拥有rwx权限
chmod -R 777 /usr/practice/
(3)chown
改变某个文件的所有者或者所属的组,可以使用命令chown。
一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。
chown user[:group] filename
-
-R : 处理指定目录以及其子目录下的所有文件
-
user : 新的文件拥有者的使用者 ID
-
group : 新的文件拥有者的使用者组(group)
-
-c : 显示更改的部分的信息
-
–version : 显示版本
-
-f : 忽略错误信息
-
-h :修复符号链接
-
-v : 显示详细的处理信息
5.特殊权限及掩码
(1)权限掩码
Linux权限除了常见的rwx权限之外,还有很多特殊的权限,细心的读者会发现,为什么Linux目录默认权限755,而文件默认权限为644呢,这是因为Linux权限掩码umask导致。
每个Linux终端都拥有一个umask属性,umask属性可以用来确定新建文件、目录的默认权限,默认系统权限掩码为022。在系统中每创建一个文件或者目录,文件默认权限是666,而目录权限则为777,权限对外开放比较大,所以设置了权限掩码之后,默认的文件和目录权限减去umask值才是真实的文件和目录的权限。
对应目录权限为:777-022=755;对应文件权限为:666-022=644;
执行umask命令可以查看当前默认的掩码,umask -S 023可以修改权限掩码为023,默认为022。
(2)特殊权限
在Linux权限中,除了普通权限外,还有如下表5-2所示,三个特殊权限:
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
suid | 以文件的所属用户身份执行,而非执行文件的用户 | 无 |
sgid | 以文件所属组身份去执行 | 在该目录中创建任意新文件的所属组与该目录的所属组相同 |
sticky | 无 | 对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件 |
Linux中设置特殊权限方法如下:
- 设置suid: chmod u+s /usr/parctice/
- 设置sgid: chmod g+s /usr/parctice/
- 设置sticky: chmod o+t /usr/parctice/
特殊权限与设置普通权限一样,可以使用数字方式表示:SUID = 4, SGID = 2, Sticky = 1
可以通过chmod 4755 /usr/parctice/对该目录授予特殊权限为s的权限,Linux系统中s权限的应用常见包括:su、passwd、sudo,