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

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































评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理