zoukankan      html  css  js  c++  java
  • linux权限相关操作

    Linux权限管理是Linux中一个十分重要的概念,也是系统安全性的重要保障。这里主要介绍Linux的基本权限和默认权限,通过理论讲解与实验演示,可以详细了解到权限的相关操作及其重要性。

    文件权限

    [root@localhost ~]# ls -l /etc/passwd
    -rw-r–r–. 1 root root 2133 Apr 16 11:33 /etc/passwd
    [root@localhost ~]#
    KeyValue
    -rw-r–r–. 权限
    1 连接
    root 所有者
    root 所有组
    2133 容量-默认单位B
    Apr 16 11:33 修改的日期
    /etc/passwd 文件名

    文件的权限:所有者,所属组,其他人
    rwx,读、写、执行,没有权限就是“-”
    第一个组rwx:文件所有者的权限
    第二个组rwx:文件所属组的权限
    第三个组rwx:文件其他人的权限

    目录的权限:linux权限管理
    r:具有读取目录结构列表的权限,可以查看目录下有哪些文件
    w:该权限对于目录来说是很大的,
    1、可以在该目录下新建新的文件和目录
    2、可以删除已经存在的文件和目录
    3、将已经存在的文件和目录重命名
    4、移动目录内的文件和目录的位置
    x:是否可以进入该目录

    修改权限

    chown命令:修改文件的拥有者,前提是要有该拥有者(-R 递归修改)

    [root@localhost tmp]# tail -1 /etc/passwd
    linux00:x:1001:1001::/home/linux00:/bin/bash
    [root@localhost ~]# cd /tmp/
    [root@localhost tmp]# touch file1
    [root@localhost tmp]# ll file1
    -rw-r–r–. 1 root root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chown linux00 file1
    [root@localhost tmp]# ll file1
    -rw-r–r–. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]#

    chgrp命令:修改文件所属组,前提是要有该组(-R 递归修改)

    [root@localhost tmp]# tail -1 /etc/group
    xiuyuan:x:1002:
    [root@localhost tmp]# ll file1
    -rw-r–r–. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chgrp raoxiuyuan file1
    [root@localhost tmp]# ll file1
    -rw-r–r–. 1 linux00 xiuyuan 0 Apr 26 08:56 file1
    [root@localhost tmp]#

    chmod命令:修改拥有者和所属组的权限
    ● 加减法:u/g/o +/-/= r/w/x
    ● 数字法:r=4,w=2,x=1

    [root@localhost tmp]# ll file1
    -rw-r–r–. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chmod g+w file1
    [root@localhost tmp]# ll file1
    -rw-rw-r–. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chmod g-w file1
    [root@localhost tmp]# ll file1
    -rw-r–r–. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chmod o=rwx file1
    [root@localhost tmp]# ll file1
    -rw-r–rwx. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chmod 777 file1
    [root@localhost tmp]# ll file1
    -rwxrwxrwx. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]# chmod 764 file1
    [root@localhost tmp]# ll file1
    -rwxrw-r–. 1 linux00 root 0 Apr 26 08:56 file1
    [root@localhost tmp]#

    默认权限

    umask:查看当前用户的umask权限;-S选项
    0022—拿走的权限
    第一个数字表示特殊权限
    022=rwxr-xr-x

    默认创建文件和目录的权限,文件回拿走x权限。

    临时的修改:umask 0000
    永久的修改:/etc/bashrc(不建议)

    普通用户:002
    root用户:022

    [root@localhost tmp]# umask                       //查看用户的默认权限(Linux权限管理)
    0022
    [root@localhost tmp]# touch f1
    [root@localhost tmp]# mkdir dir1
    [root@localhost tmp]# ll
    total 0
    drwxr-xr-x. 2 root root 6 May 15 02:59 dir1        //创建的目录
    -rw-r--r--. 1 root root 0 May 15 02:59 f1          //创建的文件,默认没有x权限
    [root@localhost tmp]# umask
    0022
    [root@localhost tmp]# umask 000                    //修改用户的umask
    [root@localhost tmp]# umask
    0000
    [root@localhost tmp]# touch f2
    [root@localhost tmp]# ll
    total 0
    drwxr-xr-x. 2 root root 6 May 15 02:59 dir1
    -rw-r--r--. 1 root root 0 May 15 02:59 f1
    -rw-rw-rw-. 1 root root 0 May 15 03:01 f2
    [root@localhost tmp]# chmod u+x f2
    [root@localhost tmp]# ll
    total 0
    drwxr-xr-x. 2 root root 6 May 15 02:59 dir1
    -rw-r--r--. 1 root root 0 May 15 02:59 f1
    -rwxrw-rw-. 1 root root 0 May 15 03:01 f2
    [root@localhost tmp]# mkdir dir2
    [root@localhost tmp]# ll
    total 0
    drwxr-xr-x. 2 root root 6 May 15 02:59 dir1
    drwxrwxrwx. 2 root root 6 May 15 03:03 dir2
    -rw-r--r--. 1 root root 0 May 15 02:59 f1
    -rwxrw-rw-. 1 root root 0 May 15 03:01 f2
    [root@localhost tmp]# umask 022
    [root@localhost tmp]# umask
    0022
    [root@localhost tmp]# vim /etc/bashrc      //永久修改umask
    [root@localhost tmp]# 
    

    -S:以符号方式输出权限掩码

    [root@localhost tmp]# umask -S
    u=rwx,g=rx,o=rx
    [root@localhost tmp]#
    问:假设你的umask为003,请问该umask情况下,建立的文件和目录的权限分别为多少?
    答:umask为003,所以拿掉的权限为——–wx,因此:
    文件:(-rw-rw-rw-)-(——–wx)=(-rw-rw-r–)
    目录:(drwxrwxrwx)-(d——-wx)=(drwxrwxr–)问:在什么情况下,要使用umask
    答:假设你和同时在同一个目录下进行同一个项目的工作。如果使用默认权限022,那么你创建的文件,你的同事将无法编辑。因此我们可以将权限调整为002

    文件的特殊权限(SUID、SGID、SBIT)

    [root@localhost ~]# ls -ld /tmp/; ls -l /usr/bin/passwd 
    drwxrwxrwt. 11 root root 4096 May 15 03:38 /tmp/
    -rwsr-xr-x. 1 root root 27832 Jan 29  2014 /usr/bin/passwd
    [root@localhost ~]#
    

    当s出现在拥有者的x权限位置时候,表示拥有者有SUID的权限(Set UID)[Linux权限管理]
    当s出现在所属组的x权限位置时候,表示所属组有SGID的权限(Set GID)
    当t出现在其他人的x权限位置时候,表示其他人有SBIT的权限(Sticky Bit)

    SUID,临时获取文件所有者的权限—-只能针对文件
    SGID,即可以作用于目录,也可以作用于文件
    作用于文件:SUID一样
    作用于目录:继承父级目录—目录会不停继承
    SBIT,只有文件的拥有者,才能删除,修改该目录下的文件—只针对目录

    S和T都有大写和小写之分
    大写说明:没有x权限
    小写说明:有x权限
    SUID=4 SGID=2 SBIT=1

    账户管理

    /etc/passwd:记录linux上的所有账号
    /etc/shadow:记录账户对应的密码
    /etc/group:记录所有的组

    [root@localhost ~]# vim /etc/passwd

    /etc/passwd每条记录详解
    linux00:用户名
    X:早期这个部分放的是用户登入密码,现在密码放入/etc/shadow中
    UID:0表示系统管理员,1-999保留给系统使用的ID,1000以上给一般使用者
    GID:0表示系统管理员,1-999保留给系统使用的ID,1000以上给一般使用者
    Linux00:使用者信息说明
    /home/linux00:用户家目录,用户登入时,所在的目录
    /bin/bash:用户在登入的时候,是否可以使用shell,如果不能使用shell,则会显示/sbin/nologin

    账户和组名:给使用者看的
    UID和GID:linux系统识别的

    id命令:查看当前登入用户的UID和GID

    [root@localhost ~]# id

    如果随意修改/etc/passwd下的用户UID会发生什么情况(当我们使用ls -l的时候,系统会根据/etc/passwd和/etc/group文件的内容,找到UID和GID对应的名称,修改显示)

    /etc/shadow每条记录详解
    1.Root:用户名
    2.一串红色的字:经过加密的密码
    3.最近更改过密码的日期:linux中的日期,是通过1970年1月1日开始累加的日期
    4.密码不能改修改的天数:0表示随时可以修改
    5.密码需要重新被修改的天数:通过修改该值,可以强制用户修改密码
    6.密码需要变更的告警天数:7天哪系统会向用户发出告警
    7.密码到期还可以使用时间:密码到期后,账号可以使用的时间
    8.账号实效日期:通过1970年1月1日开始累加的日期,到了时间后,无论密码是过期,该账号已经不能使用
    9.保留

    /etc/group每条记录详解
    1.linux00:组名
    2.X:组密码,一般不需要
    3.1000:GID
    4.组用户(附属组)
    这些文件不建议直接进行修改,建议使用命令进行修改。

    useradd命令:用于创建用户

    [root@localhost ~]# useradd linux00

    使用useradd命令创建用户后,默认进行一下几个操作:
    1.在/etc/passwd下建立相关的资料
    2.在/etc/shadow下写入密码的相关的参数
    3.在/etc/group中写入和账号名一样的组
    4.在/home/下创建用户的家目录

    usermod命令:可以对已存在账户的信息进行修改

    [root@localhost ~]# usermod -l linux00 user1

    passwd命令:用于修改密码(所有人都可以用该命令修改自己的密码)

    [root@localhost ~]# passwd linux00 //修改linux00用户的密码

    chage命令:可以修改和密码有关的时间参数(-l:查看一个账户和密码有关的时间参数)

    [root@localhost ~]# chage -l linux00

    userdel命令:删除一个用户

    要彻底删除一个账号,比较麻烦:
    1.删除/etc/passwd;/etc/shadow文件中的内容
    2.删除/etc/group;/etc/gshadow文件中的内容
    3.删除/home/username;/var/spool/mail/username
    4.删除该用户曾经来该linux中创建的文件(先用find命令进行查找,再删除)

    [root@localhost ~]# userdel linux00 //删除1、2条中的信息3、4条中的信息依然存在
    [root@localhost ~]# rm -rf /home/linux00 //手动删除家目录
    [root@localhost ~]# rm -rf /var/spool/mail/linux00 //手动删除邮件目录

    -r参数:连同家目录和邮箱一起删除

    [root@localhost ~]# userdel -r linux00 //1、2、3内容全删除

    ACL权限

    ACL(Access Control List)访问控制列表,ACL的功能是应对复杂用户环境的权限问题。(Linux权限管理)

    那么这玩意有啥用处呢?下面我们考虑一种场景:

    假设我Jimmy创建了一个项目文件夹,我和我的开发团队Rocket对该目录均具备 rwx 的权限,因为我该文件夹下有源码等,不能对外开放,所以对其他用户的权限为0,即我的文件夹目录为 drwxrwx—;
    然而有一天,我的一个灰常好的盆友Sherry想要看一下我的项目,看看我写的代码有多流弊,然而我不好意思拒绝,这个时候我有三种选择:
    1.让其成为所有者(这个当然不可能)
    2.让其成为项目组成员(然而她并没有参与开发,再说她也基本看不懂代码,万一不小心删掉了部分代码咋弄?)
    3.给其它人赋以 r-x 的权限(然而,other用户太多了吧,万一我代码没发布就被竞争对手给copy了呢?)
    看来,以上三种手段都不靠谱啊,怪就怪other的用户全太大了,唉,这可咋整?

    那么,我们为什么不为Sherry开小灶呢?就是让其不属于任何一个组,只是以单用户的身份被赋予特定权限。
    这种“开小灶”的方式,其实就是ACL权限!

    ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助

    setfacl命令: 设置文件或目录的ACL设置信息

    [root@localhost tmp]# mkdir -m 770 project             //创建其他人无权限操作的目录
    [root@localhost tmp]# ll -d project/
    drwxrwx---. 2 root root 6 May 16 23:39 project/
    [root@localhost tmp]# su - linux00                     //切换用户linux00
    Last login: Wed May 16 23:37:52 EDT 2018 on pts/0
    [linux00@localhost ~]$ cd /tmp/project/                //查看管理员创建的目录/tmp/project/
    -bash: cd: /tmp/project/: Permission denied
    [linux00@localhost ~]$ su -
    Password: 
    Last login: Wed May 16 23:38:31 EDT 2018 on pts/0
    [root@localhost ~]# cd /tmp/
    [root@localhost tmp]# setfacl -m u:linux00:rx project/  //设置acl权限
    [root@localhost tmp]# ll
    total 4
    drwxrwx---+ 2 root root 6 May 16 23:39 project          //目录权限第11位有一个 + 号,代表的就是ACL权限
    [root@localhost tmp]# su - linux00
    Last login: Wed May 16 23:39:56 EDT 2018 on pts/0
    [linux00@localhost ~]$ cd /tmp/project/                 //linux00现在已经有权限可以访问project目录
    [linux00@localhost project]$ 
    

    getfacl命令: 获取文件或目录的ACL设置信息

    [linux00@localhost tmp]$ getfacl project/
    # file: project/
    # owner: root
    # group: root
    user::rwx
    user:linux00:r-x
    group::rwx
    mask::rwx
    other::—

    [linux00@localhost tmp]$

    user:linux00:r-x: 表示linux00具备的ACL权限为 r-x
    mask::rwx: 表示ACL的最大权限,用你分配给用户的权限与mask相与(类似于子网掩码)

    setfacl -b命令:删除acl权限

    [root@localhost tmp]# setfacl -b project/
    [root@localhost tmp]# getfacl project/
    # file: project/
    # owner: root
    # group: root
    user::rwx
    group::rwx
    other::—

    [root@localhost tmp]#

  • 相关阅读:
    react native 添加mobx
    js-(19,999,999.00)
    html移动端 -- meta-模板 + rem
    HTML5 移动端头部标签
    js
    html --- rem
    es6--async--await
    nrm+nvm
    js-call-apply
    SQL映射文件
  • 原文地址:https://www.cnblogs.com/XiOrang/p/9342203.html
Copyright © 2011-2022 走看看