1.Linux基础操作:主题3 用户用户组和权限管理

来源:互联网 发布:ae2014cc mac破解补丁 编辑:程序博客网 时间:2024/04/28 08:28

1. 基本概念

1.1 用户和用户组

Linux是多用户操作系统,所以具有一套的完整用户系统,并进行有效的文件权限控制措施。每一个程序或者文件,都是根据用户(组)进行权限控制与管理的。
用户组是将权限相同的用户集中管理的组织单位。
每一个用户都属于一个用户组。在使用图形界面创建用户不指定用户组的情况下,Linux会自动创建一个与用户名相同的用户组。
每一个用户都有自己的目录。一般用户是在/home下,比如用户densintian的主目录就是/home/densintian,而root用户的目录位置在/root。
说道这里,相信root这个词都不陌生,就是超级管理用户。能够代替所有的用户干任何事,为了安全起见,任何能不再它下面干的事情,就不要在它下面干。

1.2 权限

从使用方法的角度,权限分成三种:读取(r)写入(w)执行(x)
从使用者的角度,权限分为:所有者,用户组和全体用户
两者结合就变成了下面的表格(最后一行我们可以先不去管它)


好了,我们现在通过命令查看一下文件的权限如下:
[densintian@rachel src]$ ls -l总用量 20-rw-rw-r--. 1 densintian densintian 1415 2014/10/26 00:23:15 add.cpp-rwxrwxr-x. 1 densintian densintian 8806 2014/10/26 00:24:12 a.outdrwxrwxr-x. 2 densintian densintian 4096 2014/10/28 12:36:59 temp[densintian@rachel src]$
ls 命令本身,是列目录。-l 是采用详细信息列表的方式显示。
下面我们从左边开始,介绍每一列的含义
第一个信息就是文件的权限。
现在目录中有三个文件
add.cpp 是程序的源代码文件
a.out    是add.cpp编译后的可执行文件
temp    是一个目录
我们位来说明第一列的信息, 
第一位 说明了当前列表对象的类型  “-“ 是文件,而”d”就是目录
第二位到第四位是所有者的权限,temp目录和a.out都是既可以读些也可以执行的状态。而add.cpp文件,因为只是一个源代码文件,本身是无法被执行的。所以并没有可执行权限。
第五位到第七位是用户组的权限。
第八位到第十位是Everyone的权限。
 第二个信息是硬连接数。
这个概念我们在以后用到的时候再说,在这里我们只需要知道,对于一般的文件这个值是1,对于目录,这个值代表了这个目录中子目录的个数。因为任何一个目录都会有两个子目录[.]和[..],所以对于目录来说,这个值最小是2.
第三个信息是这个文件的所有者。
第四个信息是这个文件的用户组。
这里要注意,所有者和用户组是不相关的。这就好比我制作了一份考勤表的模板,要求一个项目部门给我填好。那么我作为文件所有者,具有文件的读写权限。这个项目部门(用户组)也需要有这个文件的读写权限。而我和这个部门没有直接的所属关系。
第五个信息是这个文件对象的大小
第六个信息是这个文件对象的最终修改日期和时间
第七个信息是这个文件对象的文件名
注意,新安装的Fedora操作系统会显示简单的日期和时间信息。为了和本教程的显示结果一致,请将环境变量$TIME_STYLE设置为'+%Y/%m/%d.%H:%M:%S',也可以直接写如.bashrc文件中。
[densintian@rachel ~]$ cat .bashrc# .bashrc# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrcfi# Uncomment the following line if you don't like systemctl's auto-paging feature:# export SYSTEMD_PAGER=# User specific aliases and functionsexport TIME_STYLE='+%Y/%m/%d.%H:%M:%S'[densintian@rachel ~]$

2 变更权限

2.1 所有者和用户组的变更

所有者的变更,命令chown

命令格式 chown [所有者][:[]] 文件...

用户组的变更,命令 chgrp

命令格式chgrp [所属群组] [文件或目录...] 

2.2 文件权限的变更

文件权限的变更, 命令 chmod
格式:chmod [options] mode files

2.3 实战

命令的讲述稍显抽象,我们通过实际操作来说明这个问题。

[chown]

[densintian@rachel temp]$ su #改变用户权限的操作必须在root用户下密码:[root@rachel temp]# ll       #<span style="font-family: Arial, Helvetica, sans-serif;">有test1,test2两个文件,都属于root用户</span>总用量 0-rw-r--r--. 1 root root 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 root root 0 2014/10/28.13:49:41 test2[root@rachel temp]# chown densintian test1 #改变test1文件的所有者[root@rachel temp]# ll总用量 0-rw-r--r--. 1 densintian root 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 root       root 0 2014/10/28.13:49:41 test2[root@rachel temp]# chown densintian:densintian test2 #改变test2文件的所有者和用户组[root@rachel temp]# ll  #可以看到区别总用量 0-rw-r--r--. 1 densintian root       0 2014/10/28.13:49:25 test1-rw-r--r--. 1 densintian densintian 0 2014/10/28.13:49:41 test2[root@rachel temp]# chown root:densintian test1[root@rachel temp]# ll  #改变成不所属的用户和用户组总用量 0-rw-r--r--. 1 root       densintian 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 densintian densintian 0 2014/10/28.13:49:41 test2[root@rachel temp]#

[chgrp]
[root@rachel temp]# ll  #基于上次的运行结果总用量 0-rw-r--r--. 1 root       densintian 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 densintian densintian 0 2014/10/28.13:49:41 test2[root@rachel temp]# chgrp root test*  #可以使用通配符[root@rachel temp]# ll总用量 0-rw-r--r--. 1 root       root 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 densintian root 0 2014/10/28.13:49:41 test2[root@rachel temp]# 


[chmod]

[root@rachel temp]# ll总用量 0-rw-r--r--. 1 root       root 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 densintian root 0 2014/10/28.13:49:41 test2[root@rachel temp]# chmod 751 test1  #改变test1的权限,所有者分配读、写、执行(7)的权限,所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限[root@rachel temp]# ll总用量 0-rwxr-x--x. 1 root       root 0 2014/10/28.13:49:25 test1-rw-r--r--. 1 densintian root 0 2014/10/28.13:49:41 test2[root@rachel temp]# chmod u=rwx,g=rx,o=x test2 #上一个命令的另一种写法,执行结果是一样的。[root@rachel temp]# ll总用量 0-rwxr-x--x. 1 root       root 0 2014/10/28.13:49:25 test1-rwxr-x--x. 1 densintian root 0 2014/10/28.13:49:41 test2[root@rachel temp]# 


0 0
原创粉丝点击