前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux】掌握Linux系统编程中的权限与访问控制

【Linux】掌握Linux系统编程中的权限与访问控制

作者头像
大耳朵土土垚
发布2024-05-07 08:31:10
980
发布2024-05-07 08:31:10
举报
文章被收录于专栏:c/c++c/c++

1.Linux权限的概念

?Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

超级用户的命令提示符如下图所示:

普通用户的命令提示符如下图所示:

?su命令

格式:

su [用户名]

功能:

切换用户

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

这里可以从root超级用户切换到普通用户:

代码语言:javascript
复制
su tutu   //tutu:普通用户的名字

因为root用户可以再linux系统下做任何事情,不受限制,所以从它切换到普通用户不用输入密码,而当普通用户切换到超级用户时则需要输入超级用户的密码;

??如何创建一个普通用户?

?1.确保自己现在是root用户,可以输入whoami来查看:

?2.在root用户下输入adduser+要创建的用户名(我这里用的是tutu),接着输入passwd+用户名设置该用户的密码,然后再重复输入新密码(注意这里输入密码不回显):

?3.当出现下面的语句就说明创建成功啦??:

2.Linux权限管理

我们在创建一个文件和目录后,使用ll指令,通常会看到显示出如下图所示的一连串字母和时间和文件/目录名:

上图中各部分表示的含义如下图所示:

对于红色部分我们来详细学习一下: 先来了解一下文件访问者

2.1文件访问者的分类(人)

分为三个类别: ?文件和文件目录的所有者:u—User ?文件和文件目录的所有者所在的组的用户:g—Group ?其它用户:o—Others

接下来我们再来看红色部分

2.2文件类型和访问权限(事物属性)

  • 文件类型

d:文件夹 -:普通文件 l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如屏幕等串口设备) s:套接口文件

可以看到上面创建的dir文件夹(目录)第一位是d;而file文件则是-

  • 基本权限

?读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 ?写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限 ?执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 ?“—”表示不具有该项权限

可以看到对于上图中的文件夹,所有者具有读、写和执行三种权限,文件所属组具有读和执行的权限,不具有写的权限,其他用户也是具有读和执行的权限,不具有写的权限; 对于上图中的普通文件,所有者具有读和写权限,不具有执行权限,文件所属组只具有权限,其他用户也只具有权限。

2.3文件权限值的表示方法

?字符表示方法

Linux表示

说明

r - -

只读

- w -

只写

- - x

仅可执行

rw -

可读可写

r - x

可读可执行

- wx

可写可执行

rwx

可读可写可执行

- - -

无权限

?8进制数值表示方法

能用八进制表示的原因是读、写、可执行这三个权限要么有要么没有,类似于计算机中的二进制,可以用01来表示,比如- - - 就可以表示为000;rwx 就可以表示为 111 ; 111换算为十进制就是7,不超过8,那么我们为了省去使用二进制要写三个数的麻烦,就可以使用八进制,如下图表所示:

权限符号表示

二进制表示

八进制表示

r - -

100

4

- w -

010

2

- - x

001

1

rw -

110

6

r - x

101

5

- wx

011

3

rwx

111

7

- - -

000

0

2.4文件访问权限的相关设置方法

?chmod指令

功能

用来更改文件或目录的权限的命令。 "chmod"是"change mode"的缩写。

格式

chmod [选项] [权限] 文件名

常用选项

R :递归修改目录文件的权限

说明

只有文件的拥有者和root才可以改变文件的权限

用户表示符

u:所有者的权限 g:所属组的权限 o:其他用户的权限 a:所有用户的权限(u、g、o的集合)

chmod指令权限格式

①用户表示符+/-=权限字符

+: 向权限范围增加权限代号所表示的权限 -: 向权限范围取消权限代号所表示的权限 =: 向权限范围赋予权限代号所表示的权限

实例一:

代码语言:javascript
复制
chmod u-rw file

其中:

结果如下:

实例二:

代码语言:javascript
复制
chmod a=x file

结果如下:

②三位8进制数字

代码语言:javascript
复制
chmod 644 file

结果如下:

?chown指令

功能

修改文件的拥有者

格式

chown [参数] [用户名] 文件名

实例

代码语言:javascript
复制
chown tutu file

结果如下:

?chgrp指令

功能

修改文件或目录的所属组

格式

chgrp [参数] [用户组名] 文件名

实例

代码语言:javascript
复制
chgrp tutu file

结果如下:

?umask指令

功能

查看或修改文件掩码

格式:

umask [mode]

其中,mode是一个三位八进制数字,用来表示文件和目录权限的掩码。

??当我们创建一个新文件时,我们会发现文件访问权限是文件所有者可读可写,文件所属组和其他用户只可读,如下图所示:

??这是因为新建文件默认权限是666(八进制表示),新建文件夹默认权限是777,创建文件或目录的时候还要受到umask的影响,而我们当前的umask值为0022(第一个0可忽略不计,即022); ??umask命令将掩码(022)与文件默认权限(666)进行"与"运算,然后从默认权限中去除相应的权限(文件夹同理),如下图所示:

这里是umask & mask ^ mask(mask就是上图中的666) 或者也可以mask & ~umask

??所以我们创建文件显示出的权限是644

将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。也就是我们看到的644 实例一:

代码语言:javascript
复制
 umask  

显示当前的umask值 说明:超级用户默认掩码值为0022,普通用户默认为0002。

结果如下:

实例二:

代码语言:javascript
复制
umask 011

设置新的umask值为0011

此时我们再创建新文件时,可以看到权限和之前有所不同,变成了666:

3.结语

Linux权限是指对文件和目录的访问控制。每个文件和目录都有一个所有者和一个所属组,而且还可以赋予其他用户的访问权限。Linux权限控制了文件和目录的读、写和执行权限,通过设置不同的权限组合可以限制用户对文件和目录的访问。以上就是今天的所有内容啦~ 完结撒花~???

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.Linux权限的概念
    • ?su命令
      • ??如何创建一个普通用户?
  • 2.Linux权限管理
    • 2.1文件访问者的分类(人)
      • 2.2文件类型和访问权限(事物属性)
        • 2.3文件权限值的表示方法
          • ?字符表示方法
          • ?8进制数值表示方法
        • 2.4文件访问权限的相关设置方法
          • ?chmod指令
          • ?chown指令
          • ?chgrp指令
          • ?umask指令
      • 3.结语
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com