Linux下的用户和用户组,文件权限:chown和chmod

Posted masterbai2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下的用户和用户组,文件权限:chown和chmod相关的知识,希望对你有一定的参考价值。

如下图所示,root权限下新建一个用户MasterBai, /etc/passwd文件中新加入一些信息

这个文件中,记录了该服务器的用户信息,如下图红色框起来的用户,就是我们自己创建的用户,而起来2-25的用户,属于系统用户(在Linux中,所有的服务都必须建立在有用户的情况下才能执行,所以这些用户叫做Linux系统用户)。

技术分享图片

再来看下这些是什么意思(密码已加密,保存在etc/shadow文件下,root权限可查看):

用户帐号

用户密码

用户ID

用户组ID

用户名全称

用户主目录

用户所使用的shell

MasterBai

x

1002

1010

 

/home/MasterBai

/bin/bash

这里可以看到,我们在新建一个用户的时候,自动帮我们创建了一个相同名字的用户组MasterBai,ID为1010

若使用-g参数,则在创建用户的时候指定用户组,若不需要在创建的时候指定用户组,则使用-n参数。eg:

技术分享图片

我们可以使用groups查看当前用户所属的用户组:

 

那么反过来,我想知道某一个用户组下的所有用户呢?在Linux中保存用户信息的是/etc/passwd文件,而保存用户组信息的是/etc/group文件中,列出了所有用户组,密码和gid(用户组ID)。

 

通过相关的gid,在用户信息文件中查询:比如这里查询gid=1002的所有用户:

 

至此我们知道,gid=1002,名叫‘baihuidong’的用户组下,有三个用户:baihuidong,MasterBai2,MasterBai3

 

 

 

 

 

 

 

 

 

 

既然一个用户组下可以有多个用户,那一个用户是不是可以属于多个用户组呢?是可以的:

目前MasterBai这个用户,只有一个用户组,gid=1003,名字就叫MasterBai,我们在Master用户目录下创建一个测试文本

可以看到它的用户权限为MasterBai,用户组权限为MasterBai

 

好,此时我们给MasterBai添加另外一个用户组,看一下这个文本的所有权限会发生什么变化,注意切换到root权限下:

使用groupadd -g 1009 BaiGroup1新增了一个用户组

root权限下使用usermod -G BaiGroup1,MasterBai,baihuidong MasterBai 给‘MasterBai’用户添加了三个用户组。如图所示:

 

接下来我们看下刚刚我们用MasterBai权限创建的文本,现在变成什么样子了:

 

哇哦,用户组变成了BaiGroup1了,而这个BaiGroup1组和MasterBai用户什么关系呢?没错,估计你已经看出来了,是gid!

虽然这个用户有多个用户组,但是系统还是有一个主用户组,那就是gid对应的用户组。而每一个用户,只有一个gid,所以文件只和用户对应的主用户组有关,和其他用户组无关。

注意:

usermod -g group_name user_name

更改一个用户的主用户组(更改gid)

usermod -G group1,group2,group3 user_name

给用户增加用户组,但是主用户组不变。(文件的所属用户组也不变)

 

 

 

 

 

 

 

 

OK,讲完一些用户的相关基础知识,接下来介绍一个比较常用的2个命令兄弟:chown和chmod,文件权限控制命令。相信都不陌生吧,这两个命令,经常用在线上补丁脚本中。接下来讲单独讲一下chown命令:(chmod后面再讲)

这两个命令,chown是控制哪些人有权限,chmod是控制有什么权限。哈哈哈

首先我们对Linux中的文件一些简单介绍:

 

d

rwxr-xr-x

2

MasterBai

Baihuidong

4096

Jul

13

16:15

TestFolder

文件标识

权限

文件硬链接数

文件所有者

所属用户组

字节大小

时间

文件名

在文件标识中,d表示目录,-表示文件(其他的类型不常见不了解)

那chown的作用,就是更改目录或文件的所属用户和所属用户组

我现在把用户MasterBai的主用户组改成MasterBai(gid)

 

接下来我们使用chown命令,让TestFolder目录改成用户为MasterBai2,用户组为baihuidong

 

OK,使用chown user_name:group_name file_dir,使该文件的所属人和用户组都改变了

我们看看TestFolder里面的test.txt的属性有变化吗:

 

哇哦,没变,有些情况下我们也让该目录下的所有目录和文件的所属人和用户组都改变,咋办啊:

 

OK,使用chown -R user_name:group_name file_dir,使该文件以及目录下的所有文件和目录的所属人和用户组都改变。

如果我只想改变用户所属人,不想改变群组,也可以使用chown user_name file_dir 不要后面的“:group_name”来实现。

 

 

好了,chown就是这鸟用,哈哈,接下来将chmod,讲chmod之前,先讲下之前的文件属性的那一大串rwxr-xr-x是什么意思:

应该不难发现,这些属性都是由9位字母组成,Linux将其三个一组,分成三组:

 

 

 

 

这张图应该能解释清楚吧,好了现在开始使用chmod命令了:

比如,当前TestA这个目录的权限为775,我现在要把它改成755,怎么操作呢?

 

切换到root权限下执行:chmod 755 TestA

 

 

 

 

使用chmod -R 755 TestA可以使TestA目录下的所有文件目录权限都改为755:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

接下来讲下用户的删除和修改密码:

删除用户:

userdel MasterBai4          删除用户MasterBai4,在/etc/passwd中已经没有相关信息,但是用户的目录文件还在。
rm -rf MasterBai4           删除用户MasterBai4所在目录

更改密码:使用passwd命令修改密码

 


以上是关于Linux下的用户和用户组,文件权限:chown和chmod的主要内容,如果未能解决你的问题,请参考以下文章

linux 给所有文件下文件加权限

常用简单Chown命令和Chmod命令

Linux下的权限问题

linux目录的权限和归属

Linux 所属用户和文件权限修改

linux每日命令(29): chown命令