zoukankan      html  css  js  c++  java
  • Linux用户组和权限管理

    Linux用户组和权限管理
    Linux安全模型
    资源分派:
    用户登录成功后,系统自动分配令牌token,包括用户标识和组成员信息。

    用户:
    Linux每个用户都是通过User Id (UID)唯一标识的
    管理员:root,0
    普通用户:1-60000 自动分配
    系统用户:1-499 (centos6之前),1-999(centos7之后)
    对守护进程获取资源进行权限分配
    登录用户:500+(centos6之前),1000+(centos7之后)
    给用户进行交互式登录使用
    用户组:
    管理员组:root,0
    普通组:
    系统组:1-499(centos6之前),1-999(centos7之后)
    普通组:500+(centos6之前),1000+(centos7之后)

    用户和组的关系:
    一个用户必须属于一个且只有一个主组,
    默认创建用户时会自动创建和用户名同名的组,作为用户名的主要组,
    由于此组中只有一个用户,又称为私有组。
    默认情况下一个账号只有一个组,后续可以加辅加组。
    用户名和组名可以重名(windows中不允许用户名和组名同名)

    安全上下文:
    运行的程序,即进程,以进程发起者的身份运行,进程访问资源的权限由用户

    用户和组的配置文件:(man 5 配置文件帮助)和文件格式
    /etc/passwd 用户账号信息(man 5 passwd) 用户名;密码;uid;gid;账户描述;家目录;shell类型
    /etc/shadow 用户口令信息 用户名;加密口令;更改口令时间;口令最短有效期;口令最长有效期;提前天数通知;账户有效期
    /etc/group 用户组信息 组名;口令;gid;组成员(附加组)
    /etc/gshadow 用户组口令信息(实现组成员调整)组名;口令;组管理员
    (口令被锁定显示为!,双重保险!!)
    (group和gshadow 文件里每个用户最后显示组成员必须一致)
    命令:getent 查看用户文件
    getent passwd 用户
    getent shadow 用户
    生成随机口令:
    tr -dc '[:alnum:]' < /dev/urandom |hand -c 12
    openssl rand -base64 9
    加密口令:
    $6:sha512 哈希算法 散列算法

    还原旧设置(故障还原)
    sudo vi /etc/passwd
    sudo -i wang vi /etc/passwd

    文件操作
    pwck 查看命令
    grp 检查group

    用户和组管理命令
    用户管理命令
    useradd
    usermod
    userdel
    组帐号维护命令
    groupadd
    groupmod
    groupdel

    用户创建
    useradd 创建用户(新建用户账号文件存在隐藏文件)
    -u UID
    -o 配合-u 选项,不检查UID的唯一性
    -g GID 指明用户所属基本组,可为组名,也可以GID
    -c "COMMENT“ 用户的注释信息
    -d HOME_DIR 以指定的路径(不存在)为家目录
    -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
    -G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
    -N 不创建私用组做主组,使用users组做主组
    -r 创建系统用户 CentOS 6之前: ID<500,CentOS 7以后: ID<1000
    -m 创建家目录,用于系统用户
    -M 不创建家目录,用于非系统用户
    windows创建账号:
    net user 用户名 密码 /add

    显示或更改默认设置
    useradd -D
    useradd –D -s SHELL
    useradd –D –b BASE_DIR
    useradd –D –g GROUP

    新建用户的相关文件
    /etc/default/useradd 创建用户目录(useradd命令默认文件夹)
    /etc/skel/* 新建账号默认文件夹
    /etc/login.defs 账号配置文件
    如果新建用户home目录删除,可以从/etc/skel文件中将配置文件拷贝到新建的home文件中:
    cp /etc/skel/.[^.]* /home/test/ (test为新账户名)
    cp -r /etc/skel/. /home/test/ .表示当前文件夹的所有文件,与-r配合使用
    cp -r /etc/skel /home/test

    批量创建用户
    newusers passwd 格式文件  
    批量修改用户口令
    echo username:passwd | chpasswd

    用户属性修改
    usermod 命令可以修改用户属性
    常见选项:
    -u UID: 新UID
    -g GID: 新主组
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使
    用-a选项
    -s SHELL:新的默认SHELL
    -c 'COMMENT':新的注释信息
    -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
    -l login_name: 新的名字
    -L: lock指定用户,在/etc/shadow 密码栏的增加 !
    -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
    -e YYYY-MM-DD: 指明用户账号过期日期
    -f INACTIVE: 设定非活动期限,即宽限期

    删除用户
    userdel 删除用户(不会删除家目录及相关信息)
    userdel -r 删除用户(所有相关信息)
    userdel -f, --force   强制删除

    查看用户相关的ID信息
    id 命令可以查看用户的UID,GID等信息
    常见选项:
    -u: 显示UID
    -g: 显示GID
    -G: 显示用户所属的组的ID
    -n: 显示名称,需配合ugG使用

    切换用户
    su 切换用户身份
    su 用户名 不完全切换 保留原账户信息 可保留原账户切换时的目录
    su - 用户名 完全切换
    说明:root su至其他用户无须密码;非root用户切换时需要密码
    用exit退出当前身份,不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
    su - 用户 -c "口令" 直接切换执行口令后退回

    Ubuntu不能切换root身份:getent passwd 口令加!被锁定
    修改:passwd 修改用户口令
    ll /bin/false
    usermod -s 修改信息(永久更改)

    修改密码:
    passwd
    常用选项:
    -d:删除指定用户密码
    -l:锁定指定用户
    -u:解锁指定用户
    -e:强制用户下次登录修改密码(将getent passwd 中口令使用时间改为0,使密码到期)
    -f:强制操作
    -n mindays:指定最短使用期限
    -x maxdays:最大使用期限
    -w warndays:提前多少天开始警告
    -i inactivedays:非活动期限
    --stdin:从标准输入接收用户密码,Ubuntu无此选项

    修改密码策略:
    chage 可以修改用户密码策略
    change -l 用户 查看口令信息显示密码策略
    change -d 用户更改口令时间
    change -m --mindays MIN_DAYS
    change -M --maxdays MAX_DAYS
    change -W --warndays WARN_DAYS
    change -I --inactive INACTIVE #密码过期后的宽限期
    change -E --expiredate EXPIRE_DATE #用户的有效期

    用户相关的其它命令
    chfn 指定个人信息
    chsh 指定shell,相当于usermod -s
    finger 可看用户个人信息

    创建组
    groupadd实现创建组
    常见选项:
    g GID 指明GID号;[GID_MIN, GID_MAX]
    -r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000

    修改组
    groupmod 组属性修改
    常见选项:
    -n group_name: 新名字
    -g GID: 新的GID

    组删除
    groupdel 可以删除组
    -f, --force 强制删除,即使是用户的主组也强制删除组

    groupmems,gpasswd,usermod 三个命令都可以修改组。

    更改组密码
    gpasswd命令,可以更改组密码,也可以修改附加组的成员关系
    常见选项:
    -a user 将user添加至指定组中
    -d user 从指定附加组中移除用户user
    -A user1,user2,... 设置有管理权限的用户列表

    临时切换主组
    newgrp 命令可以临时切换主组, 如果用户本不属于此组,则需要组密码
    格式:newgrp [-] [group]

    更改和查看组成员
    groupmems 可以管理附加组的成员关系
    常见选项:
    -g, --group groupname   #更改为指定组 (只有root)
    -a, --add username     #指定用户加入组
    -d, --delete username #从组中删除用户
    -p, --purge               #从组中清除所有成员
    -l,  --list                #显示组成员列表


    文件权限管理
    ll 显示权限

    设置文件的所有者chown
    chown 修改文件所有者,也可以修改文件属组
    用法说明:
    OWNER   #只修改所有者
    OWNER:GROUP #同时修改所有者和属组
    :GROUP   #只修改属组,冒号也可用 . 替换
    --reference=RFILE  #参考指定的的属性,来修改  
    -R #递归,此选项慎用,非常危险!

    设置文件的属组信息chgrp
    chgrp 命令可以只修改文件的属组
    格式
    chgrp [OPTION]... GROUP FILE...
    chgrp [OPTION]... --reference=RFILE FILE...
    -R 递归

    文件权限
    文件的权限主要针对三类对象进行定义
    owner 属主, u
    group 属组, g
    other 其他, o
    注意:用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即
    生效,不再向右查看其权限
    每个文件针对每类访问者都定义了三种常用权限
    每个文件针对每类访问者都定义了三种权限
    r Readable 读
    w Writable 写
    x eXcutable 执行

    对文件的权限:
    r 可使用文件查看类工具,比如:cat,可以获取其内容
    w 可修改其内容
    x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

    对目录的权限:
    r 可以使用ls查看此目录中文件列表
    w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
    x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
    X 只给目录x权限,不给无执行权限的文件x权限

    数学法的权限
    八进制数字
    --- 000 0
    --x 001 1
    -w- 010 2
    -wx 011 3
    r-- 100 4
    r-x 101 5
    rw- 110 6
    rwx 111 7
    注意:只要数字有基数,肯定有x权限

    chmod 修改文件权限
    格式
    chmod [OPTION]... MODE[,MODE]... FILE...
    chmod [OPTION]... OCTAL-MODE FILE...
    #参考RFILE文件的权限,将FILE的修改为同RFILE
    chmod [OPTION]... --reference=RFILE FILE...

    说明
    mode: who opt permission
    who:u,g,o,a(all) 所有者,所属组,其他人,所有人
    opt :+ ,-,=
    permission:r,w,x
    u= g= o= ug= a= u=,g= 修改指定一类用户的所有权限
    u+ u- g+ g- o+ o- a+ a- + - 修改指定一类用户某个或某个权限
    -R : 递归修改权限
    有执行权限和写权限才可删除文件,一个文件是否可以删除和文件本身无关,和他所在文件夹权限有关
    文件夹没有执行权限就无法进入文件夹

    新建文件和目录的默认权限
    umask 的值可以用来保留在创建文件权限
    实现方式:
    新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
    新建目录的默认权限: 777-umask
    非特权用户umask默认是 002
    root的umask 默认是 022

    umask 查看umask
    umask –S #模式方式显示
    umask –p #输出可被调用

    持久保存umask
    全局设置: /etc/bashrc
    用户设置:~/.bashrc

    Linux文件系统上的特殊权限
    特殊权限SUID
    前提:进程有属主和属组;文件有属主和属组
    1. 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
    2. 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
    3. 进程访问文件时的权限,取决于进程的发起者
    (a) 进程的发起者,同文件的属主:则应用文件属主权限
    (b) 进程的发起者,属于文件属组;则应用文件属组权限
    (c) 应用文件“其它”权限
    二进制的可执行文件上SUID权限功能:
    任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
    启动为进程之后,其进程的属主为原程序文件的属主
    SUID只对二进制可执行程序有效
    SUID设置在目录上无意义

    SUID权限设定:
    chmod u+s FILE...
    chmod 6xxx FILE
    chmod u-s FILE..

    特殊权限SGID
    二进制的可执行文件上SGID权限功能:
    任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
    启动为进程之后,其进程的属组为原程序文件的属组

    SGID权限设定:
    chmod g+s FILE...
    chmod 2xxx FILE
    chmod g-s FILE...

    目录上的SGID权限功能:
    默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有
    写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录
    SGID权限设定:
    chmod g+s DIR...
    chmod 2xxx DIR
    chmod g-s DIR...

    注意:suid sgid 所有者 ,所属组 (只支持二进制可执行程序文件)

    特殊权限 Sticky 位
    具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
    在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
    sticky 设置在文件上无意义

    Sticky权限设定:
    chmod o+t DIR...
    chmod 1xxx DIR
    chmod o-t DIR...

    特殊权限数字法
    SUID SGID STICKY
    000 0
    001 1
    010 2
    011 3
    100 4
    101 5
    110 6
    111 7
    范例: chmod 4777 /tmp/a.txt

    总结:
    sticky dir (1)(ll -d /tmp 该权限要删除只能是删自己的文件)
    sgid dir (2777 文件下的文件由该文件继承所属组)
    suid file (4) chmod 4755
    sgid file (2) chmod 2755
    去除权限: chmod 755

    df -T 查看文件系统类型
    新建文件临时修改权限:
    ( umask 数字;touch /data/f1.txt) ( )临时修改文件权限生效

    设定文件特殊属性:
    设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件
    chattr 设定文件属性
    +i 不能删除只能改名
    +a 只能追加内容
    lsattr 查看文件

    访问控制列表

    ACL权限(影响指定用户,不能限制root),其他身份修改用户权限
    除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
    CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
    CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

    ACL生效顺序:
    所有者,自定义用户,所属组|自定义组,其他人

    ACL相关命令
    setfacl 设置ACL权限
    setfacl -m u:用户:rwx 文件 创建权限
    setfacl -x u:用户 文件 删除用户权限
    setfacl -b 文件 全部删除权限
    getfacl 文件 查看ACL设置的权限

    mask权限(
    影响除了所有者和other的用户)用户权限不能比mask权限高
    mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

    setfacl -m mask::rwx 文件
    chmod g=rwx 文件

    备份和还原ACL
    主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不
    会保留目录和文件的ACL信息

  • 相关阅读:
    Gated Recurrent Unit (GRU)
    Long Short-Term Memory (LSTM)
    GBDT && XGBOOST
    记录一次网站打开卡--排故障过程
    linux下mysql5.5 5.6 5.7安装教程
    tomcat无法正常shutdown
    linux服务器被入侵的解决方法
    线上CPU 占用300%多-故障解决
    6流程控制-while
    7 流程控制-for序列 for字典
  • 原文地址:https://www.cnblogs.com/llliuhuiii/p/12685242.html
Copyright © 2011-2022 走看看