权限管理下

Linux系统一切皆文件!!!

1、文件权限

以根目录下的etc目录下的hosts文件为例:

[root@localhost ~]# ll /etc/hosts
-rw-r--r--. 1 root root 158 6月   7 2013 /etc/hosts

- 表示文件的类型是普通文件。

rw-r--r-- 表示具体的权限,没有权限就写-,没3位表示一组,固定写法,第一位表示读权限,第二位表示写权限,第三位表示执行权限。

root 表示属主

root 表示属组

  文件权限的分类:

    9位,3位一组,每一组都由三部分组成

      r:读权限

      w:写权限

      x:执行权限

 

  文件权限的归属角色有三类:

      u:属主

      g:属组

      o:其他人

 

  进程在用文件的权限:

    1、进程启动(必须赋予某种身份,默认是当前登录用户,也可以在配置文件里修改指定进程启动的身份)

    2、拿着进程的用户身份去匹配目标文件的权限,进程的用户身份会依次匹配文件的

      u 对应9段权限的前3段。

      g 对应9段权限的中3段。

      o 对应9段权限的后3段。

      

  修改权限的命令:

    属主属组

      change owner 缩写就是chown

      把文件1.txt的属主改为zrg,属组改为group1。

[root@localhost ~]# ll 1.txt
-rw-r--r--. 1 root root 0 5月  20 20:50 1.txt
[root@localhost ~]# useradd zrg
[root@localhost ~]# groupadd group1
[root@localhost ~]# 
[root@localhost ~]# chown zrg.group1 1.txt
[root@localhost ~]# ll 1.txt
-rw-r--r--. 1 zrg group1 0 5月  20 20:50 1.txt

 如果只改属主:

chown zrg 1.txt

如果只改属组:

chown .group 1.txt

 

      改文件夹:

        -R 递归的改,包括/wahaha文件夹本身以及子子孙孙

[root@localhost ~]# chown -R yj.group2 /wahaha

 

    如何修改权限

      r 对应数字4

      w 对应数字2

      x 对应数字1

     

      用rwx去修改 一种是加减法一种是赋值

      把主人的权限改成rwx,组权限改成rwx,其他人全程改成---

        

[root@localhost ~]# chomd u+x,g+wx,o-r 1.txt
[root@localhost ~]# chomd u=rx,g=-,o=r 1.txt

       用用户数字代号去修改

[root@localhost ~]# chomd 645 1.txt

    

     改目录 加-R

[root@localhost ~]# chomd -R 777 /home

 

    权限对于目录、普通文件的意义:

      r(read):读取,对文件来说是读取内容,对目录来说是浏览目录内容。

      w(write):写入,对文件来说是修改文件内容,对目录来说是删除和修改目录内的文件。

      x(execute):执行,对文件来说是执行文件,对目录来说是进入目录。 

      -:表示不具有该权限。

        命令分为两大类:

          1、二进制的命令:/usr/bin/ls  这种只需要对它的x权限就可以执行。

          2、脚本文件(内容是一堆普通文件) 这种需要对它有r+w权限。

    

    一个文件 /a/b/c/1.txt 可能在多个文件夹下面。

    文件夹/a/b/c

      1、当前进程的身份要对沿途经过的所有文件夹都有一个权限 x

      2、问c文件夹的

        r 浏览里面的内容(子文件、子文件夹名)

        w 在该文件夹创键、删除、移动内容(子文件、子文件夹名)

 

     文件/a/b/c/1.txt

      1、当前进程的用户身份要对沿途的所有文件夹都有一个权限 x

      2、对1.txt拥有

        r 读入1.txt内容。

        w 可以修改1.txt的内容。

 

        x 可以执行1.txt文件里面的指令(如果是脚本文件还需搭配一个r权限)

 

文件的特殊权限:

  suid    数字代号4

    1、给命令文件加的权限

chmod u+s /usr/bin/passwd

      效果:passwd    ------> /etc/shadow

        加了suid权限的命令在启动时的用户身份会用自己的命令文件的属主身份

  sgid    数字代号4

    1、可以给文件夹加

chmod g+s /aaa

      后续在/aaa文件夹下建的文件、文件夹的属组都会继承自/aaa文件夹的属组。

  sticky  粘着位  数字代号1

chmod o+t /share

    在/share文件夹下的文件只能被属主自己操作。

 

umask值可以控制创键文件、文件夹时的默认权限。

在root目录下创建的目录和文件分别有默认的权限,目录是755文件是644。

在系统中创建的目录和文件的权限默认是777和666。

文件及文件夹的默认权限是:系统默认权限+umask值计算出来一个结果。

[root@localhost ~]# umask
0022
umask值0022

umask指定的是需要减掉的权限,而对于u、g、o三组权限,文件默认没有执行权限

[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx

目录权限直接相减,文件权限偶数直接相减,奇数的话要加1.

[root@localhost ~]# umask 002  
设置umask权限

 

     

2、su切换用户

   按照进入shell环境方式的不同,分为两种:

    登录shell:登录账号密码。su - zrg  

    非登录shell:在shell环境中直接输入命令进入的shell环境。su zrg

            

    两者的区别就是加载的配置文件不同。 

      登录shell:

        /etc/profile

        /etc/profile.d  /下的一堆脚本文件

        ----------------------------------------->centos9对所执行一次/etc/bashrc

        ~/.bash_profile

        ~/.bashrc

        /etc/bashrc

      非登录shell:

        ~/.bashrc

        /etc/bashrc

        /etc/profile.d  /下的一堆脚本文件

 

3、sudo

 让普通用户只用自己的账号密码进行认证,操作时可以临时获取管理的某种权限。

用的时候,首先得在管理员下,把你要分配给那些普通账号的权限全都给分配好,然后普通账号才能用的上。

修改sudo配置文件方式:   visudo -c  检查文件语法

  visudo,专门编辑文件/etc/sudoers。

  vi /etc/sudoers

 

 如果改错一点,保存时会提示报错。

#开头的都是注释。

 

## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2

对主机做一些别名。

yy复制一行,x可以删掉一个字符,u还原回来。

# User_Alias ADMINS = jsmith, mikem

把多个用户包含到ADMINS里面去。

 

# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

命令的别名。

 

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

%后面跟的是个系统组。

 

 sudo企业实战案列:

根据角色的不同,给不同的用户分配不同的角色
 
# 1、创建初级运维工程师3个
useradd chuji01  # 然后设置密码 echo "111"|passwd --stdin chuji01
useradd chuji02  # 然后设置密码 echo "111"|passwd --stdin chuji02
useradd chuji03  # 然后设置密码 echo "111"|passwd --stdin chuji03
# 2、创建5个初级php开发人员,属于phpers组
groupadd -g 999 phpers
useradd -g phpers php01
useradd -g phpers php02
useradd -g phpers php03
useradd -g phpers php04
useradd -g phpers php05
# 3、创建高级网络工程师1个,后面还打算再招
useradd net01    # echo "111"|passwd --stdin net01
 
 
 
# 4、创建中级运维工程师1个
useradd senior01 # echo "111"|passwd --stdin senior01
# 5、创建一个中级php开发
useradd seniorPhper
 
 
# 6、创建运维经理1个
useradd manager01 # echo "111"|passwd --stdin manager01
# 7、创建一个开发经理
useradd kaifaManager
 
# 4.编辑配置文件
[root@localhost ~]# vim /etc/sudoers
########################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     -->未来切换到某个角色执行任务
 
########################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/*
 
########################Config By FTL ###################################
# 1、初级运维
CHUJI_YUNWEI_ADMINS ALL=(OP)    CY_CMD_1
 
# 2、初级php开发
CHUJI_KAIFA_ADMINS  ALL=(OP)    CK_CMD_1
或者可以这么写(%组名)
%phpers ALL=(OP)    CK_CMD_1
 
# 3、高级网管
GAOJI_WANG_ADMINS   ALL=(OP)    GW_CMD_1
 
 
 
# 4、中级运维
senior01               ALL=(OP)      GY_CMD_1
 
# 5、中级php开发
seniorPhper            ALL=(OP)    GK_CMD_1
 
 
# 6、运维经理
manager01           ALL=(ALL)   NOPASSWD:ALL
 
# 7、开发经理
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
 
 
命令的路径要全路径
别名需要大写
超过一行,用"\"换行  
排除的命令一定在最后面写
kaifaManager 因为有ALL,所以可以直接su - 切换root,但是 sudo su -切换不了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

zrg

 

posted @ 2025-05-20 21:21  张仁国  阅读(16)  评论(0)    收藏  举报
目录代码