CentOS用户组和权限管理
时间:2017-08-11 20:21 来源:51cto.com 作者:IT
# 用户组和权限管理
## 概念
用户分为三类:
1、超级用户:root uid=0,简单来说uid为0的用户就是超级用户。
2、虚拟用户:存在linux中,满足文件或者程序运行的需要,而创建的。不能登录,不能使用。uid=1-499,1-999(centos7)
3、普通用户:管理员root创建的用户。uid=500+,1000+(centos7)
用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组的目的方便管理员对用户进行集中管理。用户组也分为两类:系统组和普通组。
用户和用户组的关系:
一对一:一个用户存在一个组,也可以是组中唯一成员
一对多:一个用户属于多个组,只有一个主组,其余为附加组
多对一:多个用户存在于一个组
多对多:多个用户可以存在多个组
下图中每一个方框代表一个组,每个图代表一个用户,可以方便我们理解用户和组的关系。
## 用户及用户组配置文件介绍
/etc/passwd 用户及其属性信息
我们可以使用cat命令查看配置文件,下图截取了一部分。
第一列(以冒号为分隔符):用户名
第二列:密码位
第三列:UID号 CentOS6 1-499为系统用户,预留
CentOS7 1-999为系统用户,预留
第四列:GID号 主组和辅助组
第五列:用户全名或注释
第六列:用户的家目录
第七列:用户默认的shell类型
#
/etc/group 组及其属性信息
第一列:组名称
第二列:组密码,通常不需要设定
第三列:GID CentOS6 1-499为系统组,预留
CentOS7 1-999为系统组,预留
第四列:以该组为附加组的用户列表
#
/etc/shadow 用户密码及其相关属性
第一列:用户名
第二列:密码位 $加密方式$salt$password
!!代表账户被锁定
第三列:更改密码时间(天数计算)---距离1970年1月1号时间
第四列:密码最短口令有效期
第五列:口令过期时间,更改口令往后的时间
第六列:口令到期前提前多少天提醒
第七列:口令过期后多少天账户过期
第八列:帐号的有效期
#
/etc/gshadow 组密码及其相关属性
第一列:组名
第二列:组密码
第三列:管理员列表,可以更改组密码和成员
第四列:将该组作为辅助组的成员列表
## 用户和组管理命令
###用户管理命令
useradd
-u uid 创建用户时指定uid
-g gid 指明用户所属基本组
-c 用户的注释信息
-M 不建家目录
-s 指定用户的默认shell
-e 用户过期时间
-G 为用户指明附加组,组须事先存在
案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"。
[root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c "Gentoo Distribution"
[root@centos7 ~]#cat /etc/passwd|tail -n1 #查看/etc/passwd最后一行
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
#
创建用户时默认值设定存放于/etc/default/useradd
[root@centos7 ~]#cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home #把用户的家目录建在/home中
INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用
EXPIRE= #帐号终止日期,不设置表示不启用
SHELL=/bin/bash #新用户默认所用的shell类型
SKEL=/etc/skel #配置新用户家目录的默认存放路径。当我们用useradd添加用户时,
用户家目录下的文件,都是从这里配置的目录中复制过去的。下面会详细解释一下/etc/skel
CREATE_MAIL_SPOOL=yes #创建mail文件
#
/etc/login.defs文件是用来定义创建用户时所需要的一些用户的配置信息。如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。
下面是centos7版本的/etc/login.defs文件内容
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
#MAIL_FILE .mail
# Password aging controls:
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999 #一个密码最长可以使用的天数
PASS_MIN_DAYS 0 #更换密码的最小天数
PASS_MIN_LEN 5 #密码的最小长度
PASS_WARN_AGE 7 #密码失效前提前多少天开始警告
# Min/max values for automatic uid selection in useradd
UID_MIN 1000 #最小UID为1000,也就是说添加用户时,UID从1000开始分配
UID_MAX 60000 #最大UID为60000
# System accounts
SYS_UID_MIN 201 #系统用户UID最小为201
SYS_UID_MAX 999 #系统用户UID最大为999
# Min/max values for automatic gid selection in groupadd
GID_MIN 1000 #GID的范围为1000-60000。同上面UID情况
GID_MAX 60000
# System accounts
SYS_GID_MIN 201 #系统GID的范围是201-999
SYS_GID_MAX 999
# useradd command line.
CREATE_HOME yes #是否创建家目录,默认要求创建;可用-m参数控制
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077 #默认权限
# This enables userdel to remove user groups if no members exist.
USERGROUPS_ENAB yes #删除用户同时删除用户组
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 #SHA512密码加密
#### 补充一点
/etc/skel的作用:/etc/skel目录使用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的文件都是隐藏文件;用过修改、添加、删除/etc/skel目录下的问及爱你,我们可以为新创建的用户提供统一的,标准的、初始化用户环境。
#
usermod
-u UID: 新UID
-g GID: 新主组
-G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s 新的默认SHELL
-c 新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加!
-U: unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁
案例:修改gentpp的默认shell和描述信息
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh
[root@centos7 ~]#usermod -s /bin/sh gentpp
[root@centos7 ~]#cat /etc/passwd | tail -n1
gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh
#
userdel
-r 删除用户时,连同其家目录,mail一同删除
#
getent passwd ==cat /etc/passwd #查看用户信息,后面可直接跟用户名
[root@centos7 ~]#getent passwd ma
ma:x:1000:1000:ma:/home/ma:/bin/bash
#
id
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
案例:
[root@centos7 ~]#id gentpp
uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin)
[root@centos7 ~]#id -u gentpp
1007
[root@centos7 ~]#id -g gentpp
1008
[root@centos7 ~]#id -G gentpp
1008 0 1
[root@centos7 ~]#id -nG gentpp
gentpp root bin
#
su 切换用户或以其他用户身份执行命令
1、su 非登录式切换,不会读取目标用户的部分配置文件,不改变当前工作目录
2、su - 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
3、root使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码
#
passwd 修改指定用户的密码,仅root用户权限
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
案例:修改ma的密码
[root@centos7 ~]#echo maguofu |passwd --stdin ma
Changing password for user ma.
passwd: all authentication tokens updated successfully.
注意:一次只能修改一个用户密码,不能批量修改。
#
###组帐号管理命令
#
groupadd
-g 创建指定gid的组
-r 创建系统组 CentOS 6: ID<500
CentOS 7: ID<1000
#
groupmod
-n newgrpname oldgrpname 修改组名
-g newgid groupname 修改gid
#
groupdel
groupdel 组名 删除组
#
gpasswd
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
例如: [root@centos7 ~]#gpasswd -a ma -g zhu
Adding user ma to group zhu #将用户ma添加到组zhu中
[root@centos7 ~]#gpasswd -d ma -g zhu
Removing user ma from group zhu #将用户ma从组zhu中删除
#
groupmems[options] [action]
options
-g 更改为指定组
actions
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清除所有成员
-l 显示组成员列表
案例:
[root@centos7 ~]#groupmems -g admins -a ma
[root@centos7 ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中
[root@centos7 ~]#groupmems -g admins -l #查看admins中的用户列表
ma zhu
[root@centos7 ~]#groupmems -g admins -d ma #将ma从admins中删除
[root@centos7 ~]#groupmems -g admins -l
zhu
[root@centos7 ~]#groupmems -g admins -p #清空admins中的所有组成员
[root@centos7 ~]#groupmems -g admins -l
#
groups 查看用户所属组列表
[root@centos7 ~]#groups ma
ma : ma
root@centos7 ~]#groups zhu
zhu : zhu
#
##文件权限
###文件属性
通过ls -li可查看文件的长格式信息,我们取出一个进行解释
[root@centos7 /]#ls -li
64 dr-xr-xr-x. 4 root root 4.0K Jul 14 11:33 boot
第1列:inode号
第2列:第1个字符代表文件的类型(-是普通文件,d是目录等等)
第2-10个字符代表文件权限,前三个是用户的权限、中间三个用户组的、后面其他用户的权限
第11个字符.与SELINUX相关,暂时不做描述
第3列:文件的硬连接数
第4列:文件对应的属主或者用户
第5列:文件对应的属组或者用户组
第6列:文件大小
第7列:文件最后的修改的时间
第8列:文件名
#
###修改文件属主和属组
chown 修改文件的属主(也可以改组)
用户 文件或者目录 <==仅仅授权用户
:组 文件活目录 <==仅仅授权组
用户:组 文件或目录 <==表示授权用户和组
-R 递归
--reference=源文件 目标文件
强调:
1)其中的冒号“:”可以用点好“.”代替
2)要授权的用户和组名,必须是linux系统里实际存在的
案例:
[root@centos7 app]#ll
-rw-r--r--. 1 root root 0 Jul 29 16:27 f1
-rw-r--r--. 1 root root 0 Jul 29 16:27 f2
[root@centos7 app]#chown ma:ma f1
[root@centos7 app]#chown :zhu f2
[root@centos7 app]#ll
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
-rw-r--r--. 1 root zhu 0 Jul 29 16:27 f2
[root@centos7 app]#chown --reference=/app/f1 f2 #将f1的用户和属组信息复制给f2
[root@centos7 app]#ll
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2
#
chgrp 修改文件的属组(只能改组)
----reference=源文件 目标文件
-R 递归
案例:
[root@centos7 app]#chgrp ma f1 <==将f1的属组直接修改成ma
[root@centos7 app]#ll
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1
-rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2
-rw-r--r--. 1 root root 0 Jul 29 16:37 f3
[root@centos7 app]#chgrp --reference=/app/f3 f1
[root@centos7 app]#chgrp --reference=/app/f3 f2
[root@centos7 app]#ll
-rw-r--r--. 1 ma root 0 Jul 29 16:27 f1
-rw-r--r--. 1 ma root 0 Jul 29 16:27 f2
-rw-r--r--. 1 root root 0 Jul 29 16:37 f3
#
###文件权限
普通文件
r:可以读取文件的内容
w:可以追加或者覆盖文件的内容
x:可以执行改文件,需要和r配合
目录文件
r:可以查看目录下有哪些文件,不能查看文件的详细信息
w:可以在目录中创建和删除文件,需要x配合
x:可以cd进入该目录
区别:
#
文件权限可以用八进制来表示
r:4
w:2
x:1
例如:rwx=4+2+1=7
#
修改文件权限
chmod
方法一:chmod u=rwx,g=rx,o=r /app/f1
方法二:chmod 755 /app/f1
方法三:chmod --reference=f1 f2 <==将f2的权限修改成f1一样
#
默认权限umask
真实用途,从对应的位中将umask指定权限去除
全局设置:/etc/bashrc
用户设置:~/.bashrc
新建目录权限=777-umask
新建文件权限=666-umask 看结果,有寄数,对位+1
无寄数 偶数不变,最终结果
#
目录案例:
[root@centos7 app]#umask
0022
当前umask的值为0022(第一位是特殊权限位,后续会介绍暂时不用理会)
新建目录权限=777-022=755
[root@centos7 app]#mkdir test/
[root@centos7 app]#ll
drwxr-xr-x. 2 root root 6 Jul 29 19:15 test <==创建一个目录test可以看见默认权限为755
[root@centos7 app]#su - ma <==切换到ma用户,root默认umask为022,其他用户002
Last login: Sat Jul 29 17:17:11 CST 2017 on pts/0
[ma@centos7 ~]$umask
0002
[ma@centos7 ~]$mkdir test2
[ma@centos7 ~]$ll
drwxrwxr-x. 2 ma ma 6 Jul 29 19:20 test2 <==创建的目录为775=777-002,符合上述格式
#
文件案例:这次我们把默认umask更改为0421
[root@centos7 app]#umask 0421
[root@centos7 app]#umask
0421
[root@centos7 app]#touch f1
[root@centos7 app]#ll
--w-r--rw-. 1 ma ma 0 Jul 29 19:38 f1 <==666-421=245 5为奇数+1,偶数不变。最终为246。
(责任编辑:IT)
# 用户组和权限管理 ## 概念 用户分为三类: 1、超级用户:root uid=0,简单来说uid为0的用户就是超级用户。 2、虚拟用户:存在linux中,满足文件或者程序运行的需要,而创建的。不能登录,不能使用。uid=1-499,1-999(centos7) 3、普通用户:管理员root创建的用户。uid=500+,1000+(centos7)
用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组的目的方便管理员对用户进行集中管理。用户组也分为两类:系统组和普通组。
用户和用户组的关系: 一对一:一个用户存在一个组,也可以是组中唯一成员 一对多:一个用户属于多个组,只有一个主组,其余为附加组 多对一:多个用户存在于一个组 多对多:多个用户可以存在多个组 下图中每一个方框代表一个组,每个图代表一个用户,可以方便我们理解用户和组的关系。
## 用户及用户组配置文件介绍 /etc/passwd 用户及其属性信息 我们可以使用cat命令查看配置文件,下图截取了一部分。
第一列(以冒号为分隔符):用户名 第二列:密码位 第三列:UID号 CentOS6 1-499为系统用户,预留 CentOS7 1-999为系统用户,预留 第四列:GID号 主组和辅助组 第五列:用户全名或注释 第六列:用户的家目录 第七列:用户默认的shell类型 # /etc/group 组及其属性信息
第一列:组名称 第二列:组密码,通常不需要设定 第三列:GID CentOS6 1-499为系统组,预留 CentOS7 1-999为系统组,预留 第四列:以该组为附加组的用户列表 # /etc/shadow 用户密码及其相关属性
第一列:用户名 第二列:密码位 $加密方式$salt$password !!代表账户被锁定 第三列:更改密码时间(天数计算)---距离1970年1月1号时间 第四列:密码最短口令有效期 第五列:口令过期时间,更改口令往后的时间 第六列:口令到期前提前多少天提醒 第七列:口令过期后多少天账户过期 第八列:帐号的有效期 # /etc/gshadow 组密码及其相关属性
第一列:组名 第二列:组密码 第三列:管理员列表,可以更改组密码和成员 第四列:将该组作为辅助组的成员列表 ## 用户和组管理命令 ###用户管理命令 useradd -u uid 创建用户时指定uid -g gid 指明用户所属基本组 -c 用户的注释信息 -M 不建家目录 -s 指定用户的默认shell -e 用户过期时间 -G 为用户指明附加组,组须事先存在 案例1:创建用户gentpp,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"。 [root@centos7 ~]#useradd gentpp -G bin,root -s /bin/csh -c "Gentoo Distribution" [root@centos7 ~]#cat /etc/passwd|tail -n1 #查看/etc/passwd最后一行 [root@centos7 ~]#id gentpp uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin) # 创建用户时默认值设定存放于/etc/default/useradd [root@centos7 ~]#cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home #把用户的家目录建在/home中 INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用 EXPIRE= #帐号终止日期,不设置表示不启用 SHELL=/bin/bash #新用户默认所用的shell类型 SKEL=/etc/skel #配置新用户家目录的默认存放路径。当我们用useradd添加用户时, 用户家目录下的文件,都是从这里配置的目录中复制过去的。下面会详细解释一下/etc/skel CREATE_MAIL_SPOOL=yes #创建mail文件 # /etc/login.defs文件是用来定义创建用户时所需要的一些用户的配置信息。如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。
下面是centos7版本的/etc/login.defs文件内容
#QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件 #MAIL_FILE .mail # Password aging controls: # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. PASS_MAX_DAYS 99999 #一个密码最长可以使用的天数 PASS_MIN_DAYS 0 #更换密码的最小天数 PASS_MIN_LEN 5 #密码的最小长度 PASS_WARN_AGE 7 #密码失效前提前多少天开始警告 # Min/max values for automatic uid selection in useradd UID_MIN 1000 #最小UID为1000,也就是说添加用户时,UID从1000开始分配 UID_MAX 60000 #最大UID为60000 # System accounts SYS_UID_MIN 201 #系统用户UID最小为201 SYS_UID_MAX 999 #系统用户UID最大为999 # Min/max values for automatic gid selection in groupadd GID_MIN 1000 #GID的范围为1000-60000。同上面UID情况 GID_MAX 60000 # System accounts SYS_GID_MIN 201 #系统GID的范围是201-999 SYS_GID_MAX 999 # useradd command line. CREATE_HOME yes #是否创建家目录,默认要求创建;可用-m参数控制 # The permission mask is initialized to this value. If not specified, # the permission mask will be initialized to 022. UMASK 077 #默认权限 # This enables userdel to remove user groups if no members exist. USERGROUPS_ENAB yes #删除用户同时删除用户组 # Use SHA512 to encrypt password. ENCRYPT_METHOD SHA512 #SHA512密码加密 #### 补充一点 /etc/skel的作用:/etc/skel目录使用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下;默认情况下,/etc/skel目录下的文件都是隐藏文件;用过修改、添加、删除/etc/skel目录下的问及爱你,我们可以为新创建的用户提供统一的,标准的、初始化用户环境。 # usermod -u UID: 新UID -g GID: 新主组 -G 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项 -s 新的默认SHELL -c 新的注释信息 -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项 -l login_name: 新的名字 -L: lock指定用户,在/etc/shadow 密码栏的增加! -U: unlock指定用户,将/etc/shadow 密码栏取消!centos7不可以解锁 案例:修改gentpp的默认shell和描述信息 [root@centos7 ~]#cat /etc/passwd | tail -n1 gentpp:x:1007:1008:Gentoo Distribution:/home/gentpp:/bin/csh [root@centos7 ~]#usermod -s /bin/sh gentpp [root@centos7 ~]#cat /etc/passwd | tail -n1 gentpp:x:1007:1008:new world:/home/gentpp:/bin/sh
# userdel -r 删除用户时,连同其家目录,mail一同删除 # getent passwd ==cat /etc/passwd #查看用户信息,后面可直接跟用户名 [root@centos7 ~]#getent passwd ma ma:x:1000:1000:ma:/home/ma:/bin/bash # id -u: 显示UID -g: 显示GID -G: 显示用户所属的组的ID -n: 显示名称,需配合ugG使用 案例: [root@centos7 ~]#id gentpp uid=1007(gentpp) gid=1008(gentpp) groups=1008(gentpp),0(root),1(bin) [root@centos7 ~]#id -u gentpp 1007 [root@centos7 ~]#id -g gentpp 1008 [root@centos7 ~]#id -G gentpp 1008 0 1 [root@centos7 ~]#id -nG gentpp gentpp root bin
# su 切换用户或以其他用户身份执行命令 1、su 非登录式切换,不会读取目标用户的部分配置文件,不改变当前工作目录 2、su - 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换 3、root使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码 # passwd 修改指定用户的密码,仅root用户权限 -l:锁定指定用户 -u:解锁指定用户 -e:强制用户下次登录修改密码 -n mindays: 指定最短使用期限 -x maxdays:最大使用期限 -w warndays:提前多少天开始警告 -i inactivedays:非活动期限 --stdin:从标准输入接收用户密码 案例:修改ma的密码 [root@centos7 ~]#echo maguofu |passwd --stdin ma Changing password for user ma. passwd: all authentication tokens updated successfully. 注意:一次只能修改一个用户密码,不能批量修改。 # ###组帐号管理命令 # groupadd -g 创建指定gid的组 -r 创建系统组 CentOS 6: ID<500 CentOS 7: ID<1000 # groupmod -n newgrpname oldgrpname 修改组名 -g newgid groupname 修改gid # groupdel groupdel 组名 删除组 # gpasswd -a user 将user添加至指定组中 -d user 从指定组中移除用户user 例如: [root@centos7 ~]#gpasswd -a ma -g zhu Adding user ma to group zhu #将用户ma添加到组zhu中 [root@centos7 ~]#gpasswd -d ma -g zhu Removing user ma from group zhu #将用户ma从组zhu中删除 # groupmems[options] [action] options -g 更改为指定组 actions -a 指定用户加入组 -d 从组中删除用户 -p 从组中清除所有成员 -l 显示组成员列表 案例: [root@centos7 ~]#groupmems -g admins -a ma [root@centos7 ~]#groupmems -g admins -a zhu #将ma和zhu用户添加到admins中 [root@centos7 ~]#groupmems -g admins -l #查看admins中的用户列表 ma zhu [root@centos7 ~]#groupmems -g admins -d ma #将ma从admins中删除 [root@centos7 ~]#groupmems -g admins -l zhu [root@centos7 ~]#groupmems -g admins -p #清空admins中的所有组成员 [root@centos7 ~]#groupmems -g admins -l # groups 查看用户所属组列表 [root@centos7 ~]#groups ma ma : ma root@centos7 ~]#groups zhu zhu : zhu # ##文件权限 ###文件属性 通过ls -li可查看文件的长格式信息,我们取出一个进行解释 [root@centos7 /]#ls -li 64 dr-xr-xr-x. 4 root root 4.0K Jul 14 11:33 boot 第1列:inode号 第2列:第1个字符代表文件的类型(-是普通文件,d是目录等等) 第2-10个字符代表文件权限,前三个是用户的权限、中间三个用户组的、后面其他用户的权限 第11个字符.与SELINUX相关,暂时不做描述 第3列:文件的硬连接数 第4列:文件对应的属主或者用户 第5列:文件对应的属组或者用户组 第6列:文件大小 第7列:文件最后的修改的时间 第8列:文件名 # ###修改文件属主和属组 chown 修改文件的属主(也可以改组) 用户 文件或者目录 <==仅仅授权用户 :组 文件活目录 <==仅仅授权组 用户:组 文件或目录 <==表示授权用户和组 -R 递归 --reference=源文件 目标文件 强调: 1)其中的冒号“:”可以用点好“.”代替 2)要授权的用户和组名,必须是linux系统里实际存在的 案例: [root@centos7 app]#ll -rw-r--r--. 1 root root 0 Jul 29 16:27 f1 -rw-r--r--. 1 root root 0 Jul 29 16:27 f2 [root@centos7 app]#chown ma:ma f1 [root@centos7 app]#chown :zhu f2 [root@centos7 app]#ll -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1 -rw-r--r--. 1 root zhu 0 Jul 29 16:27 f2 [root@centos7 app]#chown --reference=/app/f1 f2 #将f1的用户和属组信息复制给f2 [root@centos7 app]#ll -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1 -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2 # chgrp 修改文件的属组(只能改组) ----reference=源文件 目标文件 -R 递归 案例: [root@centos7 app]#chgrp ma f1 <==将f1的属组直接修改成ma [root@centos7 app]#ll -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f1 -rw-r--r--. 1 ma ma 0 Jul 29 16:27 f2 -rw-r--r--. 1 root root 0 Jul 29 16:37 f3 [root@centos7 app]#chgrp --reference=/app/f3 f1 [root@centos7 app]#chgrp --reference=/app/f3 f2 [root@centos7 app]#ll -rw-r--r--. 1 ma root 0 Jul 29 16:27 f1 -rw-r--r--. 1 ma root 0 Jul 29 16:27 f2 -rw-r--r--. 1 root root 0 Jul 29 16:37 f3 # ###文件权限 普通文件 r:可以读取文件的内容 w:可以追加或者覆盖文件的内容 x:可以执行改文件,需要和r配合 目录文件 r:可以查看目录下有哪些文件,不能查看文件的详细信息 w:可以在目录中创建和删除文件,需要x配合 x:可以cd进入该目录
区别:
# 文件权限可以用八进制来表示 r:4 w:2 x:1 例如:rwx=4+2+1=7 # 修改文件权限 chmod 方法一:chmod u=rwx,g=rx,o=r /app/f1 方法二:chmod 755 /app/f1 方法三:chmod --reference=f1 f2 <==将f2的权限修改成f1一样 # 默认权限umask 真实用途,从对应的位中将umask指定权限去除 全局设置:/etc/bashrc 用户设置:~/.bashrc 新建目录权限=777-umask 新建文件权限=666-umask 看结果,有寄数,对位+1 无寄数 偶数不变,最终结果 # 目录案例: [root@centos7 app]#umask 0022 当前umask的值为0022(第一位是特殊权限位,后续会介绍暂时不用理会) 新建目录权限=777-022=755 [root@centos7 app]#mkdir test/ [root@centos7 app]#ll drwxr-xr-x. 2 root root 6 Jul 29 19:15 test <==创建一个目录test可以看见默认权限为755 [root@centos7 app]#su - ma <==切换到ma用户,root默认umask为022,其他用户002 Last login: Sat Jul 29 17:17:11 CST 2017 on pts/0 [ma@centos7 ~]$umask 0002 [ma@centos7 ~]$mkdir test2 [ma@centos7 ~]$ll drwxrwxr-x. 2 ma ma 6 Jul 29 19:20 test2 <==创建的目录为775=777-002,符合上述格式
# 文件案例:这次我们把默认umask更改为0421 [root@centos7 app]#umask 0421 [root@centos7 app]#umask 0421 [root@centos7 app]#touch f1 [root@centos7 app]#ll --w-r--rw-. 1 ma ma 0 Jul 29 19:38 f1 <==666-421=245 5为奇数+1,偶数不变。最终为246。 (责任编辑:IT) |