浅谈Centos用户权限管理

浅谈Centos用户权限管理

2014年12月03日 11:02:56 lyg520lj 阅读数:586mysql

一.用户与组的概念
1.理解linux多用户,多任务的特性
Linux是一个真实的、完整的多用户多任务操做系统,多用户多任务就是能够在系统上创建多个用户,而多个用户能够在同一时间内登陆同一个系统执行各自不一样的任务,而互不影响,例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内,root用户可能在查看系统日志,管理维护系统,www用户可能在修改本身的网页程序,ftp用户可能在上传软件到服务器,mysql用户可能在执行本身的SQL查询,每一个用户互不干扰,有条不紊的进行着本身的工做,而每一个用户之间不能越权访问,好比www用户不能执行mysql用户的SQL查询操做,ftp用户也不能修改www用户的网页程序,所以可知,不一样用户具备不一样的权限,每一个用户是在权限容许的范围内完成不一样的任务,linux正是经过这种权限的划分与管理,实现了多用户多任务的运行机制。
2.linux下用户的角色分类
 在linux下用户是根据角色定义的,具体分为三种角色:
 超级用户:拥有对系统的最高管理权限,默认是root用户。
 普通用户:只能对本身目录下的文件进行访问和修改,具备登陆系统的权限,例如上面提到的www用户、ftp用户等。
 虚拟用户:也叫“伪”用户,这类用户最大的特色是不能登陆系统,它们的存在主要是方便系统管理,知足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,通常运行的web服务,默认就是使用的nobody用户,可是nobody用户是不能登陆系统的。
3.用户和组的概念
 咱们知道,Linux是一个多用户多任务的分时操做系统,若是要使用系统资源,就必须向系统管理员申请一个帐户,而后经过这个帐户进入系统。这个帐户和用户是一个概念,经过创建不一样属性的用户,一方面,能够合理的利用和控制系统资源,另外一方面也能够帮助用户组织文件,提供对用户文件的安全性保护。
 每一个用户都用一个惟一的用户名和用户口令,在登陆系统时,只有正确输入了用户名和密码,才能进入系统和本身的主目录。
 用户组是具备相同特征用户的逻辑集合,有时咱们须要让多个用户具备相同的权限,好比查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问受权,若是有10个用户的话,就须要受权10次,显然这种方法不太合理;另外一种方法是创建一个组,让这个组具备查看、修改此文件的权限,而后将全部须要访问此文件的用户放入这个组中,那么全部用户就具备了和组同样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,经过定义用户组,在很大程度上简化了管理工做。
4.用户和组的关系:
用户和用户组的对应关系有:一对1、一对多、多对一和多对多;下图展现了这种关系:linux


 一对一:即一个用户能够存在一个组中,也能够是组中的惟一成员。
 一对多:即一个用户能够存在多个用户组中。那么此用户具备多个组的共同权限。
 多对一:多个用户能够存在一个组中,这些用户具备和组相同的权限。
 多对多:多个用户能够存在多个组中。其实就是上面三个对应关系的扩展。web

二 用户配置文件概述
1.用户和组相关的配置文件
(1)/etc/passwd文件
系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每一个用户的一些基本属性,而且对全部用户可读。/etc/passwd中每一行记录对应一个用户,每行记录又被冒号分割,其格式和具体含义以下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:默认shell 
下面是/etc/passwd文件的部分输出:
[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
下面是每一个字段的详细含义:
 用户名:是表明用户帐号的字符串。
 口令:存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,可是因为/etc/passwd文件对全部用户均可读,因此这还是一个安全隐患。所以,如今许多Linux 版本都使用了shadow技术,把真正加密后的用户口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如用“x”或者“*”来表示。 
 用户标识号:就是用户的UID,每一个用户都有一个UID,而且是惟一的,一般UID号的取值范围是0~65535,0是超级用户root的标识号,1~99由系统保留,做为管理帐号,普通用户的标识号从100开始。而在Linux系统中,普通用户UID默认从500开始。UID是linux下确认用户权限的标志,用户的角色和权限都是经过UID来实现的,所以多个用户公用一个UID是很是危险的,会形成系统权限和管理的混乱,例如将普通用户的UID设置为0后,这个普通用户就具备了root用户的权限,这是极度危险的操做。所以要尽可能保持用户UID的惟一性。
 组标识号:就是组的GID,与用户的UID相似,这个字段记录了用户所属的用户组。它对应着/etc/group文件中的一条记录。
 注释性描述:字段是对用户的描述信息,好比用户的住址、电话、姓名等等。
 主目录:也就是用户登陆到系统以后默认所处的目录,也能够叫作用户的主目录、家目录、根目录等等。
 默认shell:就是用户登陆系统后默认使用的命令解释器,shell是用户和linux内核之间的接口,用户所做的任何操做,都是经过shell传递给系统内核的。linux下经常使用的shell有sh、bash、csh等,管理员能够根据用户的习惯,为每一个用户设置不一样的shell。
(2)/etc/shadow文件
用户影子文件,因为/etc/passwd文件是全部用户均可读的,这样就致使了用户的密码容易出现泄露,所以,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。
下面介绍下/etc/shadow文件内容的格式:
用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段
例如:下面是/etc/shadow文件的部分输出:
[root@localhost ~]# more /etc/shadow
root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::
bin:*:13934:0:99999:7:::
daemon:*:13934:0:99999:7:::
adm:*:13934:0:99999:7:::
下面是每一个字段的详细含义:
 用户名:与/etc/passwd文件中的用户名有相同的含义。
 加密口令:存放的是加密后的用户口令字串,若是此字段是“*”、“!”、“x”等字符,则对应的用户不能登陆系统。 
 最后一次修改时间:表示从某个时间起,到用户最近一次修改口令的间隔天数。能够经过passwd 来修改用户的密码,而后查看/etc/shadow中此字段的变化。
 最小时间间隔:表示两次修改密码之间的最小时间间隔。
 最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能加强管理员管理用户的时效性。
 警告时间:表示从系统开始警告用户到密码正式失效之间的天数。
 不活动时间:此字段表示用户口令做废多少天后,系统会禁用此用户,也就是说系统再也不让此用户登陆,也不会提示用户过时,是彻底禁用。
 失效时间:表示该用户的账号生存期,超过这个设定时间,账号失效,用户就没法登陆系统了。若是这个字段的值为空,账号永久可用。
 保留字段:linux的保留字段,目前为空,以备linux往后发展之用。
(3)/etc/group文件
用户组配置文件,用户组的全部信息都存放在此文件中。
下面介绍下/etc/group文件内容的格式:
组名:口令:组标识号:组内用户列表
例如:下面是/etc/group的部分输出:
[root@localhost ~]# more /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
下面是/etc/group每一个字段的含义:
 组名:是用户组的名称,由字母或数字构成。与/etc/passwd中的用户名同样,组名不能重复。
 口令:存放的是用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,而在这里用“x”代替,linux系统下默认的用户组都没有口令,能够经过gpasswd来给用户组添加密码。
 组标识号:就是GID,与/etc/passwd中的组标识号对应。
 组内用户列表: 显示属于这个组的全部用户,多个用户之间用逗号分隔。
2./etc/login.defs文件
用来定义建立一个用户时的默认设置,好比指定用户的UID和GID的范围,用户的过时时间、是否须要建立用户主目录等等。
下面是rhel5下的/etc/login.defs文件,简单介绍以下:
MAIL_DIR        /var/spool/mail
当建立用户时,同时在目录/var/spool/mail中建立一个用户mail文件
PASS_MAX_DAYS   99999
#指定密码保持有效的最大天数
PASS_MIN_DAYS   0
表示自从上次密码修改以来多少天后用户才被容许修改口令
PASS_MIN_LEN    5
指定密码的最小长度
PASS_WARN_AGE   7
表示在口令到期前多少天系统开始通知用户口令即将到期
UID_MIN                   500
指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始
UID_MAX                 60000
指定最大UID为60000
GID_MIN                   500
指定最小GID为500,也就是添加组时,组的GID从500开始。
GID_MAX                 60000
指定最大GID为60000
CREATE_HOME     yes
此项是指定是否建立用户主目录,yes为建立,no为不建立。
3./etc/default/useradd文件
当咱们经过useradd命令不加任何参数建立一个用户后,用户默认的主目录通常位于/home下,默认使用的shell是/bin/bash,这是为何呢,看看/etc/default/useradd这个文件的内容就彻底明白了。
[root@localhost ~]# more /etc/default/useradd
# useradd defaults file
GROUP=100  
HOME=/home  #此项表示将新建用户的主目录放在/home目录下
INACTIVE=-1 #此项表示是否启用账号过时禁用,-1表示不启用
EXPIRE=     #此项表示账号过时日期,不设置表示不启用
SHELL=/bin/bash  #此项指定了新建用户的默认shell类型
SKEL=/etc/skel  #此项用来指定用户主目录默认文件的来源,也就是说新建用户主目录下的文件都是从这个目录下复制而来的
CREATE_MAIL_SPOOL=no
/etc/default/useradd文件定义了新建用户的一些默认属性,好比用户的主目录、使用的shell等等,经过更改此文件,能够改变建立新用户的默认属性值。
改变此文件有两种方法,一种是经过文本编辑器方式更改,另外一种是经过useradd命令来更改。这里介绍一下第二种方法:
Useradd命令加“-D”参数后,就能够修改配置文件/etc/default/useradd,使用的通常格式为:
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
每一个选项详细含义以下:
 -g default_group
表示新建用户的起始组名或者GID,组名必须为已经存在的用户组名称,GID也必须是已经存在的用户组GID。与/etc/default/useradd文件中“GROUP”行对应。
 -b default_home
指定新建用户主目录的上级目录,也就是全部新建用户都会在此目录下建立本身的主目录。与/etc/default/useradd文件中HOME行对应。
 -s default_shell
指定新建用户默认使用的shell,与/etc/default/useradd文件中“SHELL”行对应。
 -f default_inactive
指定用户账号过时多长时间后就永久停用,与/etc/default/useradd文件中“INACTIVE”行对应。
 -e default_expire_date
指定用户账号的过时时间。与/etc/default/useradd文件中“EXPIRE”行对应。
例子:
useradd –D不加任何参数时,显示/etc/default/useradd文件的当前设置
[root@localhost ~]# useradd -D  
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
若是要修改添加用户时的默认shell为/bin/csh,能够这么操做:
[root@localhost ~]# useradd -D -s /bin/csh
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
4./etc/skel目录
在建立一个新用户后,会在新用户的主目录下看到相似.bash_profile, .bashrc, .bash_logout等文件,这些文件是怎么来的呢,若是我想让新创建的用户在主目录下默认拥有本身指定的配置文件,该如何设置呢?
/etc/skel目录就是解决这个问题的,/etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就能够改变新建用户默认主目录的配置文件信息。sql

用户管理工具  shell

一.添加、切换、删除用户组命令groupadd/newgrp/groupdel
1.groupadd命令
用来新建一个用户组。语法格式为:
groupadd [-g -o] gid  group
各个选项具体含义以下:
-g:指定新建用户组的GID号,该GID号必须惟一,不能和其它用户组的GID号重复。
-o:通常与-g选项同时使用,表示新用户组的GID能够与系统已有用户组的GID相同。
例如:
建立一个linuxfans的用户组和一个fanslinux用户组,GID分别为1020和1030
[root@localhost ~]# groupadd -g 1020 linuxfans
[root@localhost ~]# groupadd -g 1030 fanslinux
[root@localhost ~]# more /etc/group|grep  linuxfans
linuxfans:x:1020:
[root@localhost ~]# more /etc/group|grep  fanslinux
fanslinux:x:1030:
2.newgrp命令
若是一个用户同时属于多个用户组,那么用户能够在用户组之间切换,以便具备其余用户组的权限,newgrp主要用于在多个用户组之间进行切换,语法格式为:
newgrp <用户组>
 例子:下面经过实例讲述newgrp的用法:
首先创建了3个用户组group一、group2和group3.
[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
[root@localhost ~]# groupadd group3
下面建立了一个用户user1,同时指定user1的主用户组为group1,附加用户组为group2和group3
[root@localhost ~]# useradd -g group1 -G group2,group3 user1
[root@localhost ~]# more /etc/group|grep user1
group2:x:501:user1
group3:x:502:user1
下面是对用户user1设置密码
[root@localhost ~]# passwd user1
Changing password for user user1.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
下面是切换到user1用户下,经过newgrp切换用户组进行的一系列操做,从中能够看出newgrp的做用。
[root@localhost ~]# su - user1
[user1@localhost ~]$ whoami
user1
[user1@localhost ~]$ mkdir user1_doc
[user1@localhost ~]$ newgrp group2
[user1@localhost ~]$ mkdir user2_doc
[user1@localhost ~]$ newgrp group3
[user1@localhost ~]$ mkdir user3_doc
[user1@localhost ~]$ ll
total 12
drwxr-xr-x  2 user1 group1 4096 Oct 24 01:18 user1_doc
drwxr-xr-x  2 user1 group2 4096 Oct 24 01:18 user2_doc
drwxr-xr-x  2 user1 group3 4096 Oct 24 01:19 user3_doc
[user1@localhost ~]$
3.groupdel命令
表示删除用户组,语法格式为:
groupdel [群组名称]
当须要从系统上删除用户组时,可用groupdel指令来完成这项工做。若是该用户组中仍包括某些用户,则必须先删除这些用户后,而后才能删除用户组。
例如:删除linuxfans这个用户组
[root@localhost ~]# groupdel  linuxfans
二. 添加、修改和删除用户命令useradd/usermod/userdel 
1.useradd创建用户的过程
useradd不加任何参数建立用户时,系统首先读取添加用户配置文件/etc/login.defs和/etc/default/useradd,根据这两个配置文件中定义的规则添加用户,而后会向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc/passwd和/etc/group对应的加密文件也会自动生成记录,接着系统会自动在/etc/default/useradd文件设定的目录下创建用户主目录,最后复制/etc/skel目录中的全部文件到新用户的主目录中,这样一个新的用户就创建完成了。
2.useradd的使用语法
useradd语法的通常格式为:
useradd  [-u uid [-o]] [-g group] [-G group,...]
                [-d home] [-s shell] [-c comment]
                [-f inactive] [-e expire ] name
各个选项具体含义以下:
 -u uid:即用户标识号,此标识号必须惟一。
 -g group:指定新建用户登陆时所属的默认组,或者叫主组。此群组必须已经存在。
 -G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登陆时的默认组成为主组,而其它组称为附加组。
 -d home:指定新建用户的默认主目录,若是不指定,系统会在/etc/default/useradd文件指定的目录下建立用户主目录。
 -s shell:指定新建用户使用的默认shell,若是不指定,系统以/etc/default/useradd文件中定义的shell做为新建用户的默认shell。
 -c comment:对新建用户的说明信息。
 -f inactive:指定账号过时多长时间后永久停用。当值为0时账号则马上被停权。而当值为-1时则关闭此功能,预设值为-1
 -e expire:指定用户的账号过时时间,日期的指定格式为MM/DD/YY。
 name:指定须要建立的用户名。
3.usermod的使用语法
 usermod用来修改用户的帐户属性信息,使用语法以下:
usermod  [-u uid [-o]] [-g group] [-G group,...]
                [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
                [-f 失效日期] [-e 过时日期][-L|-U] Name
各个选项具体含义以下:
 -u uid:指定用户新的UID值,此值必须为惟一的ID值,除非用-o选项。
 -g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。
 -G group:修改用户所属的附加组。
 -d 主目录:修改用户登陆时的主目录。
 -s shell:修改用户登陆系统后默认使用的shell
 -c 注释:修改用户的注释信息。
 -l 新名称:修改用户账号为新的名称。
 -f 失效日:账号过时多少天后永久禁用。
 -e 过时日:增长或修改用户帐户的过时时间。
 -L:锁定用户密码,使密码无效。
 -U:解除密码锁定。
 Name:要修改属性的系统用户。
4.userdel的使用语法
Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的全部文件。语法格式为:
userdel [-r][用户账号]
5.应用举例
1)添加一个用户mylinux,指定所属的主用户组为fanslinux,附加用户组为linuxfans,同时指定用户的默认主目录为/opt/mylinux
[root@localhost ~]# useradd -g fanslinux -G linuxfans -d /opt/mylinux mylinux
[root@localhost ~]# more /etc/passwd|grep mylinux
mylinux:x:523:1030::/opt/mylinux:/bin/bash
[root@localhost ~]# more /etc/group|grep mylinux
linuxfans:x:1020:mylinux
 2)添加一个用户test_user,指定UID为686,默认的shell为/bin/csh,让其归属为用户组linuxfans和fanslinux,同时添加对此用户的描述,
[root@localhost ~]# useradd  -u 686 -s /bin/csh  -G linuxfans,fanslinux  -c "This is test user" test_user
[root@localhost ~]# more /etc/passwd|grep test_user
test_user:x:686:686:This is test user:/home/test_user:/bin/csh
[root@localhost ~]# more /etc/group|grep test_user  
fanslinux:x:1030:test_user
linuxfans:x:1020:mylinux,test_user
test_user:x:686:
 3)修改用户test_user的主用户组为新建的组test_group1,同时修改test_user的附加组为linuxfans和root,最后修改test_user的默认登陆shell为/bin/bash
[root@localhost ~]# groupadd test_group1  #添加一个新的用户组
[root@localhost ~]# more /etc/group|grep test_group1 #显示新增用户组的信息
test_group1:x:1031:
[root@localhost ~]# usermod -g test_group1 -G linuxfans,root -s /bin/bash test_user
[root@localhost ~]# more /etc/passwd|grep test_user   #从输出可知,用户的属性已经更改                                        
test_user:x:686:1031:This is test user:/home/test_user:/bin/bash
[root@localhost ~]# more /etc/group|grep test_user   #从输出可知,用户组的属性也同步更改   
root:x:0:root,test_user
linuxfans:x:1020:mylinux,test_user
test_user:x:686:
4)如何锁定、解除用户密码
下面首先对test_user和mylinux用户设置密码
[root@localhost ~]# passwd  test_user
Changing password for user test_user.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd  mylinux
Changing password for user mylinux.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
下面的操做是经过su命令切换到mylinux用户下,而后在mylinux下再次切换到test_user用户下,这里的切换用户是为了说明一个问题:从超级用户root切换到普通用户下,是不须要输入普通用户密码的,系统也不会去验证密码。但普通用户之间切换是须要密码验证的。
[root@localhost ~]# su – mylinux  #经过su命令切换到mylinux用户下
[mylinux@localhost ~]$ whoami      #用whoami命令查看当前用户
mylinux
[mylinux@localhost ~]$ su - test_user  #这里是从mylinux用户下切换到test_user用户下,须要输入密码
Password: 
[mylinux@localhost ~]$ whoami          #成功切换到test_user用户下
test_user
接下来,在root用户下执行usermod锁定test_user的密码,测试test_user是否还能登陆,从下面能够看出,密码锁定后,出现登陆失败。
[root@localhost ~]# usermod -L test_user  #锁定test_user用户的密码
[root@localhost ~]# su - mylinux  
[mylinux@localhost ~]$ whoami
mylinux
[mylinux@localhost ~]$ su - test_user  #这里输入的密码是正确的,可是提示密码错误,由于密码被锁定了
Password: 
su: incorrect password
[mylinux@localhost ~]$ whoami
mylinux
最后对test_user解除密码锁定,登陆正常。
[root@localhost ~]# usermod -U test_user  #解除密码锁定
[root@localhost ~]# su – mylinux
[mylinux@localhost ~]$ whoami
mylinux
[mylinux@localhost ~]$ su - test_user
Password: 
[test_user@localhost ~]$ whoami  #密码锁定解除后,test_user用户能够登陆系统
test_user安全

文件与权限的设定bash

 

所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行等,在linux下,每一个用户都具备不一样的权限,普通用户只能在本身的主目录下进行写操做,而在主目录以外,普通用户只能进行查找、读取操做,如何处理好文件权限和用户之间的关系,是本节讲述的重点。
一 查看文件的权限属性
使用ls命令就能够查看文件的以及目录的权限信息,不带任何参数的ls命令只显示文件名称,经过“ls –al”能够显示文件或者目录的权限信息,看下面的输出:
[root@localhost oracle]# ls -al
total 92
drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 admin
drwxr-xr-x   2 oracle oinstall  4096 Oct 23 18:22 bin
-rwxr-xr-x   1 root   root      3939 Mar 20  2008 .createtablespace.pl
drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 flash_recovery_area
drwxr-xr-x   2 oracle oinstall  4096 Jun 25 15:18 install
drwx------   2 oracle oinstall 16384 Jun 25 01:10 lost+found
drwxr-xr--   3 oracle oinstall  4096 Oct 30  2008 oradata
drwxr-xr-x   6 oracle oinstall  4096 Oct 30  2006 oraInventory
drwxr-xr-x   3 oracle dba       4096 Oct 28  2006 product
 为了能更详细的介绍上面输出中每一个属性的含义,下图列出了oradata文档每列表明的含义:
 服务器

下面经过具体的实例讲述每列表明的含义。
1.第一列显示文档类型与执行权限,有十个字符组成,分为4个部分,下面将文档oradata权限分解,以下图所示
 oracle

接着对每一个部分解释以下:
 文档类型部分:
当为“d”时,表示目录;当为“l”时表示软连接;当为“-”时表示文件;当为“c”时表示串行端口字符设备文件;当为“b”时表示可供存储的块设备文件。由此可知,oradata是一个目录。
在接下来的三个部分中,三个字符为一组,每一个字符的含义为:“r”表示只读,即read;“w”表示可写,即write;“x”表示可执行,即execute;“-”表示无此权限,即为空。
 User部分:
第二部分是对文档全部者(user)权限的设定,“rwx”表示用户对oradata目录有读、写和执行的全部权限。
 Group部分:
第三部分是对文档所属用户组(group)权限的设定,“r-x”表示用户组对oradata目录有读和执行的权限,可是没有写的权限。
 Others部分:
第四部分是对文档拥有者以外的其它用户权限的设定,“r--”表示其它用户或用户组对oradata目录只有读的权限。
文档的操做权限是能够指定和更改的,经过chmod命令便可更改文件或者目录的权限,这个将在下节讲述。
2.第二列显示的是文档的连结数,这个连结数就是硬连接的概念,即多少个文件指向同一个索引节点,举例以下:
[root@localhost ~]#ls -al
-rw-r--r--   1 root root 60151 Oct 25 01:01 install.log
[root@localhost ~]#ln install.log  install.log1
[root@localhost ~]#ls –al  install.log
-rw-r--r--   2 root root 60151 Oct 25 01:01 install.log
[root@localhost ~]#ln install.log  install.log2
[root@localhost ~]#ls –al  install.log
-rw-r--r--   3 root root 60151 Oct 25 01:01 install.log
从上面能够看出,install.log文件原始的连结数是1,而后作了两个硬连接操做,install.log文件的链接数变为3,这就是链接数的含义。
3.第三列显示了文档所属的用户和用户组,也就是文档是属于哪一个用户以及哪一个用户组全部,例如上面的oradata目录,所属的用户为oracle,所属的组为oinstall组。文件所属的用户和组是能够更改的,经过chown命令就能够修改文档的用户属性。
4.第四列显示的是文档的大小,默认显示的是以bytes为单位,可是也能够经过命令的参数修改显示的单位,例如能够经过“ls -sh”组合人性化的显示文档的大小。对于目录,一般只显示文件系统默认block的大小。
5.第五列显示文档最后一次的修改日期,一般以月、日、时、分的方式显示,若是文档修改时间距离如今已经很远了,会使用月、日、年的方式显示。
6.第六列显示的是文档名称,linux下以“.”开头的文件是隐藏文件,同理以“.”开头的目录是隐藏目录,隐藏文档只有经过ls命令的“-a”选项才能显示。
例如上面的.createtablespace.pl文件就是一个隐藏文件。
二 利用chown改变属主和属组
chown就是change owner的意思,主要做用就是改变文件或者目录的全部者,而全部者包含用户和用户组,其实chown就是对文件所属的用户和用户组进行的一系列设置。
chown使用的通常语法为:
[root@localhost ~]#chown [-R] 用户名称 文件或目录
[root@localhost ~]#chown [-R] 用户名称:用户组组名称 文件或目录
参数说明:
-R : 进行递归式的权限更改,也就是将目录下的全部文件、子目录都更新成为指定的用户组权限。经常用于变动某一目录的状况。
注意,在执行操做前,确保指定的用户以及用户组在系统中是存在的。
例子1:修改隐藏文件“.createtablespace.pl”的所属用户为oracle,所属的用户组为oinstall,操做以下:
[root@localhost ~]#chown oracle:oinstall .createtablespace.pl
[root@localhost ~]#ls -al  .createtablespace.pl
-rwxr-xr-x   1 oracle   oinstall      3939 Mar 20  2008 createtablespace.pl
注意,这里要确保oracle用户和oinstall组已经存在。
例子2:修改oradata目录以及目录下的全部文件的所属用户为root,用户组为dba组,
 [root@localhost ~]#chown -R root:dba oradata
drwxr-xr--   3 root dba   4096 Oct 30  2006 oradata
三 利用chmod改变访问权限
chmod用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操做符表达式的字符设定法;另外一种是包含数字的数字设定法。
1. 字符设定法
使用语法为:
chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义以下:
 who表示操做对象,能够是下面字母中的任何一个或者它们的组合。
 u 表示“用户(user)”,即文件或目录的全部者。
 g 表示“用户组(group)”,即文件或目录所属的用户组。
 o 表示“其余(others)用户”。 
 a 表示“全部(all)用户”。它是系统默认值。
 操做符号含义以下:
 “+”表示添加某个权限。
 “-”表示取消某个权限。
 “=”表示赋予给定的权限,同时取消文档之前的全部权限。
 mode表示能够执行的权限,能够是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。
 文件名能够是以空格分开的文件列表,支持通配符。
2.举例
 修改install.log文件,使其全部者具备全部权限,用户组和其它用户具备只读权限:
[root@localhost ~]# ls -al install.log
-rw------  1 root root 60151 Oct 17 16:11 install.log
[root@localhost ~]# chmod u=rwx,g+r,o+r install.log    
[root@localhost ~]# ls -al install.log             
-rwxr--r--  1 root root 60151 Oct 17 16:11 install.log
 修改/etc/fstab文件的权限,使其全部者具备读写权限,用户组和其它用户没有任何权限:
[root@localhost ~]# ll /etc/fstab          
-rwxr--r--  1 root root 1150 Oct 23 09:30 /etc/fstab
[root@localhost ~]# chmod u-x,g-r,o-r /etc/fstab      
[root@localhost ~]# ll /etc/fstab                
-rw-------  1 root root 1150 Oct 23 09:30 /etc/fstab
3.数字设定法
首先了解一下用数字表示属性的含义,0表示没有任何权限,1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。2表示有可写权限,与“w”对应,4表示有可读权限,对应与“r“。
若是想让文件的属主拥有读和写的权限,能够经过4(可读)+2(可写)=6(可读可写)的方式来实现,那么用数字6就表示拥有读写权限。
使用语法:
chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合] 文件名
下图展现了数字设定法的实现原理:编辑器

 

上图数字设定法含义剖析 从图中能够清晰的看出,“755”组合的表明含义,第一个“7”显示了文件全部者的权限,是经过4(r)+2(w)+1(x)=7(rwx)而获得的。第二个“5”显示了文件所属组的权限,是经过4(r)+0(-)+1(x)=5(rx)而获得的,同理最后一个“5”也有相似的含义。 举例: 某个文件mysqltuner.pl的默认权限为600,即“-rw-------”,表示只有此文件的全部者(User)拥有读写权限,其它用户(Others)和组(Group)没有对此文件访问的任何权限。 首先修改此文件的权限为644,即“-rw-r--r--”,表示此文件的全部者(User)拥有读写权限,而其它用户(Others)和组(Group)仅仅拥有读的权限,操做以下: [linux1@localhost ~]$ ls -al mysqltuner.pl  -rw------- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl [linux1@localhost ~]$ chmod 644  mysqltuner.pl [linux1@localhost ~]$ ls -al mysqltuner.pl      -rw-r--r-- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl 而后接着修改mysqltuner.pl文件的权限为755,即“-rwxr-xr-x”,表示此文件的全部者(User)拥有读写执行权限,而其它用户(Others)和组(Group)拥有对此文件的读和执行权限。 [linux1@localhost ~]$ chmod 755  mysqltuner.pl  [linux1@localhost ~]$ ls -al mysqltuner.pl      -rwxr-xr-x 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl

相关文章
相关标签/搜索