提示:以下是本篇文章正文内容,下面案例可供参考

一、权限管理

1. 普通权限

read读 ,write写 ,execute执行
在这里插入图片描述

2.查看文件权限属性

[root@server ~]# su - bash 
[bash@server ~]$ touch file.txt
[bash@server ~]$ ls -l file.txt 
-rw-rw-r--. 1 bash bash 0 Dec 23 15:39 file.txt
或简写
[bash@server ~]$ ll file.txt 
-rw-rw-r--. 1 bash bash 0 Dec 23 15:39 file.txt

3.查看目录的权限属性

[bash@server ~]$ mkdir dir
[bash@server ~]$ ll -d dir/
drwxrwxr-x. 2 bash bash 6 Dec 23 15:40 dir/

4. 文件权限应用

[root@server tmp]# cd
[root@server ~]# cd /tmp/
[root@server tmp]# su bash
[bash@server tmp]$ touch file.txt
[bash@server tmp]$ su rhel
Password: 
[rhel@server tmp]$ ll file.txt 
-rw-rw-r--. 1 bash bash 0 Dec 24 10:04 file.txt
[rhel@server tmp]$ cat file.txt 
[rhel@server tmp]$ echo 123 > file.txt 
bash: file.txt: Permission denied
翻译:bash:文件。txt:拒绝访问

file.txt该文件的属主和属组都是bash,因此rhel这个用户对该文件的身份就属于others,只有读(r)的权限,因此不能写入数据。

5.目录权限应用

[bash@server home]$ ll
total 4
drwx------.  3    1002    1002   78 Dec 22 16:50 ansible
drwx------.  5 bash    bash     140 Dec 23 17:32 bash
drwx------. 16 rhel    share   4096 Dec 24 10:06 rhel
drwx------.  3 student student   78 Dec 23 10:22 student
drwx------.  3    1500 share     78 Dec 22 16:55 test
[bash@server home]$ cd rhel/
-bash: cd: rhel/: Permission denied
[bash@server home]$ cd bash/
[bash@server ~]$ pwd
/home/bash

6.权限修改

  1. chown 修改文件或目录属主/属组
    chown username filename ­­修改属主
[root@server tmp]# ll file.txt 
-rw-rw-r--. 1 bash bash 0 Dec 24 10:04 file.txt
[root@server tmp]# chown rhel file.txt 
[root@server tmp]# ll file.txt 
-rw-rw-r--. 1 rhel bash 0 Dec 24 10:04 file.txt
[root@server tmp]# su rhel
[rhel@server tmp]$ echo 123 > file.txt 
[rhel@server tmp]$ cat file.txt 
123
[rhel@server tmp]$ su bash
Password: 
[bash@server tmp]$ ll file.txt 
-rw-rw-r--. 1 rhel bash 8 Dec 24 10:56 file.txt
[bash@server tmp]$ echo 456 >> file.txt 
[bash@server tmp]$ cat file.txt 
123
456
  1. chown :grpname filename ­­修改属组
[bash@server tmp]$
[root@server tmp]# chown :rhel file.txt 
[root@server tmp]# ll file.txt 
-rw-rw-r--. 1 rhel rhel 8 Dec 24 10:56 file.txt
  1. chown username:grpname filename ­­修改属主和属组
[root@server tmp]# chown bash:bash file.txt 
[root@server tmp]# ll file.txt 
-rw-rw-r--. 1 bash bash 8 Dec 24 10:56 file.txt

­-R 递归修改

[root@server ~]# su - bash
[bash@server ~]$ cd /tmp/
[bash@server tmp]$ mkdir -p folder/{folder01,folder02,folder03}
[bash@server tmp]$ su root
Password: 
[root@server tmp]# ll folder/
total 0
drwxrwxr-x. 2 bash bash 6 Dec 28 15:08 folder01
drwxrwxr-x. 2 bash bash 6 Dec 28 15:08 folder02
drwxrwxr-x. 2 bash bash 6 Dec 28 15:08 folder03
[root@server tmp]# chown -R web:web folder/
[root@server tmp]# ll folder/
total 0
drwxrwxr-x. 2 web web 6 Dec 28 15:08 folder01
drwxrwxr-x. 2 web web 6 Dec 28 15:08 folder02
drwxrwxr-x. 2 web web 6 Dec 28 15:08 folder03
  1. chgrp 修改文件或目录属组
    chgrp grpname filename
    -­R 递归修改
[root@server tmp]# ll folder/
total 0
drwxrwxr-x. 2 web web 6 Dec 28 15:08 folder01
drwxrwxr-x. 2 web web 6 Dec 28 15:08 folder02
drwxrwxr-x. 2 web web 6 Dec 28 15:08 folder03
[root@server tmp]# chgrp bash /tmp/folder/folder01
[root@server tmp]# ll folder/
total 0
drwxrwxr-x. 2 web bash 6 Dec 28 15:08 folder01
drwxrwxr-x. 2 web web  6 Dec 28 15:08 folder02
drwxrwxr-x. 2 web web  6 Dec 28 15:08 folder03
  1. chmod 修改文件/目录权限
    -­R 递归修改

在这里插入图片描述
chmod u+r 文件 为属主增加读的权限
chmod o=rx 文件 将其他人的权限设置为读和执行
chmod a=r 文件 将属主的权限设置为只读
chmod g­x 文件 减去属组执行的权限
权限位是由rwx组成,没有权限可以不写或用“­”填充

  1. chmod u
[root@server tmp]# ll file.txt 
-rw-rw-r--. 1 bash bash 8 Dec 24 10:56 file.txt
[root@server tmp]# chmod u+x file.txt 
[root@server tmp]# ll file.txt 
-rwxrw-r--. 1 bash bash 8 Dec 24 10:56 file.txt
[root@server tmp]# chmod u-w file.txt 
[root@server tmp]# ll file.txt 
-r-xrw-r--. 1 bash bash 8 Dec 24 10:56 file.txt
  1. chmod o
[root@server tmp]# chmod o=rwx file.txt 
[root@server tmp]# ll file.txt 
-r-xrw-rwx. 1 bash bash 8 Dec 24 10:56 file.txt
  1. chmod g
[root@server tmp]# ll folder/
total 0
drwxrwxr-x. 2 web bash 6 Dec 28 15:08 folder01
drwxrwxr-x. 2 web web  6 Dec 28 15:08 folder02
drwxrwxr-x. 2 web web  6 Dec 28 15:08 folder03
[root@server tmp]# chmod -R g=--- folder/
[root@server tmp]# ll folder/
total 0
drwx---r-x. 2 web bash 6 Dec 28 15:08 folder01
drwx---r-x. 2 web web  6 Dec 28 15:08 folder02
drwx---r-x. 2 web web  6 Dec 28 15:08 folder03
[root@server tmp]# ll -d folder/
drwx---r-x. 5 web bash 54 Dec 28 15:08 folder/

7. MODE:八进制权限模型

---­ --- ---­­ ­­­ ­­­
rwx r­-x r-­x
111 101 101 = 755
­­­--- 0
­­--x 1
­-w­- 2
-­wx 3
r--­­ 4
r-­x 5
rw­- 6
rwx 7

分别修改三类用户的权限
三类用户:
u:属主
g:属组
o:其它用户
a:所有用户
使用+ - = 设置各类用户的权限
chmod u+x filename
chmod o­-w filename
chmod a+x filename
chmod o=r­-x filename 没有权限直接接补为­
文件访问控制列表
setfacl : 文件系统访问控制列表,针对具体用户设定权限,而非u,g,o三类用户
-­m 设定权限
-­x 取消权限

8.setfacl

  1. setfacl ­m u:username:rw­ filename ­­设定用户acl

[root@server ~]# cd /home/
[root@server home]# ls
ansible  bash  rhel  student  test
[root@server home]# touch file01.txt
[root@server home]# ll file01.txt 
-rw-r--r--. 1 root root 0 Dec 28 17:11 file01.txt
[root@server home]# setfacl -m u:bash:rw file01.txt 
[root@server home]# ll file01.txt 
-rw-rw-r--+ 1 root root 0 Dec 28 17:11 file01.txt
[root@server home]# getfacl file01.txt 
# file: file01.txt
# owner: root
# group: root
user::rw-
user:bash:rw-
group::r--
mask::rw-
other::r--
[root@server home]# su bash
[bash@server home]$ echo 123 >> file01.txt 
[bash@server home]$ cat file01.txt 
123
  1. setfacl -m g:grpname:rx filename --设定组acl
[root@server home]# touch file02.txt 
[root@server home]# setfacl -m g:bash:rw file02.txt 
[root@server home]# getfacl file02.txt 
# file: file02.txt
# owner: root
# group: root
user::rw-
group::r--
group:bash:rw-
mask::rw-
other::r--
  1. setfacl ­x username filename 取消用户acl
[root@server home]# setfacl -x bash file01.txt 
[root@server home]# getfacl file01.txt 
# file: file01.txt
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

getfacl filename ­­获取文件的acl

9.特殊权限

  1. SUID权限:
    在user位设置,以文件的属主身份而非当前操作者的身份操作文件。
    对目录无影响。
    数值表示为4
    表现为s或S,s表示含有x权限,S则表示没有x权限。
    如passwd 命令就含有s权限,当普通用户执行passwd修改密码时会获得root权限,以root身份将密码写入shadow文件中。

  2. SGID权限:
    在group位设置,以文件属组的身份操作文件。对于目录,用户在该目录下创建文件的属组将自动和目录属组一致。
    数值表示为2

  3. Sticky权限:在others设置,在公共目录(用户都具有写权限的目录)中,用户只能删除自己拥有的文件。
    数值表示为1
    chmod u+s filename
    chmod g+s filename
    chmod o+t filename

  4. 默认权限umask。
    文件默认权限=666­umask。
    文件默认没有执行权限,若通过掩码计算的默认权限中有执行权限,默认权限将自动加1。

目录默认权限=777­umask

root用户默认umask值位0022
普通用户默认umask值位0002

  1. umask 设定。
    在bash全局配置文件/etc/profile设定 ,对所有用户生效。

在~/.bash_profile 中设定,对当前用户生效。


END

Logo

更多推荐