[命令] Linux 命令 chmod (管理权限)

内容一:普通权限的管理

1.1 普通权限的介绍

1.1.1 文件的权限

1) r 代表读权限
2) w 代表写权限,可以增加、删除、修改文件里的内容,但是不能删除文件本身,文件本身是否能删除由此文件所在的目录决定
3) x 代表执行权限

1.1.2 目录的权限

1) r 代表可以看到目录里记录的文件名列表和子目录名列表的权限 (目录不存放任何数据而只记录文件名列表和子目录名列表)
2) w 代表可以对目录里记录的文件名列表和子目录名列表进行修改的权限 (包括:在目录里创建新的文件和子目录、删除目录里已经存在的文件和子目录、将该目录里的文件和子目录进行重命名、移动改目录里的文件和子目录的位置)
3) x 代表可以进入目录的权限

(注意:对于目录而言,x 权限必须要和 r 权限配合使用,如果只有 x 权限没有 r 权限则依旧不能进入目录,如果只有 r 权限没有 x 权限则只能看到此目录以及目录里的文件和子目录但是不能进入此目录)

1.1.3 用数字代替权限的方法

1) 0 代表 —
2) 1 代表 –x
3) 2 代表 -w-
4) 3 代表 -wx
5) 4 代表 r–
6) 5 代表 r-x
7) 6 代表 rw-
8) 7 代表 rwx

1.2 管理权限案例

1.2.1 给一个文件或目录添加权限的案例
1.2.1.1 案例一
# chmod u+x test.txt

(补充:这里以给 test.txt 文件的所属主添加执行权限为例)

1.2.1.2 案例二
# chmod u+r,g+w test.txt

(补充:这里以给 test.txt 文件的所属主添加执行权限,给文件的所属组添加写权限为例)

1.2.1.3 案例三
# chmod +x test.txt

(补充:这里以给 test.txt 文件的所属主、所属组和其他用户添加执行权限为例)

1.2.1.4 案例四
# chmod a+x test.txt

(补充:这里以给 test.txt 文件的所属主、所属组和其他用户添加执行权限为例)

1.2.2 给一个文件或目录撤销权限的案例
1.2.2.1 案例一
# chmod u-x test.txt

(补充:这里以给 test.txt 文件的所属主撤销执行权限为例)

1.2.2.2 案例二
# chmod u-r,g-w test.txt

(补充:这里以给 test.txt 文件的所属主撤销执行权限,给文件的所属组撤销写权限为例)

1.2.2.3 案例三
# chmod -x test.txt

(补充:这里以给 test.txt 文件的所属主、所属组和其他用户撤销执行权限为例)

1.2.2.4 案例四
# chmod a-x test.txt

(补充:这里以给 test.txt 文件的所属主、所属组和其他用户撤销执行权限为例)

1.2.3 设定某一个文件或目录的权限的案例
1.2.3.1 案例一
# chmod u=rwx test.txt 

(补充:这里以设置 test.txt 文件的所属主拥有读、写和执行的权限为例)

1.2.3.2 案例二
# chmod u=rw- test.txt

(补充:这里以设置 test.txt 文件的所属主拥有读和写的权限,但是没有执行的权限为例)

1.2.3.3 案例三
# chmod u=--- test.txt

或者:

# chmod u= test.txt

(补充:这里以设置 test.txt 文件的所属主没有任何权限为例)

1.2.3.4 案例四
# chmod u=rw,g=, test.txt

(补充:这里以设置 test.txt 文件的所属主拥有读和写的权限,但是没有执行的权限。设置文件的所属组没有任何权限为例)

1.2.3.5 案例五
# chmod u=rw,g=---,0= test.txt

(补充:这里以设置 test.txt 文件的所属主拥有读和写的权限,但是没有执行的权限。设置文件的所属组没有任何权限。设置文件的其他用户没有任何权限为例)

1.2.3.6 案例六
# chmod 755 test.txt

(补充:这里以设置 test.txt 文件的所属主拥有读、写和执行的权限。设置文件的所属组有读和执行的权限。设置文件的其他用户有读和执行的权限为例)

内容二:特殊权限的管理

2.1 特殊权限 SUID

2.1.1 SUID 介绍

1) SUID:全名 Set UID
2) SUID 的作用:让没有此文件执行权限的用户,可以执行这个文件
3) SUID 的权限数字 4000

2.1.2 SUID 权限的添加的案例
2.1.2.1 添加 SUID 权限的案例
# chmod u+s test.txt

(补充:这里以给 test.txt 文件添加 SUID 权限为例)

或者:

# chmod a+s test.txt

(补充:这里以给 test.txt 文件添加 SUID 权限为例)

或者:

# chmod 4644 test.txt

(补充:这里以设置 test.txt 文件的所属主拥有读和写的权限。设置文件的所属组有读的权限。设置文件的其他用户有读的权限。并添加 SUID 权限为例)

2.1.2.2 显示 SUID 权限的添加情况的案例
2.1.2.2.1 显示有 SUID 权限,但是所属主没有执行权限的文件的案例
# ls -l test.txt 
-rwSr--r-- 1 root root 0 12月  8 05:27 test.txt

(补充:这里以对 test.txt 文件进行操作为例)

2.1.2.2.2 显示有 SUID 权限,并且所属主有执行权限的文件的案例
# ls -l test.txt 
-rwsr--r-- 1 root root 0 12月  8 05:27 test.txt

(补充:这里以对 test.txt 文件进行操作为例)

2.2 特殊权限 SGID

2.2.1 SGID 介绍

1) SGID:全名 Set GID
2) SGID 的作用:在此目录下创建的文件,将都和此目录的所属组一样
3) SGID 的权限数字 2000

2.2.2 SGID 权限的添加的案例
2.2.2.1 添加 SGID 权限的案例
# chmod g+s test

(补充:这里以给 test.txt 文件添加 SGID 权限为例)

或者:

# chmod a+s test

(补充:这里以给 test.txt 文件添加 SGID 权限为例)

或者:

# chmod 2644 test

(补充:这里以设置 test.txt 文件的所属主拥有读和写的权限。设置文件的所属组有读的权限。设置文件的其他用户有读的权限。并添加 SGID 权限为例)

2.2.2.2 显示 SGID 权限的添加情况的案例
2.2.2.2.1 显示有 SGID 权限,但是所属组没有执行权限的目录的案例
# ls -l test
-rw-r-Sr-- 1 root root 0 12月  8 05:27 test

(补充:这里以对 test.txt 文件进行操作为例)

2.2.2.2.2 显示有 SGID 权限,并且所属组有执行权限的目录的案例
# ls -l test
-rw-r-sr-- 1 root root 0 12月  8 05:27 test

(补充:这里以对 test.txt 文件进行操作为例)

2.3 特殊权限 SBIT

2.3.1 SBIT 介绍

1) SBIT:全名 Sticky Bit
2) SBIT 的作用:在此目录下创建的文件,只有创建此文件的用户和 root 用户可以删除
3) SBIT 的权限数字 1000

2.3.2 SBIT 权限的添加的案例
2.3.2.1 添加 SBIT 权限的案例
# chmod o+t test

(补充:这里以给 test.txt 文件添加 SBID 权限为例)

或者:

# chmod a+t test

(补充:这里以给 test.txt 文件添加 SBID 权限为例)

或者:

# chmod 1644 test

(补充:这里以设置 test.txt 文件的所属主拥有读和写的权限。设置文件的所属组有读的权限。设置文件的其他用户有读的权限。并添加 SBID 权限为例)

2.3.2.2 显示 SBIT 权限的添加情况的案例
2.3.2.2.1 显示有 SBIT 权限,但是所属主没有执行权限的目录的案例
# ls -l test
-rw-r--r-T 1 root root 0 12月  8 05:27 test

(补充:这里以对 test.txt 文件进行操作为例)

2.3.2.2.2 显示有 SBIT 权限,并且所属主有执行权限的目录的案例
# ls -l test
-rw-r--r-t 1 root root 0 12月  8 05:27 test

(补充:这里以对 test.txt 文件进行操作为例)

[命令] Linux 命令 sudo (用户提权)

内容一:sudo 简介

sudo 命令可以让非 root 用户,在不知道 root 的密码的情况之下以 root 的身份执行某一些命令
但是要实现这一目标需要提前修改 sodu 的配置文件

内容二:修改 sudo 配置文件的方法

# visudo

(注意:此方法可以在保存退出时检查 sudo 文件有没有语法错误)

或者:

# sudoedit /etc/sudoers

(注意:此方法可以在保存退出时检查 sudo 文件有没有语法错误)

或者:

# vi /etc/sudoers

(注意:此方法不能在保存退出时检查 sudo 文件有没有语法错误)

或者:

# vi /etc/sudoers

(注意:此方法不能在保存退出时检查 sudo 文件有没有语法错误)

内容三:修改 sudo 配置文件的案例

3.1 案例一:让 zhumingyu 用户可以通过 sudo 获取所有 root 权限

# vi /etc/sudoers

添加以下内容:

......
zhumingyu ALL=(ALL)   ALL  
......

(说明:在 “root ALL=(ALL)   ALL” 这一行后面仿照着加入一行就行了)

3.2 案例二:让 zhumingyu 用户可以通过 sudo 获取所有 root 权限,并且免密码

# vi /etc/sudoers

添加以下内容:

......
zhumingyu ALL=(ALL)   NOPASSWD: ALL  
......

(说明:在 “root ALL=(ALL)   ALL” 这一行后面仿照着加入一行就行了)

3.3 案例三:让 zhumingyu 用户可以通过 sudo 获取 firewalld 命令的 root 权限,并且免密码

# vi /etc/sudoers

添加以下内容:

......
zhumingyu ALL=(ALL)   NOPASSWD: firewalld
......

(说明:在 “root ALL=(ALL)   ALL” 这一行后面仿照着加入一行就行了)

3.4 案例四:让 zhumingyu 用户可以通过 sudo 获取 firewalld 和 chmod 命令的 root 权限,并且免密码

# vi /etc/sudoers

添加以下内容:

......
zhumingyu ALL=(ALL)   NOPASSWD: firewalld,chmod
......

(说明:在 “root ALL=(ALL)   ALL” 这一行后面仿照着加入一行就行了)

3.5 案例五:让 zhumingyu 用户可以通过 sudo 获取 passwd 命令的 root 权限,并且免密码,但是不能修改 root 的密码

# vi /etc/sudoers

添加以下内容:

......
zhumingyu ALL=(ALL)   NOPASSWD: !/usr/bin/passwd root
......

(说明:在 “root ALL=(ALL)   ALL” 这一行后面仿照着加入一行就行了)

3.6 案例六:让 zhumingyu 用户可以通过 sudo 获取 passwd 命令的 root 权限,并且免密码,但是不能修改以 a 开头命名用户的密码

# vi /etc/sudoers

添加以下内容:

......
zhumingyu ALL=(ALL)   NOPASSWD: !/usr/bin/passwd a.*
......

(说明:在 “root ALL=(ALL)   ALL” 这一行后面仿照着加入一行就行了)

3.7 案例七:让 zhumingyu 组里的所有用户通过 sudo 获取 passwd 命令的 root 权限,并且免密码

3.7.1 让 zhumingyu 组里的所有用户通过 sudo 获取 passwd 命令的 root 权限,并且免密码
# vi /etc/sudoers

添加以下内容:

......
%zhumingyu ALL=(ALL)    NOPASSWD: /usr/bin/passwd 
......

(补充:% 代表这是一个组而不是一个用户)

(说明:在 “%wheel    ALL=(ALL)    NOPASSWD: ALL” 这一行后面仿照着加入一行就行了)

3.7.2 将相关用户添加到 zhumingyu 组里
# usermod -a -G zhumingyu <user>