zoukankan      html  css  js  c++  java
  • Linux 用户账号与权限管理

    CentOS-Logo

    Linux中,如何管理用户、管理权限?请看下文,谢谢配合。


    用户、组概述

    用户分类

    • 超级用户:root,人为交互最高权限用户,system为最高权限用户。

    • 普通用户:通过管理管理员创建,权限受到一定限制。

    • 程序用户:不允许登陆,维持系统或某个程序的正常运行。

    用户配置文件

    • /etc/passwd:包含用户账号的基本信息
    [root@localhost ~]# head -2 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    
    账号名称:密码占位符:UID:GID:用户说明:家目录:登陆shell
    
    • /etc/shadow:包含用户账号的密码信息(影子文件)
    [root@localhost ~]# head -1 /etc/shadow
    root:$6$4/ne8o5V38hiA2jr$6SclA1hllj8FPXqyMtfof5T4NMH1gJeDQ31AfoR4wapYPBQWlbZQKKPkuUBWoqgwA1GsuHW.1lTg59tyfrwvC/::0:99999:7:::
    
    账号名称:密码信息:上次修改密码的时间:密码最短有效天数:密码最长有效天数:提前7天警告密码将过期:密码过期后多少天内禁用此用户:账号失效时间:保留字段
    
    • 个别详细解释

    密码信息:MD5加密的密码字串信息;为*!!时,被锁定,不能登陆;为空,无密码。

    上次修改密码的时间:表示从1970年1月1日到最近一次修改密码那天所间隔的天数。

    密码最短有效天数:修改密码后,最少经过多少天才能再次修改密码。默认为0,不限制。

    密码最长有效天数:修改密码后,经过该天数,必须再次修改密码。默认为99999,不限制。

    提前7天警告密码将过期:默认值为7

    账号失效时间:指定用户账号作废的天数,从1970年1月1日起计算。

    组分类

    • 基本组(私有组):伴随用户的创建而创建,与用户同名。用户只能属于一个基本组,在/etc/passwd中查看。

    • 附加组(公共组):用户可属于多个附加组,在/etc/group中查看。

    组配置文件

    • /etc/group:包含组的基本信息

    • /etc/gshadow:包含组的密码信息

    1.查询root组包含哪些用户

    [root@localhost ~]# grep "^root" /etc/group
    root:x:0:
    

    2.查询那些组包含root用户

    [root@localhost ~]# grep "root" /etc/group
    root:x:0:
    

    UID 和 GID

    • UID:用户识别号
    用户 UID 范围
    root 0
    程序用户 1 ~ 999
    普通用户 1000 ~ 60000
    • GID:组识别号

    用户、组管理

    useradd

    • 添加用户账号

    -u:指定UID
    -d:指定家目录位置
    -e:指定账户失效时间,YYYY-MM-DD天数
    -g:指定基本组名称或GID
    -G:指定附加组
    -M:不创建宿主目录
    -s:指定用户的登陆shell/bin/bash可登录,/sbin/nologin不可登录。

    [root@localhost ~]# useradd  -d /zhangsan zhangsan
    
    [root@localhost ~]# useradd -e 2020-01-01 -s /sbin/nologin ftpuser
    

    用户账号初始配置文件

    • 来源:模板目录/etc/skel
    • 用途:可以做一些自动运行的后台管理任务
    [root@localhost ~]# ls -a /zhangsan/
    .  ..  .bash_logout  .bash_profile  .bashrc
    

    .bash_logout:每次退出登陆时执行
    .bash_profile:用户每次登陆时被执行
    .bashrc:每次加载/bin/bash时执行,包括登录系统。

    • 每次登出时清空历史记录
    [root@localhost ~]# vi .bash_logout
    # ~/.bash_logout
    history -c
    

    passwd

    • 设置、更改密码

    -d:清空账户密码
    -l:锁定账户
    -S:查看账户状态
    -u:解锁账户

    [root@localhost ~]# passwd zhangsan
    Changing password for user zhangsan.
    New password:
    BAD PASSWORD: The password is a palindrome
    Retype new password:
    passwd: all authentication tokens updated successfully.
    
    [root@localhost ~]# passwd -l zhangsan
    Locking password for user zhangsan.
    passwd: Success
    [root@localhost ~]# passwd -S zhangsan
    zhangsan LK 2019-08-20 0 99999 7 -1 (Password locked.)
    [root@localhost ~]# passwd -u zhangsan
    Unlocking password for user zhangsan.
    passwd: Success
    [root@localhost ~]# passwd -S zhangsan
    zhangsan PS 2019-08-20 0 99999 7 -1 (Password set, SHA512 crypt.)
    
    [root@localhost ~]# passwd -d zhangsan
    Removing password for user zhangsan.
    passwd: Success
    

    usermod

    • 修改账户属性,参数类似useradd

    -u:修改用户UID
    -d:修改家目录位置
    -e:修改账号失效时间
    -s:指定用户的登陆shell
    -l:更改用户登陆名称
    -L:锁定账户
    -U:解锁账户
    -g:修改用户的基本组(或GID
    -G:修改用户的附加组(或GID

    [root@localhost ~]# tail -1 /etc/passwd
    zhangsan:x:1001:1001::/zhangsan/:/bin/bash
    [root@localhost ~]# mv /zhangsan/ /home/
    [root@localhost ~]# usermod -d /home/zhangsan/ zhangsan
    [root@localhost ~]# tail -1 /etc/passwd
    zhangsan:x:1001:1001::/home/zhangsan/:/bin/bash
    
    [root@localhost ~]# usermod -L zhangsan
    [root@localhost ~]# passwd -S zhangsan
    zhangsan LK 2019-08-20 0 99999 7 -1 (Password locked.)
    [root@localhost ~]# usermod -U zhangsan
    [root@localhost ~]# passwd -S zhangsan
    zhangsan PS 2019-08-20 0 99999 7 -1 (Password set, SHA512 crypt.)
    
    [root@localhost ~]# usermod -l lisi zhangsan
    [root@localhost ~]# tail -1 /etc/passwd
    lisi:x:1001:1001::/home/zhangsan/:/bin/bash
    

    userdel

    • 删除用户账号

    -r:同时删除家目录

    [root@localhost ~]# userdel -r zhangsan
    [root@localhost ~]# ls /home/zhangsan
    ls: cannot access /home/zhangsan: No such file or directory
    

    groupadd

    • 添加组账号

    -g:指定GID

    [root@localhost ~]# groupadd ftpusers
    [root@localhost ~]# tail -1 /etc/group
    ftpusers:x:1001:
    
    [root@localhost ~]# groupadd -g 1005 sftpusers
    [root@localhost ~]# tail -2 /etc/group
    ftpusers:x:1001:
    sftpusers:x:1005:
    

    gpasswd

    • 添加、设置、删除组成员

    -a:添加组成员
    -d:删除组成员
    -M:指定组成员,多个以,分隔,会覆盖原有的。

    [root@localhost ~]# useradd ftp1
    [root@localhost ~]# useradd ftp2
    [root@localhost ~]# useradd ftp3
    [root@localhost ~]# useradd ftp4
    [root@localhost ~]# useradd ftp5
    [root@localhost ~]# echo "000000" | passwd --stdin ftp1
    Changing password for user ftp1.
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# echo "000000" | passwd --stdin ftp2
    Changing password for user ftp2.
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# echo "000000" | passwd --stdin ftp3
    Changing password for user ftp3.
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# echo "000000" | passwd --stdin ftp4
    Changing password for user ftp4.
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# echo "000000" | passwd --stdin ftp5
    Changing password for user ftp5.
    passwd: all authentication tokens updated successfully.
    
    [root@localhost ~]# gpasswd -a ftp1 ftpusers
    Adding user ftp1 to group ftpusers
    [root@localhost ~]# gpasswd -a ftp2 ftpusers
    Adding user ftp2 to group ftpusers
    [root@localhost ~]# groups ftp1
    ftp1 : ftp1 ftpusers
    [root@localhost ~]# groups ftp2
    ftp2 : ftp2 ftpusers
    [root@localhost ~]# grep "^ftpusers" /etc/group
    ftpusers:x:1001:ftp1,ftp2
    
    [root@localhost ~]# gpasswd -M ftp3,ftp4,ftp5 ftpusers
    [root@localhost ~]# grep "^ftpusers" /etc/group
    ftpusers:x:1001:ftp3,ftp4,ftp5
    

    groupdel

    • 删除组账号
    [root@localhost ~]# groupdel sftpusers
    

    用户、组查询

    id

    • 查询用户账号的身份标识

    id [username]

    [root@localhost ~]# id root
    uid=0(root) gid=0(root) groups=0(root)
    

    groups

    • 查询用户账号所属的组

    groups [username]

    [root@localhost ~]# groups root
    root : root
    

    finger

    • 查询用户账号的登陆属性

    finger [username]

    [root@localhost ~]# finger root
    Login: root                             Name: root
    Directory: /root                        Shell: /bin/bash
    On since Tue Aug 20 16:58 (CST) on pts/0 from 192.168.128.1
       6 seconds idle
    No mail.
    No Plan.
    

    可能需要安装:yum install finger -y

    w、who、users

    • 查询当前主机的用户登陆情况
    [root@localhost ~]# w
     17:35:34 up  2:48,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.128.1    16:58    6.00s  0.21s  0.01s w
    [root@localhost ~]# who
    root     pts/0        2019-08-20 16:58 (192.168.128.1)
    [root@localhost ~]# users
    root
    

    last

    • 查询最近登陆的用户信息
    [root@localhost ~]# last
    root     pts/0        192.168.128.1    Tue Aug 20 17:36   still logged in
    reboot   system boot  3.10.0-693.el7.x Tue Aug 20 17:36 - 17:37  (00:01)
    reboot   system boot  3.10.0-693.el7.x Fri Aug 16 17:18 - 17:21  (00:03)
    
    wtmp begins Fri Aug 16 17:18:08 2019
    

    文件、目录权限及归属

    概述

    [root@promote ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 846 Aug 16 17:15 /etc/passwd
    

    -:文件类型,-普通文件、d目录、b块设备文件、c字符设备文件、l链接文件。
    rw-:User,属主用户对文件的访问权限。
    r--:Group,属组内成员对文件的访问权限。
    r--:Other,其他用户对文件的访问权限。
    .:与SELinux有关
    root:文件属主
    root:文件属组

    chmod

    • 设置文件、目录权限

    chmod [ugoa] [+-=] [rwx] 文件或目录

    ugoau宿主,g属组,o其他用户,a所有用户。
    +-=+增加权限,-减少权限,=设置对应的权限。
    rwxr读,w写,x执行。

    [root@localhost ~]# ls -l test.txt
    -rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt
    [root@localhost ~]# chmod g+w,o+w test.txt
    [root@localhost ~]# ls -l test.txt
    -rw-rw-rw-. 1 root root 0 Aug 20 18:19 test.txt
    

    chmod nnn 文件或目录

    nnn:代表ugo分别设置的权限值

    r w x
    4 2 1
    [root@localhost ~]# chmod 644 test.txt
    [root@localhost ~]# ls -l test.txt
    -rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt
    

    chown

    • 设置文件、目录的归属

    chown [选项] [属主][:[属组]] 文件或目录

    -R:递归修改

    [root@localhost ~]# mkdir /opt/test
    [root@localhost ~]# touch /opt/test/test{1,2}.txt
    [root@localhost ~]# ls -lR /opt/
    /opt/:
    total 0
    drwxr-xr-x. 2 root root 40 Aug 20 18:26 test
    
    /opt/test:
    total 0
    -rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
    -rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
    [root@localhost ~]# useradd zhangsan
    [root@localhost ~]# echo "000000" | passwd --stdin zhangsan
    Changing password for user zhangsan.
    passwd: all authentication tokens updated successfully.
    
    [root@localhost ~]# chown -R zhangsan /opt/test/
    [root@localhost ~]# ls -lR /opt/
    /opt/:
    total 0
    drwxr-xr-x. 2 zhangsan root 40 Aug 20 18:26 test
    
    /opt/test:
    total 0
    -rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test1.txt
    -rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test2.txt
    [root@localhost ~]# chown -R :zhangsan /opt/test/
    [root@localhost ~]# ls -lR /opt/
    /opt/:
    total 0
    drwxr-xr-x. 2 zhangsan zhangsan 40 Aug 20 18:26 test
    
    /opt/test:
    total 0
    -rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test1.txt
    -rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test2.txt
    [root@localhost ~]# chown -R root:root /opt/test/
    [root@localhost ~]# ls -lR /opt/
    /opt/:
    total 0
    drwxr-xr-x. 2 root root 40 Aug 20 18:26 test
    
    /opt/test:
    total 0
    -rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
    -rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
    

    umask

    • 指定用户在新建文件或目录时的权限默认值,指默认值需要减掉的权限。777-022=755,666-022=644。

    默认:umask 022

  • 相关阅读:
    关于java中的继承
    jdk?jre?
    spring AOP的两种配置
    ng-repeat如何限制循环次数
    AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label
    Anjular的ng-repeat
    SpringBoot扫描不到类,注入失败A component required a bean of type 'XXService' that could...
    React路由安装使用和多种方式传参
    Vue详细介绍模板语法和过滤器的使用!
    Vue定义组件和生命周期函数及实例演示!
  • 原文地址:https://www.cnblogs.com/llife/p/11380864.html
Copyright © 2011-2022 走看看