Linux06-文件权限

一 文件权限管理之基本权限

1.1 基本权限介绍

  • 基本权限类型

    r:可读=》4

    w:可写=》2

    x:可执行=》1

  • 权限的归属

    属主:u

    属组:g

    其他人:o

例如:

[root@aliyun ~]# ls -l a.txt

-rw-r--r-- 1 root root 1146 Jul 16 18:42 a.txt
文件类型: 
-:文本文档
d:目录 
b:设备block 
c:字符设备 
s:套接字文件 
l:软链接
权限
硬链接个数
属主
属组 
文件所占用的空间(以字节为单位) 
文件(目录)最近访问(修改)时间
文件名

1.2 设置权限

修改属主、属组

[root@aliyun ~]# chown cm.hr file1 # 改属主、属组
[root@aliyun ~]# chown cm file1 # 只改属主
[root@aliyun ~]# chown .hr   file1 # 只改属组

[root@aliyun ~]# chown -R /test # 递归修改

修改u、g、o对应的权限

# 加减法
chmod u+x,g-w,o+r a.txt # 赋值
chmod a=rwx a.txt chmod a=- a.txt
chmod ug=rw,o=r file1
# 数字
chmod 644 file1
chmod -R 777 xxx/

注意:把某一个非属主用户添加到文件的属组里,他就拥有了该组的权限,而不再是其他人

1.3 权限对文件or目录的意义

文件:ls -l 文件名

  • r:可以cat读取文件内容

  • w:可以修改文件

  • x:可以执行文件代码,如果该文件的代码是编译好的结果,那么只有x权限即可执行,但如果该 文件的代码是一个解释型的脚本程序,则需要配合r权限才可执行

目录:ls -dl 文件名

  • r: 可以ls浏览文件下的内容

  • w:可以在目录下创建新文件or目录

  • x:

    • 可以执行目录下的程序,除了对目录有执行权限外,还要对程序文件有执行权限才行。
    • 可以正常切换到目录下
    • 涉及到多层目录如/a/b/c,需要对每一级都有x权限才可以正常走到下一级
一:对文件夹的操作(不操作文件内容),需要当前用户具备的权限 
	1、对沿途所有文件夹有rx权限 
	2、对目标文件夹有r或w权限
		r-》可以浏览 
		w-》可以创建、删除、移动子文件和子目录
实验:复制当前终端,登录普通用户,root用户修改权限后查看普通用户的权限变化。
二:对文件的操作(操作文件内容),需要当前用户具备的权限 
	1、对沿途所有文件夹有x权限 
	2、对目标文件有r或w权限
		r-》可以读取文件内容 
		w-》可以修改文件内容
!!!注意!!! 储备知识:vim修改的原理是将源文件删掉,然后再将内容的内容覆盖写入了新文件,新文件名重命名为原文件名
例子:
1、当前用户对沿途所有文件夹都有x权限
2、并且当前用户对目标文件夹有w权限
3、但是当前用户对目标文件没有w权限 

此时当前用可以vim编辑文件内容,并且可以wq!强制保存退出完成文件修改,其实是将源文件删掉了,可以 通过查看前后操作的文件inode号来确定

stat 文件名可以查看文件iNode信息 
实验:root用户创建相应目录和文件,并修改权限信息,普通用户强制修改文件内容,查看iNode变化。

例1:要想在目录下创建\删除内容:对目录的x权限+对目录的w权限

# 1、设置权限
[root@aliyun ~]# mkdir -p a/b/c
[root@aliyun ~]# chmod -R o=x a # 其他人o对当前目录及其子目录都有x权限 
[root@aliyun ~]# chmod o+w a/b/c # 其他人o对/a/b/c目录有w权限

# 2、查看权限
[root@aliyun ~]# ls -dl a
drwxr-x--x 3 root root 4096 Aug 11 16:24 a 
[root@aliyun ~]# ls -dl a/b
drwxr-x--x 3 root root 4096 Aug 11 16:24 a/b
[root@aliyun ~]# ls -dl a/b/c
drwxr-x-wx 2 root root 4096 Aug 11 16:25 a/b/c
# 3、验证
[root@aliyun ~]#
[root@aliyun ~]# su - cm
Last login: Tue Aug 11 16:17:28 CST 2020 on pts/2 
[gg@aliyun ~]$ touch a/b/c/1.txt
[gg@aliyun ~]$ exit
logout
[root@aliyun ~]# ls a/b/c/
1.txt

例2:要浏览目录下内容:对目录的x权限+对目录的r权限

[root@aliyun ~]# mkdir -p a/b/c
[root@aliyun ~]# chmod -R o=x a
[root@aliyun ~]# chmod o+r a/b/c
[root@aliyun ~]#
[root@aliyun ~]# touch a/b/c/{1..3}.txt
[root@aliyun ~]#
[root@aliyun ~]# su - cm
Last login: Tue Aug 11 16:27:33 CST 2020 on pts/2
[cm@aliyun ~]$ ls a/b/c
1.txt  2.txt  3.txt

例3:要执行目录下程序:对目录的x权限+对文件的x权限,如果文件是解释型语言的脚本程序,还需要 对文件有r权限

[root@aliyun ~]# mkdir -p a/b/c
[root@aliyun ~]# chmod -R o=x a/b/c
[root@aliyun ~]# cp /bin/echo a/b/c
[root@aliyun ~]# chmod o=x a/b/c/echo
[root@aliyun ~]#
[root@aliyun ~]# su - cm
Last login: Tue Aug 11 16:30:17 CST 2020 on pts/2
[cm@aliyun ~]$ ./a/b/c/echo "hello cm"
hello cm

二 文件权限管理之特殊权限

详解:https://www.cnblogs.com/linhaifeng/articles/13357542.html

suid 4

sgid 2

sticky 1

2.1 SUID

普通用户不是root也不属于root组,于是它对/etc/shadow文件没有任何权限

[root@aliyun ~]# ll /etc/shadow
---------- 1 root root 1109 Aug 11 16:11 /etc/shadow

但是普通用户却可以用passwd命令修改密码,而修改密码都是在修改/etc/shadow文件,如何实现 的???

[root@aliyun ~]# ll `which passwd`
-rwsr-xr-x 1 root root 27856 Aug  9  2019 /bin/passwd

可以看到一个s权限,s权限的特殊之处

  • SUID 权限仅对二进制可执行文件有效
  • 如果执行者对于该二进制可执行文件具有 x 的权限,执行者将具有该文件的所有者的权限
  • 本权限仅在执行该二进制可执行文件的过程中有效

权限设定方法:

​ 字母表示法:

​ chmod u+s FILE…

​ chmod u-s FILE…

​ 数字表示法:
​ chmod 4755 FILE 添加SUID权限到二进制程序文件(添加到DIR无意义) 在普通三位数字权限位之前,用4代表添加的SUID位
chmod 0xxx … 可以删除文件的SUID(无法删除目录的SUID)

示例

[root@localhost ~]# ll `which cat`
-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[root@localhost ~]# chmod 4755 `which cat` # 或者 chmod u+s `which cat` 
[root@localhost ~]# ll `which cat`
-rwsr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat
[root@localhost ~]# su - cm
[cm@localhost ~]$ cat /etc/shadow # 可以看到内容

工作原理:

环境前提: linux中有一个二进制程序cat,属主属组均为root 
linux中有一个系统文件/etc/shadow,属主属组均为root 
我们创建一个普通用户叫user1 
user1具有对cat的执行权限
user1 不具有对/etc/shadow的任何权限

默认情况下
user1执行cat,系统创建一个cat进程,进程的属主属组取程序发起者,也就是user1:user1 cat进程访问/etc/shadow,由于进程属主属组是user1:user1,与/etc/shadow的属组属主都不匹配,所 以被拒绝访问.

给cat设置SUID之后
user1执行cat.系统创建一个cat进程,进程的属主取cat的属主,属组取程序发起者,就是root:user1 cat进程访问/etc/shadow,由于进程属主是root,与/etc/shadow的属主匹配,所以被允许

# 准备
mkdir /test
chmod 777 /test/
echo 1111 > /test/a.txt
chmod 000 /test/a.txt
chown user1.group1 /test/a.txt chown cm.devops /usr/bin/cat chmod u+s /usr/bin/cat
# 实验
[root@cm ~]# ll /test/a.txt
----------. 1 user1 group1 4
[root@cm ~]#
[root@cm ~]#
[root@cm ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 cm devops 54160 10月 31 2018 /usr/bin/cat
[root@cm ~]#
[root@cm ~]#
[root@cm ~]# su - lili -c "cat /test/a.txt" # lili切换为cm用户执行,cm用户没有对上 a.txt的属主,所以直接被当成其他人,没有任何权限
cat: /test/a.txt: 权限不够
[root@cm ~]# chmod o+r /test/a.txt
[root@cm ~]# su - lili -c "cat /test/a.txt"
111
[root@cm ~]#
[root@cm ~]#
[root@cm ~]# chmod o-r,g+r /test/a.txt
[root@cm ~]# ll /test/a.txt
----r-----. 1 user1 group1 4 10月 29 18:31 /test/a.txt
[root@cm ~]# usermod -a -G group1 cm
[root@cm ~]# ll /usr/bin/cat # 确保suid还在
-rwsr-xr-x. 1 egon devops 54160 10月 31 2018 /usr/bin/cat
[root@cm ~]# id cm
uid=1005(cm) gid=1005(cm)=1005(cm),1003(group1)
[root@cm ~]#
[root@cm ~]# su - lili -c "cat /test/a.txt" # lili--->cm,cm用户没有对上a.txt的属 主,所以直接被当成其他人,虽然此时cm属于文件a.txt的属组group1的成员,但是对suid来说那没用 cat: /test/a.txt: 权限不够
[root@cm ~]#
[root@cm ~]# su - cm -c "cat /test/a.txt" # 如果当前用户与suid的用户重叠,那么就无所 谓用户转换,同样会按照:属主、属组、其他人的次序依次对照
1111
# 注意:
sgid规则同suid 同时设置suid与sgid的情况下,suid优先级高于sguid

2.2 SGID

1.权限设定方法
字母表示法:
chmod g+s DIR/FILE
chmod g-s DIR/FILE

数字表示法:
chmod 2755 DIR/FILE 添加SGID到目录或文件

在普通数字权限位前,用2代表添加SGID位
chmod 0755 DIR/FILE 删除文件的SGID,(目录不受影响)

chmod 755 DIR/FILE 同上

2.文件权限位表示:

[root@localhost learn]# ll file1.txt
-rwxr-sr-x. 1 cm hr 0 Nov 24 08:22 file1.txt

3.SGID相关说明:

1.作用在二进制程序上时:

执行SGID权限的程序时,此用户将继承此程序的所属组权限

2.作用于目录上时:

此文件夹下所有用户新建文件都自动继承此目录的用户组。

  • 当SGID 作用于普通文件时,和 SUID 类似,在执行该文件时,用户将获得该文件所属组的权限。
  • 当 SGID 作用于目录时,意义就非常重大了:

当一个用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件
如果该目录同时用
SGID 修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。

[root@localhost ~]# mkdir /test
[root@localhost ~]# chmod g+s /test/ # 等同于chmod 2755 /test/ [root@localhost ~]# ll -dl /test/
drwxr-sr-x 2 root root 6 8月 11 17:06 /test/
[root@localhost ~]#
[root@localhost ~]# chown .cm /test/ # 后期任何人在该目录下创建的文件or目录的属组 都是cm

2.3 SBIT

其实 SBIT 与 SUID 和 SGID 的关系并不大。
SBIT是 the restricted deletion flag or sticky bit的简称,有时也称为Sticky,粘滞位

权限设定方法: 
1.字母表示法: 
chmod o+t DIR... 
chmod o-t DIR...
chmod +t DIR...
2.数字表示法:
chmod 1755 DIR 在普通数字权限位前,用1代表添加Sticky位
文件权限表示:
# ll -d tmp
drwxrwxrwt. 2 root root 19 Nov 17 20:02 tmp 
文件other位的x权限,用t代替.表示被设置了Sticky 
如果other位没有x权限,会显示为大写T,表示有故障(权限无效)
相关说明:
对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除和改名自己的文件或目录; 
只能作用在目录上.普通文件设置无意义,且会被linux内核忽略 
用户在设置Sticky权限的目录下新建的目录不会自动继承Sticky权限。

实验:

[root@localhost learn] mkdir -p dir1/test{1..4}
[root@localhost learn]# useradd user01
[root@localhost learn]# useradd user02
[root@localhost learn]# chown -R user01:user01 dir1/test1
[root@localhost learn]# chown -R user01:user01 dir1/test2
[root@localhost learn]# chown -R user02:user02 dir1/test3
[root@localhost learn]# chown -R user02:user02 dir1/test4
[root@localhost learn]# ll dir1/
total 0
drwxr-xr-x. 2 user01 user01 6 Nov 24 11:13 test1
drwxr-xr-x. 2 user01 user01 6 Nov 24 11:13 test2
drwxr-xr-x. 2 user02 user02 6 Nov 24 11:13 test3
drwxr-xr-x. 2 user02 user02 6 Nov 24 11:13 test4
[root@localhost learn]# chmod 1777 dir1/
[root@localhost learn]# ll -d dir1
drwxrwxrwt. 6 root root 58 Nov 24 11:13 dir1
测试:
[root@localhost learn]# su - user01
[user01@localhost ~]$ cd /usr/local/learn/
[user01@localhost dir1]$ ll
total 0
drwxr-xr-x. 2 user01 user01 6 Nov 24 11:13 test1
drwxr-xr-x. 2 user01 user01 6 Nov 24 11:13 test2
drwxr-xr-x. 2 user02 user02 6 Nov 24 11:13 test3
drwxr-xr-x. 2 user02 user02 6 Nov 24 11:13 test4
[user01@localhost dir1]$ mv test3 user01
mv: cannot move ‘test3’ to ‘user01’: Operation not permitted
[user01@localhost dir1]$ touch test3/1.txt
touch: cannot touch ‘test3/1.txt’: Permission denied

SBIT 目前只对目录有效,用来阻止非文件的所有者删除文件。比较常见的例子就是 /tmp 目录: 权限信息中最后一位 t 表明该目录被设置了 SBIT 权限。SBIT 对目录的作用是:当用户在该目录下创建

新文件或目录时,仅有自己和 root 才有权力删除,主要作用于一个共享的文件夹。

三 文件权限管理之chattr

你是否遇到过文件或目录具有可读写权限,但是使用root用户删除、修改时提示"Operation not permitted"的情况。可能是由于chattr设置了文件的隐藏保护权限导致。通过chattr命令修改文件或目 录属性能够提高系统的安全性。与chmod命令相比,chmod只是改变文件的读写、执行权限,更底层 的属性控制是由chattr命令改变的。本文主要介绍chattr和lsatt命令的语法和基本介绍。

说明:这两个命令在工作中用的比较少,经常用到的场景就是解决"Operation not permitted"问题。 至于它们语法,掌握最基本的就可以了。就是会查属性、会修改属性就可以了。

chattr命令语法
chattr [±=] [ASacdistu] File/Directory

参数说明:

+-=:分别为 [+ 增加] [- 减少] [= 设定] 指定属性
A :当设定了 A 这个属性时,文件或目录的存取时间atime (access) 将不可被修改。
S :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失!
a :文件将只能增加数据,而不能删除,只有 root 才能设定这个属性。
c :这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩出来,但是在储存的 时候,将会先进行压缩之后再储存。
d :当 dump (备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)具有 dump 功效!
i :指定文件不能被删除、改名、也无法写入或新增数据!对于系统安全性有相当大的帮助!
j :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在 journal 中! 但是 当 filesystem 设定参数为 data=journalled 时,由于已经设定了日志了,所以这个属性无效!
s :当文件设定了 s 参数时,他将会被完全的移除出这个硬盘空间。
u :与 s 相反的,当使用 u 来设定文件时,则数据内容其实还存在磁盘中,可以使用来 undeletion.

chattr使用实例

1、设置指定文件的隐藏属性,使其无法删除、修改。

chattr +i /home/config/config.conf #添加"i"隐藏属性后,就无法更动config.conf这个文件 了

2、取消文件的删除、修改保护权限

chattr -i /home/config/config.conf #解除"i"这个隐藏属性

lsattr命令语法

lsattr [-aR] File/Directory

参数说明

-a :将隐藏文件的属性也列出来;
-R :连同子目录的数据也一并列出来!

lsattr使用实例

1、查看指定文件隐藏属性

lsattr file.txt

四 权限管理之su、sudo

su切换用户与sudo提权

4.1、介绍

因为root用户的权限太大,破坏力太强,安全风险极高,所以通常情况下公司的服务器对外都是禁止 root用户直接登录的,而运维组的小伙伴通常使用的都是普通用户,但是运维组内的小伙伴们在进行日 常运维管理的过程中,经常需要获得某些root才有的管理权限才能完成任务,例如需要执行/sbin目录下 的命令。

那么如何才能在不使用root用户直接登录操作系统的同时又能保证普通用户完成日常工作呢,有两种 方案

1、su切换用户身份

​ 特点:使用普通用户登录,然后使用su命令切换到root账户下

	优点:简单粗暴
	缺点:

​ 1、需要知道root密码

​ 2、权限控制不精细:每次都是获取所有root权限

2、sudo提取部分管理员权限

特点:

1、使用普通用户登录,然后sudo命令提取root用户的部分管理权限,注意只是某部分,而不是全部。

2、不需要切换到root账户下

​ 优点:相对复杂

​ 缺点:

​ 1、不需要知道root密码,输入的是用户自己的密码

​ 2、权限控制更为精细:可以控制普通用户只获取部分root权限

4.2 su切换用户

4.2.1 储备知识

linux中shell可以分两类:

  • 登陆shell,需要输入用户名和密码才能进入Shell,日常接触的最多的一种

  • 非登陆shell,不需要输入用户和密码就能进入Shell,比如运行bash会开启一个新的会话窗口

插一句:shell的使用方式有两种:

  • 交互式,等待用户输入执行的命令(终端操作,需要不断提示)

  • 非交互式,执行shell脚本, 脚本执行结束后shell自动退出

Bash shell 配置文件介绍(文件主要保存用户的工作环境)

全局配置文件:
    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc
个人配置文件:
    ~/.bash_profile
    ~/.bashrc
profile类文件, 设定环境变量, 登陆前运行的脚本和命令。 bashrc类文件, 设定本地变量, 定义命令别名
PS: 如果全局配置和个人配置产生冲突,以个人配置为准。

配置文件的应用顺序

如果执行的是登录式shell,那么配置文件执行顺序是:
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc

如果执行的是非登录式shell,那么配置文件执行顺序是: 
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh

PS: 验证使用echo在每行添加一个输出即可,注意,要把输出放在文件的第一行。

执行登录与非登录shell

# 执行登录shell:身份与环境都切换 su - 用户
# 执行非登录shell:只切换用户身份 su 用户
# 补充:
# 1、从root往普通用户下切换无需输入密码,反之则需要 
# 2、切换身份执行命令:su - 用户 -c “命令”

4.3 sudo提权

​ 在日常的运维工作中,我们不应该把root的密码公开给所有人,因为,一方面,真那样做的话,安全 风险就太高了,删库到跑路发生的概率估计会加大,另外一方面,小伙伴们大多数情况下只需要提取某 一些权限来使用即可也并不是需要所全部的管理员权限,所以说sudo比su更为靠谱一些。

通过配置sudo,我们可以实现让普通用户输入自己的密码的情况下而获取我们为其配置的特定权 限,这样,既保证了普通用户拥有他想要的特定权限,又不至于泄露管理root的密码。

4.4 配置

两种编辑方式

  • 1、visudo(会提示语法错误,推荐使用)
[root@egon ~]# visudo -c # 检查配置是否正确 
/etc/sudoers:解析正确
[root@egon ~]#
  • 2、vim /etc/sudoers
# sudo 语法
user MACHINE=COMMANDS
# 示如
# root ALL=(ALL) ALL

1、root:用户 
2、ALL:代表用户可以在哪台机器上执行指令,通常设置为ALL,如果设置为localhost代表在本机上执行 指令。
	也可以设置为本机以外的其他IP地址或主机名,此时该/etc/sudoers虽然是在本机上配置的,但用户 登录到本机后仍然是无法执行命令的,如果把/etc/sudoers这个配置文件赋值到指定ip或主机名的那台机器上, 就好用了

配置文件中讲到:
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems). 即/etc/sudoers文件可以在多个系统之间共享,如果我们设置成ALL的话就省事了,该文件复制到人任意一台机器
  上的完成的权限配置都一样

3、(All):表示允许用户以哪个用户的权限做事情 
4、ALL:所有命令
最终解释:root用户可以在所有主机上以任意用户身份执行所有命令
tom ALL=(ALL) ALL # tom用户在任何机器上,可以以任何用户身份执行任何命令等同于 root用户
lili ALL=(ALL) NOPASSWD: ALL # 免密
egon ALL=(ALL) /bin/cp,/bin/touch # 只允许egon用户以root用户的身份执行 cp,touch命令

egon01 ALL=(ALL) ALL,!/usr/bin/vim /test/a.txt # !代表取反
egon02 ALL=(ALL) /usr/bin/passwd [a-zA-Z]*,/usr/bin/vim *,!/usr/bin/vim /test/a.txt # 可以编辑所有文件,除了/test/a.txt
# 可以测试
[root@egon ~]# su - egon02
上一次登录:二 12月 20 11:21:01 CST 2022pts/0 上
[egon02@egon ~]$
[egon02@egon ~]$ sudo vim /test/b.txt
[egon02@egon ~]$ sudo vim /test/a.txt
对不起,用户 egon02 无权以 root 的身份在 egon 上执行 /bin/vim /test/a.txt。 [egon02@egon ~]$

测试

[root@egon ~]# su - egon
上一次登录:四 9月 10 20:27:09 CST 2020pts/0 上
[egon@egon ~]$ ll -d /etc/
drwxr-xr-x. 146 root root 8192 9月 10 20:27 /etc/
[egon@egon ~]$ touch /etc/a.txt # =================> 没有权限
touch: 无法创建"/etc/a.txt": 权限不够
[egon@egon ~]$ sudo touch /etc/a.txt # =================> 使用sudo提权
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。
[sudo] egon 的密码:
[egon@egon ~]$ ll /etc/a.txt
-rw-r--r-- 1 root root 0 9月 10 20:28 /etc/a.txt

ps: sudo 执行流程
1.普通用户执行sudo命令, 会检查/var/db/sudo是否存在时间戳缓存
2.如果存在则不需要输入密码, 否则需要输入用户与密码
3.输入密码会检测是否该用户是否拥有该权限 
4.如果有则执行,否则报错退出

Sudo 常用参数

sudo常用参数:
-l : 登录用户下面,执行sudo -l 显示当前用户有哪些权限
-k :删除/var/db/sudo/下面对应的时间戳的信息,下次执行sudo需要输入当前用户的密码
	--> 系统默认也是5分钟失效
	--> 配置免密是另一种情况 NOPASSWD: ALL远程sudo(有条件限制的)

4.5 sudo实例

企业生产环境用户权限集中管理方案实例

根据角色的不同,给不同的用户分配不同的角色
# 1.创建初级工程师3个,网络工程师1个,中级工程师1个,经理1个 批量创建用户
for user in chuji{01..03} net01 senior01 manager01 > do
>  useradd $user
> echo "111111"|passwd --stdin $user
> done;
# 2.创建5个开发人员,属于phpers组 groupadd -g 999 phpers
for n in `seq 5`
do
    useradd -g phpers php0$n
done
# 3.创建开发经理,中级phper
for user in kaifaManager seniorPhper > do
> useradd $user
> echo "111111"|passwd --stdin $user > done
# 4.编辑配置文件
[root@localhost ~]# vim /etc/sudoers
########################Cmnd_Alias By FTL ################################### Cmnd_Alias CY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route
Cmnd_Alias GY_CMD_1=/usr/bin/free, /usr/bin/iostat,/usr/bin/top, /bin/hostname, /sbin/ifconfig, /bin/netstat, /sbin/route, /sbin/iptables, /etc/init.d/network, /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall, /bin/rpm, /usr/bin/updatedb, /usr/bin/yum, /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias CK_CMD_1=/usr/bin/tail, /bin/grep, /var/log/messages*
Cmnd_Alias GK_CMD_1=/sbin/service, /sbin/chkconfig, /bin/tail, /var/log/*, /bin/grep, /bin/cat, /bin/ls, /bin/sh
Cmnd_Alias GW_CMD_1= /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /sbin/iwconfig, /sbin/mii-tool, /bin/cat, /var/log/*
########################User Aliases By FTL ###################################
User_Alias  CHUJI_YUNWEI_ADMINS=chuji01,chuji02,chuji03
User_Alias  CHUJI_KAIFA_ADMINS=php01,php02,php03,php04,php05
User_Alias  GAOJI_WANG_ADMINS=net01
########################Runas_Alias By FTL ###################################
Runas_Alias OP = root -->未来切换到某个角色执行任务 ########################Config By FTL ###################################
senior01               ALL=(OP)      GY_CMD_1
manager01           ALL=(ALL)   NOPASSWD:ALL
kaifaManager        ALL=(ALL)   ALL, /usr/bin/passwd [A-Za-z], !/usr/bin/passwd
root, !/usr/sbin/visudo,\
                                !/usr/bin/vi *sudoer*,  !/usr/bin/sudo su -,
!/bin/su
seniorPhper            ALL=(OP)    GK_CMD_1
CHUJI_YUNWEI_ADMINS ALL=(OP)    CY_CMD_1
CHUJI_KAIFA_ADMINS  ALL=(OP)    CK_CMD_1
GAOJI_WANG_ADMINS   ALL=(OP)    GW_CMD_1
命令的路径要全路径
别名需要大写
超过一行,用"\"换行
排除的命令一定在最后面写
kaifaManager 因为有ALL,所以可以直接su - 切换root,但是 sudo su -切换不了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值