• Shell基础:Linux权限管理


    Linux权限基本概念

    查看系统(文件夹/文件)权限: ls -l =>d/-   xxx xxx xxx.  num  owner  group  size   date  filename

    • d代表目录,-代表文件
    • 第一个xxx 表示所有者的权限; 第二个xxx表示所在组的权限; 第三个xxx表示其他用户的权限
    • 为了保护系统,创建完文件以后,某个文件的默认权限为-rw-r--r--. 所有者有读写权限,其他用户只有读的权限
    • num表示文件数目,创建的是文件,num=1,创建的是文件夹,num表示文件夹中含有的文件数
    • owner 表示创建者
    • group 表述文件所属组
    • size 表示文件大小
    • date 表示日期
    • filename 表示文件或者文件夹名字

    Linux 系统权限分类

    • rwx(r--读,w--写,x--执行)
    • augo(a--所有,u--所有者,g---所属组,o--其他)

    Linux用户管理

    • 查看用户详情 id user
      • 示例: id root => uid=0(root) gid=0(root) groups=0(root)
      • 示例: id sr => uid=500(sr) gid=500(sr) groups=500(sr)
      •  显示root/user用户的uid, gid组id, 所属组
    • 新建用户 useradd user/passwd user
      • 示例:useradd user1 => id user1 => uid=501(user1) gid=501(user1) groups=501(user1)
      • 示例:passwd user1,系统会弹出提示让输入密码,passwd+user可以用来创建或者更改密码
      • 创建新用户时默认会为该用户分配id, 创建相应组,分配组id, id从500开始依次往下
      • 创建完新用户系统会把新用户的配置信息添加到/etc/passwd  文件中
      • 为新用户添加完密码系统会把相应的密码信息添加到/etc/shadow 文件中
      • 创建完新用户会默认为新用户添加一个组,并把组的信息添加到/etc/group
      • 创建完新用户,home家目录下会自动为新建用户分配一个文件夹,表示用户的根目录/home/user1
    • 删除用户userdel -r user
      • r参数非常重要,每次添加user用户时,为该用户添加和修改了很多文件,加了-r才能彻底的把这些文件都删除干净,不然系统仍然保存着user的信息,无法再添加同名用户。
      • 删除时忘了r参数,需要去更改非常多的文件(/etc/passwd&shadow&group ; /home/user; /var/spool/mail/user)
    • 给用户添加组  gpasswd -a sr root
      • gpasswd是操作/etc/group的administrator,可以对组添加或删除member,增加密码等等
      • 把用户sr添加到root组中,添加完运行id sr=>uid=500(sr) gid=500(sr) groups=500(sr),0(root)
      • -a, append
    • 从组中删除用户gpasswd -d sr root
      • 把用户sr从root组中删除

    Linux 有三种权限更改方式:chmod/acl/sudo

    • 前两者用来更改文件权限,sudo用来更改应用程序或者是命令的执行权限
    • chmod的局限是无法实现多种权限分配(用户群体只有三种),面对多权限时需要用ACL进行设置

    Chmod

    chmod (agou)(+-)(rwx) filename

    • agou 表示文件权限更改影响的范围,分别代表all, group, others, user
    • +-表示增加或者删除权限
    • rwx表示具体的权限类型
    • chmod a+x test.txt 表示给test.txt的所有使用者增加执行权限
    • chmod a-x,a-w test.txt 表示去除所有人执行和更改test.txt的权限

    chmod XXX filename

    • 三类用户一起设置,第一个X代表所有者,第二个X代表所属组,第三个X代表其他
    • r(4) w(2) x(1): chmod 755 test.txt test.txtowner设置rwx的权限,给其他所有用户设置rx权限因为要计算每一种用户的权限,多用于批量处理权限。对用户单独设置权限多用英文,而非数字

    权限细化的问题,chmod最多只有三个权限组,当有多个用户,并且每个用户的权限都不一样时,chmod有局限性。

    ACL(setfacl/getfacl)

    文件和文件夹的权限:

    • 如果有多个用户组,权限设置是很复杂的事情,需要仔细规划(ACLChmod混合使用容易产生一些权限问题,建议单独使用)
    • 文件夹的读权限:可以列出目录下内容
    • 文件夹执行权限:可以进入到文件夹中,执行切换目录等操作
    • 文件夹的写权限:可以在文件夹中增删文件
    • 用户对某个文件有了rwx权限,不代表用户有权删除该文件,只代表对文件内容有了删除权限,要能对文件级别进行操作,需要设置相应的文件夹的w权限。

    getfacl filename/filedirectory

    • 查看文件/文件夹 权限:结果会展示usergroupother的整体权限,以及特殊用户的权限

    setfacl -m u:username:rwx filename

    • 给某个用户添加对某个文件或者文件夹的特殊权限
    • 给普通用户添加完相应权限以后,root也会有相应的权限(理论上root拥有最多的权限)

    setfacl -x u:username filename

    • 删除用户对某个文件或者是文件夹的特殊权限

    SUDO

    简介

    • 不同于chmod/acl 设置某个文件的权限,sudo主要是为非root用户增加系统的处理和执行权限。比如只有rootuseradd权限,通过sudo,可以为普通用户增加useradd权限。
    • 为普通用户增加权限有两种方式:带密码验证和不带密码验证,并且可以指定sudo可运行的机器。
    • 使用sudo有两个步骤:1. visudo编辑权限 2. 普通用户在使用命令前添加sudo

    创建无密码sudo(执行脚本时通常采用无密码sudo)

    • 编辑visudo 运行visudo 采用Vim编辑器编辑添加 sr localhost=NOPASSWD/usr/sbin/useradd,给用户sr添加“添加用户”的超级权限
    • 切换到sr用户
    • sudo useradd testadd,在sr模式下添加新的用户

    创建有密码sudo(可以确保有密码用户才使用此命令)

    • 编辑visudo 运行visudo 采用Vim编辑器编辑添加 sr localhost=/usr/sbin/useradd,给用户sr添加“添加用户”的超级权限
    • 切换到sr用户
    • sudo useradd testadd,系统会弹出命令提示,验证完命令以后sr可以成功添加用户      
  • 相关阅读:
    公司初创期使用 PHP,为什么很多公司都会慢慢转型到 JAVA
    Firefox 如何对发送的参数进行调试
    Spring security CSRF 跨域访问限制问题
    IntelliJ IDEA 的 Maven 如何设置自动下载源代码和文档
    Spring 的 WebSecurityConfigurerAdapter 过滤器
    Java NIO Path 接口
    Joda-Time – 可用的时区列表
    JWT 如何解码和获得令牌失效的日期
    MySQL索引相关操作
    详细了解INNODB_TRX、INNODB_LOCKs、INNODB_LOCK_waits、PROCESSLIST表
  • 原文地址:https://www.cnblogs.com/vivian-test/p/5071488.html
Copyright © 2020-2023  润新知