目录
一、Linux中权限的概念
二、 Linux下的用户
2.1 用户的类型
2.2 用户创建、切换和删除
2.2.1 'useradd'或'adduser'命令创建用户
2.2.2 'passwd'命令设置用户密码
2.2.3 'userdel'命令删除用户
2.2.4 'su'命令切换用户身份等来管理和操作用户
2.3 注意事项
三、权限的管理
3.1 文件类型和基本权限
3.2 文件访问者的分类
3.3 文件权限值的表示方法
3.4 文件访问权限的相关设置方法
3.4.1 chmod命令来设置文件的访问权限
3.4.2 chown修改文件或目录的所有者
3.4.3 chgrp修改文件或目录的所属组
3.4.4 umask查看或修改文件掩码
3.5 目录的权限
3.6 粘滞位
3.7 普通用户使用sudo提权
Linux权限是保证系统安全性的重要手段,也是Linux系统的基础之一。
下面来详细介绍以上信息。
在Linux系统中,每个用户都有一个唯一的用户名和用户ID(UID),用于标识和管理用户。Linux下的用户可以分为以下几种类型:
1. 超级用户(root):超级用户拥有系统中最高权限,并可以执行系统级别的管理任务。超级用户可以访问和修改系统的所有文件和设置。
2. 普通用户:普通用户是指一般的系统用户,它们是由管理员创建并分配给系统的普通用户账户。普通用户具有较低的权限,只能访问和修改自己的文件和一些共享的资源。
除了上述类型的用户之外,还可以有其他用户类型,如系统用户、组用户、FTP用户等,以满足特定的需求。
设置不同类型用户的好处:
通过为不同用户分配适当的权限,可以控制他们对系统资源的访问和操作范围,从而提高系统的安全性和管理效率。
注: 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。输入命令时要注意。
在Linux系统中,可以使用'useradd'命令创建用户,'userdel'命令删除用户,'passwd'命令设置用户密码,'su'命令切换用户身份等来管理和操作用户。每个用户都有自己的家目录(Home Directory),用于存储其个人文件和配置信息。
'adduser'和 'useradd'的区别
root 用户执行: adduser user1 或 useradd -m user2
普通用户执行:sudo adduser user1 或 sudo useradd -m user2
useradd选项:
- -d: 指定用户的主目录
- -m: 如果目录存在不再创建,但是此目录并不属于新创建用户;
如果主目录不存在,则强制创建;- -M: 不创建主目录
执行 # sudo useradd -m user2 时需要输入普通用户的密码。
在root用户输入:passwd 用户名
接着会让你输入密码和确认密码,此时密码是不显示的,输入时要注意密码的正确。
在root用户输入:userdel [选项] 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
# userdel -r user1
此命令删除用户user1在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
su是switch user的缩写,表示用户切换
例如,要从root用户切换到普通用户user1,使用 su user1。
要从普通用户user1切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码
在之前的练习中,不知道大家有没有注意到,.c文件编译生成可执行程序时,不用或者写错可执行程序的后缀也可以执行该程序。可执行程序改后缀名后仍可运行
这是因为Linux区分文件类型,与后缀无关,用文件属性中第一列的第一个字符来区分文件的类型,加上后缀是为了让用户区分。
文件的权限由一串符号表示,如drwxr-xr-x,其中第一个字符表示文件类型,后面的三组字符分别表示所有者、所属组和其他人的权限。
文件类型:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
基本权限
- 读 -r:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写 -w:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行 -x:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “-”表示不具有该项权限
注:
前面讲到:
- Linux文件访问者有三种,分别是所有者(User)、所属组(Group)和其他用户(Others)。
- 文件的访问者可以根据其角色和权限的不同进行分类,每个类别的访问者拥有不同的权限来访问或操作文件。这种分类和权限设置机制有助于提高文件的安全性和保护用户的隐私。
为什么要有所属组:
①方便共享资源。将多个用户归为一个组,可以方便地共享资源,如文件、目录等,避免重复创建和管理。
②方便管理和控制。将多个用户归为一个组,可以方便地管理和控制他们对某些文件或目录的访问权限,避免不必要的混乱和冲突。
③提高安全性。通过设置所属组的权限,可以限制某些用户对关键文件或目录的访问,提高系统的安全性。
注:
总之,在Linux中,文件的访问者可以根据其角色和权限的不同进行分类,每个类别的访问者拥有不同的权限来访问文件。这种分类和权限设置机制有助于提高文件的安全性和保护用户的隐私。
1、字符表示方法
Linux表示 |
说明 | Linux表示 | 说明 |
r-- | 只读 | -w- | 仅可写 |
--x | 仅可执行 | rw- | 可读可写 |
-wx | 可写和可执行 | r-- | 可读可执行 |
rwx | 可读可写可执行 | --- | 无权限 |
2、8进制数值表示方法
权限符号(读写执行) | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 4 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
chmod命令可以通过数字模式或符号模式来设置权限。
1、数字模式(三位8进制数字):
命令格式:chmod [XYZ] fileName,其中XYZ是三个8进制数字,分别表示所有者、所属组和其他人的权限。
每个权限有一个对应的数字值,r(读取)= 4,w(写入)= 2,x(执行)= 1。
使用数字模式时,将各个权限的数字值相加即可得到所需的权限组合。
例如,将文件example.txt的所有者权限设置为读写(rw),所属组权限设置为读取(r),其他人权限设置为无(---),可以使用命令:chmod 640 example.txt
使用符号模式时,可以使用加号(+)和减号(-)来添加或移除权限,同时使用字母表示权限。
符号表示法由3部分组成:谁(u、g、o、a)做什么(+、-、=)和(权限字符)。
u表示所有者,g表示所属组,o表示其他人,a表示所有人。+表示添加权限,-表示移除权限,=表示设置权限为指定值。
例如,要将文件example.txt设置为所有者具有写权限,所属组和其他人具有执行权限,可以使用命令:chmod u+w,go+x example.txt
其中,u+w表示给所有者添加写权限,go+x表示给所属组和其他人添加执行权限。
功能:修改文件或目录的所有者。
格式:chown [参数] <用户名> <文件或目录>
使用-R选项来递归修改目录及其子目录中的所有文件的所有者
例如,要将文件file.txt的所有者修改为user2:
sudo chown -R user2 file.txt
还可以通过指定用户和组的组合来修改所有者,使用冒号(:)分隔:
例如 chown zzx:root file.txt
拥有者为zzx,所属组为root
功能:修改文件或目录的所属组。
格式:chgrp [参数] <所属组> <文件或目录>
使用-R选项来递归修改目录及其子目录中的所有文件的所属组
要将文件file.txt的所属组修改为group:
chgrp group file.txt
同样地,可以通过指定用户和组的组合来修改所属组:
chgrp user:group file.txt
递归修改目录及其子目录中的所有文件的所属组:
chgrp -R group directory/
注:只有root用户或文件的所有者才能使用chown和chgrp命令修改文件的所有者和所属组。此外,修改文件的所有者和所属组可能需要管理员权限。所以上面命令不能执行时要加上sudo。
新建文件默认权限=0666,新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。
原因就是创建文件或目录的时候权限还要受到umask的影响。
权限掩码(umask)是一个用来设置新创建文件或目录默认权限的参数(三位八进制数)。
它决定了在创建新文件或目录时要屏蔽掉的权限位。
umask中的每一位对应一个权限位,如果对应位设置为1,则表示对应权限位被屏蔽,不会出现在新创建文件或目录的默认权限中。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
例如,如果umask值为022,则表示屏蔽掉组和其他用户的写权限。
那么,在创建新文件时,默认权限就会去掉写权限,即644(rw-r--r--);
在创建新目录时,默认权限会去掉写和执行权限,即755(rwxr-xr-x)。
注意:
umask的使用
使用umask命令可以查看当前的umask值:
umask
使用umask命令可以设置新的umask值,例如将umask设置为022:
umask 022
最终权限值 = 默认权限值 & (~umask)
- -x 可执行权限: 目录没有可执行权限, 则无法cd到目录中.
- -r 可读权限: 目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
- -w 可写权限: 目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
注意:
一个文件一定是属于一个目录的,
一个文件属性能不能查看,是由目录是否具有r权限决定的.
一个文件能不能被创建或删除,由文件所属目录是否有w权限决定,与文件本身的权限无关。
一般而言,不同的账号是不会在同一个目录的,但是如果我们多个账号想互相协同,共享一些数据呢?那他们就有了目录的w权限,岂不是他们就可以随意在该目录里面新建和删除了吗?
答案是可以的。[root@localhost ~]# chmod 0777 /home/ [root@localhost ~]# ls /home/ -ld drwxrwxrwx. 3 root root 4096 11月 23 15:58 /home/ [root@localhost ~]# touch /home/root.c [root@localhost ~]# ls -l /home/ 总用量 4 -rw-r--r--. 1 root root 0 11月 23 15:58 abc.c drwxr-xr-x. 27 user1 user1 4096 11月 23 15:53 user1 -rw-r--r--. 1 root root 0 11月 23 15:59 root.c [root@localhost ~]# su - litao [user1@localhost ~]$ rm /home/root.c #user1可以删除root创建的文件 rm:是否删除有写保护的普通空文件 "/home/root.c"?y [user1@localhost ~]$ exit logout
为了解决这个不科学的问题, Linux引入了粘滞位的概念
功能:限制对目录的删除操作。
格式:chmod -t <目录>
当一个目录被设置为"粘滞位",则该目录下的文件只能由
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 11月 23 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
注意:
前面在创建用户和修改文件时用到了sudo指令,下面来详细介绍。
sudo是linux系统管理指令,允许系统管理员让普通用户执行一些或者全部的root命令。
格式:sudo [命令]
实例:
$ sudo useradd -m user2
$ sudo chown -R user2 file.txt
添加用户到信任列表的步骤: