关于程序员:云计算学习days4用户

32次阅读

共计 7904 个字符,预计需要花费 20 分钟才能阅读完成。

1. 用户提权:

su 切换身份;    
    1. 须要晓得 root 的明码;
    2. 提权; 拿到最高的权限; 危险;

su UserName
su - Username

区别在于, 加载的环境变量不一样;  (可能会造成程序运行异样;)


# 借助 www 用户身份去运行 ifconfig 命令;
[root@oldboyedu ~]# su - www -c "ifconfig"


因为有些程序不反对 root 间接启动; 必须是普通用户; 
    1. 普通用户不须要登录零碎;
    2. 只是用来实现服务的启动;
    3. 创立该用户时, 个别都创立为一个零碎用户; 
    4. 最初通过 su - username -c "command" 来实现服务的启动;


sudo 提取权限;
    当你在做某件无奈实现的事件时, 能够通过提权来实现; 


    # 1. 应用 sudo 定义分组, 这个零碎 group 没什么关系
    User_Alias OPS = oldxu,oldqiang
    User_Alias DEV = oldli,oldguo

    # 2. 定义可执行的命令组, 便于后续调用
    Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
    Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
    Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
    Cmnd_Alias STORAGE = /bin/mount, /bin/umount
    Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
    Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
    Cmnd_Alias Grant = /bin/rm, /bin/ls

    # 3. 应用 sudo 开始调配权限
    OPS  ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES
    DEV  ALL=(ALL) SOFTWARE,PROCESSES



# 查看本人有哪些 sudo 权限
[oldxu@oldboyedu ~]$ sudo -l


比拟危险的命令:
    vim
    rm
    su
    cp
    chmod
    chown
    


1. 什么是权限?
2. 为什么要应用权限?
3. 权限与用户之间的关系?
4. 权限中的 rwx 是干什么的?
5. 验证权限 rwx 对文件和对目录的含意?
6. 如何变更一个文件至其余用户?

    
    
    7  6   4 

文件示例: rwxrw-r– alice hr file1.txt
Q1: alice 对 file1 文件领有什么权限?
Q2: jack 对 file1.txt 文件有什么权限? 前提:jack 属于 hr 组
Q3: tom 对 file1.txt 文件有什么权限?

针对 hr 部门的拜访目录 /home/hr 设置权限,要求如下:

1.root 用户和 hr 组的员工能够读、写、执行。2. 其余用户或者组没有任何权限。

1. 须要一个 hr 组;
2.hr 中须要用户;        zhangsan;
3. 须要一个用户;        erma;

[root@oldboyedu ~]# mkdir /home/hr -p
[root@oldboyedu ~]# groupadd hr
[root@oldboyedu ~]# useradd zhangsan -g hr
[root@oldboyedu ~]# useradd erma

变更属组;

[root@oldboyedu ~]# chown .hr /home/hr/
[root@oldboyedu ~]# ll -d /home/hr/
drwxr-xr-x 2 root hr 6 Mar 16 10:41 /home/hr/

变更权限 默认的是 755 –> 770

[root@oldboyedu ~]# chmod 770 /home/hr/
[root@oldboyedu ~]# ll -d /home/hr/
drwxrwx— 2 root hr 6 Mar 16 10:41 /home/hr/

文件设定权限:

rw: 读写
rx: 读, 执行
个别不给 rwx, 因为权限太高了;


目录设定权限:


rx: 能浏览目录中的文件, 并且能进入目录, 但如果要操作该文件, 须要看该文件的属性;
rwx: 能浏览目录中的文件, 能进入目录, 但如果要操作该文件, 须要看该文件的属性(rwx),  但删除, 拷贝, 挪动, 看目录是否有 w;

PS: 总结 rwx 对目录的影响
读取权限(r),如果目录只有 r 权限: 具备浏览目录及子目录权限
1. 能够应用 ls 命令浏览目录及子目录,但同时也会提醒权限回绝
2. 应用 ls - l 命令浏览目录及子目录,文件属性会带问号,并且只能看到文件名
总结: 目录只有 r 权限,仅仅只能浏览内的文件名,无其余操作权限

写入权限(w),如果目录只有 w 权限: 具备减少、删除或批改目录内文件名权限 (须要 x 权限配合)
PS: 如果目录有 w 权限, 能够在目录内创立文件, 删除文件(跟文件自身权限无关)
不能进入目录、不能复制目录、不能删除目录、不能挪动目录

执行权限(x),如果目录只有 x 权限
1. 只能进入目录
2. 不能浏览、复制、挪动、删除

3.Linux 权限总结与注意事项
文件 r 权限, 只给用户查看, 无其余操作
文件 rw 权限, 能够查看和编辑文件内容
文件 rx 权限, 容许查看和执行文件、但不能批改文件 —–>(脚本文件、命令文件)
文件 rwx 权限, 能读, 能写, 能执行, 但不能删除, 因为删除须要看下级目录的权限有没有 w —–>(审慎赋予)
目录 rx 权限, 容许浏览目录内文件以及子目录, 不容许在该目录下创立文件、删除文件
目录 rw 权限, 能查看目录,能往目录写入文件,但无奈进入目录 —–>(应用的状况太少)
PS: 文件的 x 权限小心给予,目录的 w 权限小心给予。
PS: 文件通常设定的权限是 644,目录设定的权限是 755。

程序 –> 运行 –> 过程 –> (用户)

过程可能以什么样的形式去拜访一个文件或目录,

取决于这个过程所运行的用户身份对该文件或目录领有什么样的权限:


chmod:  变更权限

    chmod 777
    chmod 666
    chmod -R 644

chown:  变更属主和属组

    chown -R www         PATH/            # 仅变更属主
    chown -R .www         PATH/        # 仅变更属组
    chown -R www.root      PATH/        # 同时变更属主和属组;
    


文件类型:
    -
    s
    d
    c
    l
    b

权限:
    rwxrwxrwx

硬连接数:
    2

用户和用户组
    用户和权限之间的关系;


非凡权限:
    s
    t
    

练习根底命令 + 用户 + 权限 + 思考

project_a

                    a1
                    a2

project_b

                    b1
                    b2



需要如下:

0. 创立我的项目同名的组, 并将用户退出到组中;
1. 所有目录, 文件保留在 /project_all 目录下;
2. 在 /project_all 下创立三个我的项目目录, 别离为 project_a,project_b
3. 各个我的项目之间不能够相互拜访(project_a 我的项目不可拜访 prohect_b);
4. 在每个我的项目下创立一个与用户同名的目录
5. 雷同部门之间能够相互查看文件内容, 但不能够批改, 用户本人创立的文件本人能够批改;

需要 0:

[root@oldboyedu ~]# groupadd project_a
[root@oldboyedu ~]# groupadd project_b

[root@oldboyedu ~]# useradd usera_1 -g project_a
[root@oldboyedu ~]# useradd usera_2 -g project_a 

[root@oldboyedu ~]# useradd userb_1 -g project_b
[root@oldboyedu ~]# useradd userb_2 -g project_b

需要 1:

[root@oldboyedu ~]# mkdir /project_all

需要 2:

[root@oldboyedu ~]# mkdir /project_all/project_{a..c} -pv

需要 3:

[root@oldboyedu ~]# chown .project_a /project_all/project_a/ 
[root@oldboyedu ~]# chown .project_b /project_all/project_b/ 
[root@oldboyedu ~]# chown .project_c /project_all/project_c/ 

[root@oldboyedu ~]# chmod 770 /project_all/project_a/
[root@oldboyedu ~]# chmod 770 /project_all/project_b/
[root@oldboyedu ~]# chmod 770 /project_all/project_c/

需要 4:

[root@oldboyedu ~]# mkdir -p /project_all/project_a/usera_1
[root@oldboyedu ~]# mkdir -p /project_all/project_a/usera_2

[root@oldboyedu ~]# mkdir -p /project_all/project_b/userb_1
[root@oldboyedu ~]# mkdir -p /project_all/project_b/userb_2

需要 5:

[root@oldboyedu ~]# chown -R  usera_1.project_a /project_all/project_a/usera_1/
[root@oldboyedu ~]# chown -R  usera_2.project_a /project_all/project_a/usera_2/

[root@oldboyedu ~]# chown -R  userb_1.project_b /project_all/project_b/userb_1/
[root@oldboyedu ~]# chown -R  userb_2.project_b /project_all/project_b/userb_2/



今日总结:

1. 提权:
    1.1) su 切换身份;  加 - 不加 -: 加载的环境变量不一样;
    1.2) sudo 提权;
    
        用户 ==> 逻辑组 ==> 命名汇合名称 ==> (雷同命令归档到同一个命令集名称中;)
                                Command_File = /bin/ls,/bin/rm,/bin/cp
    
2. 权限是什么:
    束缚 登录的用户能对系统所做的操作;
    
3. 为什么有:
    爱护每个用户的隐衷以及系统安全;
    
4. 权限与用户关系:
    当用户拜访一个文件时, 
        零碎会查看该用户是否属于文件的属主, 则权限的前三位字符;
            如果文件属于属组, 则看两头三位;
            如果都不是则看最初三位;
    

5. 权限中的 rwx 是什么意思:
    r: 读                4
    w: 写                2
    x: 执行                1
    
6. 权限对文件和目录的影响;
7. 如何变更权限;   如何变更属主和属组;
8. 为什么须要变更属主和属组;

    程序 --> 运行 --> 过程 --> (用户)

    过程可能以什么样的形式去拜访一个文件或目录,
        取决于这个过程所运行的用户身份对该文件或目录领有什么样的权限:
        如果用户有读权限, 那么过程则有读权限;






痛点:

衣食住行;
成长需要; (常识)
吃喝玩乐 (x);

学历; 能力;

昨日内容:

1. 批改权限; chmod;
2. 批改属主属组;
3. 场景:
    过程无关的场景;
        Nginx 服务;
        xx 服务;

今日内容:

非凡权限:  
    setuid
    
    举个例子:当咱们应用普通用户 oldxu 执行 passwd 命令会产生什么变动呢?

   1. 因为 passwd 命令领有 suid 非凡权限(在命令属主权限位有一个 s)
   2. 所以 passwd 命令在执行的过程中,会以命令的属主身份去运行该命令。(也是 root 身份)
   3.oldxu – 执行 –> passwd 命令 –setuid–> 转换为命令属主身份 root 执行 –> 实现 /etc/shadow 信息变更

    chmod 4755
    chmod u+s    
    
    
    例子:  jack --> /etc/shadow 文件:
    
        1.jack 执行 cat 命令查看 /etc/shadow; 
        2.cat 是由 jack 运行的, 能不能查看, 取决于 jack 用户对 /etc/shadow 有没有权限;
        3./etc/shadow 默认任何人都无权限;  所以查看失败; 提醒 Permission denied
        
    解决:    
        形式 1: sudo 提权
            jack    ALL=(ALL)       /usr/bin/cat
            
            
        形式 2: 将 cat 命令增加非凡权限位  suid;
        
            [root@oldboyedu ~]# ll /bin/cat
            -rwxr-xr-x. 1 root root 54080 Aug 20  2019 /bin/cat

            [root@oldboyedu ~]# chmod 4755 /bin/cat
            [root@oldboyedu ~]# ll /bin/cat
            -rwsr-xr-x. 1 root root 54080 Aug 20  2019 /bin/cat
        
        
        1.jack 运行 -->cat 命令 --> 因为有非凡权限位 suid, 所以 cat 命令不在是以 jack 的身份运行, 而是由命令的属主身份运行
        2. 因为命令属主的身份是 root, 所以执行该命令时的身份是 root; 
        3.root 用户可能查看 /etc/shadow 文件, 所以 jack 用户执行 cat 命令会胜利查看;
        
    
        惯例权限: 让 jack 这个普通用户为 tom 用户增加一个新的附加组;
            jack --> usermod --> /etc/passwd /etc/shadow  /home /var/spool/mail
    
        非凡权限: 为 useradd 命令减少 setuid
            jack --> useradd --> root -->     /etc/passwd /etc/shadow  /home /var/spool/mail
    
        [root@oldboyedu ~]# ll /sbin/useradd 
        -rwxr-xr-x. 1 root root 137616 Aug  9  2019 /sbin/useradd

        [root@oldboyedu ~]# chmod 4755 /sbin/useradd 
        [root@oldboyedu ~]# ll /sbin/useradd 
        -rwsr-xr-x. 1 root root 137616 Aug  9  2019 /sbin/useradd
    
    
    勾销非凡权限:
    [root@oldboyedu ~]# chmod 0755 /sbin/usermod 
    [root@oldboyedu ~]# ll  /sbin/usermod 
    -rwxr-xr-x. 1 root root 133456 Aug  9  2019 /sbin/usermod

    [root@oldboyedu ~]# chmod u-s /sbin/useradd 
    [root@oldboyedu ~]# ll /sbin/useradd 
    -rwxr-xr-x. 1 root root 137616 Aug  9  2019 /sbin/useradd
    

    rm,vim,
            
    suid: 不能够对目录执行, 他只针对二进制文件; 命令
    
    
    setgid (理解)
        命令: 赋予 setgid 后, 任何用户在执行命令时, 以这个命令的属组身份去运行;
    
        目录: 赋予 setgid 后, 所有该目录下创立的文件, 都依照属组的身份来;
        
        用户  默认组        附加组
        user1 user1            project 
        user2 user2            project
    
    
        目录
            /data/code
        
        1. 创立组, 以及用户
        [root@oldboyedu ~]# groupadd project
        [root@oldboyedu ~]# useradd user1 -G project
        [root@oldboyedu ~]# useradd user2 -G project
        
        2. 创立我的项目目录, 调配权限;  禁止其他人拜访该目录, 同时还要保障 user1.user2 能失常读写执行;
        [root@oldboyedu ~]# chown .project /data/code/
        [root@oldboyedu ~]# chmod 770 /data/code/
        [root@oldboyedu ~]# ll -d /data/code/
        drwxrwx--- 2 root project 6 Mar 17 10:47 /data/code/

        3. 给目录减少 sgid;
        [root@oldboyedu ~]# chmod 2770 /data/code/
        [root@oldboyedu ~]# ll -d /data/code/
        drwxrws--- 2 root project 24 Mar 17 10:52 /data/code/
    
    
        4.user1 创立文件. 测试 user2 是否失常批改;
        [user1@oldboyedu code]$ touch user1_file
        [user1@oldboyedu code]$ ll
        total 0
        -rw-rw-r-- 1 user1 project 0 Mar 17 10:54 user1_file
    
    
        5. 测试 user2 批改文件; 属性没有发生变化
        [user2@oldboyedu code]$ echo "aaa" > user1_file 
        [user2@oldboyedu code]$ cat user1_file 
        aaa
        [user2@oldboyedu code]$ ll -d user1_file 
        -rw-rw-r-- 1 user1 project 4 Mar 17 10:56 user1_file
    
    
    setbit
        1. 服务初始化, 会存储一些临时文件, 而这个服务运行的身份不足以存储到 /opt 等这样的目录; /tmp 目录
        2.yum 命令; /tmp
    
            chmod o+s /tmp
            chmod 1777 /tmp
            
    
    
    
    非凡属性;
        chattr
        lsattr
    
        +i: 中毒后; 因为病毒文件会一直串改文件; 加锁让其无奈篡改,无奈执行;
        +a: append 追加; 罕用重要的日志文件加锁; 使其无奈删除内容只能追加内容
    
    
    # 查看非凡属性
    [root@oldboyedu ~]# lsattr /etc/passwd
    ---------------- /etc/passwd

    # 加锁
    [root@oldboyedu ~]# chattr +i /etc/passwd
    [root@oldboyedu ~]# lsattr /etc/passwd
    ----i----------- /etc/passwd
    
    # 测试
    [root@oldboyedu ~]# mv /etc/passwd /tmp/
    mv: cannot move‘/etc/passwd’to‘/tmp/passwd’: Operation not permitted

    [root@oldboyedu ~]# rm -f /etc/passwd
    rm: cannot remove‘/etc/passwd’: Operation not permitted
    
    



    umask: 

    判断: 
    如果用户的 UID 大于 199 并且 用户名称与组的名称统一, 则执行 then 前面的代码; 设定 umask 为 002
    如果不满足条件, 则执行 else 前面的代码;
    if [$UID -gt 199] && ["`/usr/bin/id -gn`" = "`/usr/bin/id -un`"]; then
        umask 002
    else
        umask 022
    fi
    
    # umask 所有位位偶数时,奇数不须要加一
    # umask 局部位为奇数时,奇数位加一
    # umask 所有位为奇数时,奇数位加一
    

##################################
    非凡权限:
        suid:    
                执行时应用该命令的属主身份运行;   chmod u+s     chmod 4755
        sgid:    
                文件: 执行时应用该命令的属组身份运行;        chmod g+s     chmod 2755
                目录: 让创立的文件与目录的属组保持一致;
            
        sbit:
                粘滞位; 任何人都能够存储文件; 但只能本人删除;     chmod o+s     chmod 1755
                服务初始化;
                存储长期资源;
        
        非凡的属性:    chattr  lsattr
            +i: 锁住文件; 病毒的爱护文件不被二次批改;
            +a: 只容许追加;  重要的日志文件;  追溯事件产生的背景;
            
        umask:
            示意要减掉的权限;  默认零碎的 目录权限是 777  文件是 666  
            
                默认权限 --> umask = 最终权限;
        

    > >> | xargs































正文完
 0