Linux基本权限管理

说在前面的话:

本人最近在使用服务器时意外删除了实验数据,耽误了实验进程,于是本人痛定思痛,决定对Linux权限管理进行研究。本文所介绍的权限管理为基本权限管理,即给文件和目录的所属者(u)所属组(g)其他用户(o)分配的读(r)写(w)执行(x)权限。关于ACL权限以及特殊权限的介绍在本博文中不进行介绍。本篇博文参考 https://blog.csdn.net/owenzhang24/article/details/122234101,更多详细的内容可参考大佬的博客。


查看权限以及权限位介绍

权限位查看

Linux系统使用 ls -l 文件夹或文件名称查看权限,过程如下所示。

longjun@shiyanshi-Super-Server:~/Project$ ls -l MyCode/
总用量 28
-rw-rw-r-- 1 longjun longjun   752 624 09:57 copyslide.py
drwxrwxr-x 2 longjun longjun  4096 624 19:17 test
-rw-rw-r-- 1 longjun longjun 17646 624 09:57 Test_For_All.py

权限位介绍

以上述代码中test文件夹的权限位 drwxrwxr-x为例,共十位,这十位的权限位含义介绍如下:
第1位:代表文件类型。Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第一位表示文件类型。下面是一些常见的文件类型:

-: 普通文件
d: 目录文件。Linux中一切皆文件,所以目录也是文件的一种
l: 软链接文件
b:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件
c:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等
p: 管道符文件。这是一种非常少见的特殊设备文件。
s:套接字文件。这也是一种特殊设备文件,一些服务支持socket访问就会产生这样的文件

第2~4位:文件所属者的权限
r:代表read,是读取权限。
w:代表write,是写权限。
x:代表excute,是执行权限。
第5~7位:文件所属组的权限,同样拥有"rwx"权限。
第8~10位:代表文件其他人的权限,同样拥有"rwx"权限。

权限含义解释

读、写、执行权限对文件和目录的含义是不同的。
   权限对文件的作用
      读(r):对文件有读权限,代表可以读取文件中的数据。
      写(w):对文件有写权限,代表可以修改文件中的数据。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据,如果想要删除文件,则需要对文件的上级目录拥有写权限。
      执行(x):对文件有执行权限,代表文件可以运行。在Linux中,只要文件有执行权限,这个文件就是执行文件了,只是这个文件到底能不能正确执行,不仅需要看执行权限,还要看文件的代码是不是正确的语言代码。
   权限对目录的作用
      读(r):对目录有读权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些文件和子目录。
      写(w):对目录有写权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪贴子文件或子目录。
      执行(x):目录是不能运行的,那么对目录拥有执行权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行权限,就可以对目录执行 cd 命令进入目录。

权限设定

chmod命令

chmod 命令用来修改文件或目录的权限。
命令格式:chmod [选项] 权限模式 文件或目录
   选项:
      -R:递归设置权限,也就是给目录中的所有文件和子目录设定权限
      --reference=参考文件或目录:使用参考文件或参考目录的权限来设置目标文件或目录的权限
   权限模式:权限模式分为符号组合八进制数组合
   符号组合的格式是[ugoa][[±=][permission]],也就是[用户身份][[赋予方式][权限]]的格式。
      用户身份
         u:代表所有者(user)
         g:代表所属组(group)
         o:代表其他人(other)
         a:代表全部身份(all)
      赋予方式
         +:加入权限
         -:减去权限
         =:设置权限
      权限
         r:读取权限(read)
         -:写权限(write)
         x:执行权限(excute)
   八进制数组合的格式是[0-7][0-7][0-7]三位数字组成(每一位数字都是权限之和),第一位是所属者权限之和,第二位是所属组权限之和,第三位是其他人权限之和。
      r读取权限对应的数字是4
      w读取权限对应的数字是2
      x执行权限对应的数字是1
      例如读写权限rw八进制数表示6
示例:

# 1. 添加组用户的写权限。
chmod g+w test.log 
# 2. 删除其他用户的所有权限。权限为空,即权限设置为'---'
chmod o= test.log
# 使所有用户都没有写权限 
chmod a-w test.log 
# 3. 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限  
chmod u=rwx, g=rw, o=r test.log 
等价于 
chmod 754 test.log 
# 4. 将目录以及目录下的文件都设置为所有用户都拥有读写权限
chmod -R a=rw testdir/ 
# 5. 根据参考文件 a.log 的权限来 设置文件 test.log 的权限
chmod --reference=a.log ./test.log

chown 命令

chown 命令用来修改文件和目录的所有者和所属组。
命令格式:chown [选项] 所有者[:所属组] 文件或目录
   选项:
      -R:递归修改目录下所有的文件及子目录的所属者和所属组
      --reference=参考文件或目录:使用参考文件或参考目录的所属者和所属组来设置目标文件或目录的所属者和所属组
      所有者[:所属组]:当省略 “:所属组”,仅改变文件所属者
示例:

# 修改文件的所属者为 user1,所属组为 group1
chown user1:group1 test.log

本人会查询用户所属于的组,使用如下命令:

cat /etc/group

该命令下的每个用户有四个字段,分别是“组名”、“口令”、“组标识号”以及“组内用户列表”,以下分别介绍。

   **组名:**是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
   **口令:*字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是
   **组标识号:**与用户标识号类似,也是一个整数,被系统内部用来标识组。
   **组内用户列表:**是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
使用如下命令查看组内用户

groups

你可能感兴趣的:(linux,运维,服务器)