zoukankan      html  css  js  c++  java
  • Linux系统管理之用户和组

    用户和组管理

    多用户操作系统和单用户操作系统

    单用户操作系统只能同时一个用户在线,而多用户操作系统可以同时多人在线。Linux中多用户之间的切换alt+F1到F7,alt+f7是图形模式,其它是命令行模式。

    在windows中创建用户的命令

    net user zhang 123 /add

    将用户添加到管理员组

    net localgroup administrators zhang /add

    更改用户密码

    net user administrator a1!

    查看用户身份

    Whoami /all

    用户登录身份和权限

    创建用户

    [root@learn ~]# useradd zhangql

    查看用户id

    [root@learn ~]# id zhangql

    uid=502(zhangql) gid=502(zhangql) groups=502(zhangql)

    创建组

    [root@learn ~]# groupadd teachers

    把用户加入到组

    [root@learn ~]# usermod -a -G teachers zhangql

    再次查看用户id会发现所属组的不同

    [root@learn ~]# id zhangql

    uid=502(zhangql) gid=502(zhangql) groups=502(zhangql),503(teachers)

    Linux中用户和组管理

    用户类别

    管理员

    默认名是root ; UID 是0

    普通用户 UID 取值范围1-65536

    系统用户UID 取值范围1-499 专门用来运行服务的账户,不需要登录系统

    普通用户UID 取值范围500-1000 用来登录Linux系统

    用户UID定义的文件

    [root@learn ~]# cat /etc/login.defs |grep -v '^#'|grep -v '^$'

    MAIL_DIR /var/spool/mail

    PASS_MAX_DAYS 99999

    PASS_MIN_DAYS 0

    PASS_MIN_LEN 5

    PASS_WARN_AGE 7

    UID_MIN   500

    UID_MAX 60000

    GID_MIN   500

    GID_MAX 60000

    CREATE_HOME yes

    UMASK           077

    USERGROUPS_ENAB yes

    ENCRYPT_METHOD SHA512

    组类别

    管理员组

    普通组

    系统组

    一般组

    使用组简化授权

    Linux中有基本组,附加组,私有组。

    优先使用基本组,用户只能属于一个基本组,也是用户的默认组

    基本组不能满足授权要求时创建附加组,用户可以属于多个附加组

    私有组是创建用户时如果没有指定基本组,系统会创建和用户同名的一个组

    管理Linux用户

    passwd文件结构

    Linux用户存放的位置  /etc/passwd

    [root@learn ~]# head -1 /etc/passwd

    root:x:0:0:root:/root:/bin/bash

    文件以":"分隔说明每段信息含义

    account 用户登录名

    password 用户密码

    UID 用户的ID

    GID 用户的基本组ID

    comment 注释

    home 用户主目录

    shell 分配给用户的shell

    查看linux有可用的shell

    [root@learn ~]# cat /etc/shells

    /bin/sh

    /bin/bash

    /sbin/nologin

    /bin/dash

    /bin/tcsh

    /bin/csh

    shadow文件结构

    Linux的密码信息和用户信息的安全信息不一样单独用一个文件存放/etc/shadow

    [root@learn ~]# tail -1 /etc/shadow

    zhangql:$6$0j5kYvjn$Z6rOWcSE4oZHF1KyycmkLrnFfkMfHWdyQxh1z.DteqPpfgQRBsOr4FDXbJ.eFFgsszfuEfZnccYS0TSFxIEHS.:17349:0:99999:7:::

    文件以":"号分隔说明每段信息含义

    用户名

    加密后的密码

    从1970年到最近一次更改密码时间之间过了多少天

    密码最少使用几天

    密码最长使用多少天

    密码到期前几天提醒用户更改密码

    密码过期时间

    用户过期时间

    chage

    修改账户相关时间

    -d 设置最近一次更改密码时间

    -E 设置账户过期时间

    -I(大写i) 设置密码账户过期时间

    -l --list 列出用户账户密码信息

    -m 设置用户最短密码使用时间

    -M 设置用户最大密码使用时间

    -W 设置密码更改警告时间

    [root@learn ~]# chage -I 5  zhangql

    [root@learn ~]# chage -M 5  zhangql

    [root@learn ~]# chage -m 2  zhangql

    [root@learn ~]# chage -d "2017-7-3"  zhangql

    [root@learn ~]# chage -l zhangql

    Last password change : Jul 03, 2017

    Password expires : Jul 08, 2017

    Password inactive : Jul 13, 2017

    Account expires : never

    Minimum number of days between password change : 2

    Maximum number of days between password change : 5

    Number of days of warning before password expires : 7

    useradd

    创建用户

    adduser-->useradd,adduser链接到useradd本身

    -u 指定用户的UID 大于500并且不能和现有用户UID重

    -g 指定用户的基本组

    -G 可以为用户指定多个附加组,指定多个附加组用逗号隔开

    -c 为用户添加注释信息

    -d 为用户指定家目录

    -s 为用户指定shell的路径,最好是/etc/shells文件内的shell因为它是安全的 shell

    -m 如果用户的家目录不存在,强制创建,默认执行

    -M 不给用户创建家目录

    -r 创建系统账户 ID号1-499之间

    [root@learn ~]# useradd -u 5000 -g students -G moniter,partmember -c "The 2017 new student" -d /home/zhang -s /bin/bash

    如果用户shell是/bin/nologin表示不能登录

    定义创建新用户的行为文件

    [root@learn ~]# grep -v "^#" /etc/login.defs

    新用户家目录文件来自/etc/skel/

    [root@learn ~]# ls -a /etc/skel

    .  ..  .bash_logout  .bash_profile  .bashrc

    usermod

    修改用户user modify

    -u 修改用户UID

    -g 修改用户所属基本组GID

    -G 修改用户附加组(默认清除原有附加组),使用逗号隔开多个附加组

    -a -G 将用户添加到新的附加组

    -c 修改用户的注释信息

    -md 移动用户家目录到新位置

    -d 指定用户家目录到新位置

    -s 更改用户shell

    -l 更改用户登录名

    -L 锁定用户(禁用)

    -U 解锁用户

    chsh

    更改用户shell

    [root@learn ~]# chsh lisi

    Changing shell for lisi.

    New shell [/bin/bash]: /bin/sh

    Shell changed.

    finger

    查询用户信息以及登录信息

    需要先安装finger

    1、挂载光驱

    [root@learn cdrom]# mount /dev/cdrom /mnt/cdrom/

    mount: block device /dev/sr0 is write-protected, mounting read-only

    2、查找finger

    root@learn cdrom]# find -name "finger*"

    ./Packages/finger-0.17-40.el6.x86_64.rpm

    ./Packages/finger-server-0.17-40.el6.x86_64.rpm

    3、rpm安装finger ,-i是install

    [root@learn cdrom]# rpm -i Packages/finger-0.17-40.el6.x86_64.rpm

    [root@learn cdrom]# finger lisi

    Login: lisi            Name:

    Directory: /home/lisi                Shell: /bin/sh

    Never logged in.

    No mail.

    No Plan.

    chfn

    修改用户扩展属性

    [root@learn cdrom]# chfn lisi

    Changing finger information for lisi.

    Name []: li

    Office []: 007

    Office Phone []: 00000

    Home Phone []: 0000

    passwd

    更改用户密码

    普通用户只能更改自己的密码,管理员root能够更改任何人的密码。

    使用脚本更改用户密码

    [root@learn cdrom]# echo "123" |passwd --stdin lisi

    Changing password for user lisi.

    passwd: all authentication tokens updated successfully.

    锁定用户

    [root@learn cdrom]# passwd -l lisi

    Locking password for user lisi.

    passwd: Success

    解锁用户

    [root@learn cdrom]# passwd -u lisi

    Unlocking password for user lisi.

    passwd: Success

    清除用户密码

    [root@learn cdrom]# passwd -d lisi

    Removing password for user lisi.

    passwd: Success

    pwck

    检查用户完整性

    [root@learn cdrom]# pwck

    user 'adm': directory '/var/adm' does not exist

    user 'uucp': directory '/var/spool/uucp' does not exist

    user 'gopher': directory '/var/gopher' does not exist

    user 'ftp': directory '/var/ftp' does not exist

    user 'saslauth': directory '/var/empty/saslauth' does not exist

    pwck: no changes

    whoami

    查看当前登录的用户

    [root@learn cdrom]# whoami

    root

    who

    查看那些用户登录了linux

    [root@learn cdrom]# who

    root     tty1         2017-07-01 22:18

    root     pts/0        2017-07-04 21:07 (win-blqck1rlher.lan)

    root     pts/1        2017-07-04 21:20 (win-blqck1rlher.lan)

    userdel

    -r 删除用户相关目录

     用户相关目录:

     /etc/passwd

     /etc/shadow

     /etc/group

     /etc/gshadow

     /home/

     /var/spool/mail/

    [root@learn cdrom]# userdel -r li

    userdel: /var/spool/mail/li not owned by li, not removing

    userdel: /home/li not owned by li, not removing

    管理linux组

    groupadd

    创建组

    -g 指定组GID

    -r 指定系统组

    [root@learn ~]# groupadd -g 555 master

    [root@learn ~]# groupadd -r sus

    [root@learn ~]# tail -5 /etc/group

    lisi:x:501:

    zhangql:x:502:

    teachers:x:503:zhangql

    sus:x:499:

    master:x:555:

    groupmod

    修改组

    -g 修改组GID

    -r 修改系统组

    [root@learn ~]# groupmod -g 556 master

    [root@learn ~]# groupmod -n  masters master

    [root@learn ~]# tail -5 /etc/group

    lisi:x:501:

    zhangql:x:502:

    teachers:x:503:zhangql

    sus:x:499:

    masters:x:556:

    groupdel

    删除组

    [root@learn ~]# groupdel lisi

    gpasswd

    给组设置密码

    [root@learn ~]# gpasswd lisi

    Changing the password for group lisi

    New Password:

    Re-enter new password:

    newgrp

    切换基本组身份

    [root@learn ~]# newgrp lisi

    [root@learn ~]# id

    uid=0(root) gid=501(lisi) groups=501(lisi),0(root),502(zhangql)

    [root@learn ~]# exit

    exit

    [root@learn ~]# id

    uid=0(root) gid=502(zhangql) groups=502(zhangql),0(root),501(lisi)

    管理用户工作环境

    shell分类

    交互式shell

    等待用户输入

    执行提交的命令

    退出输入exit

    非交互式shell

    不需要等待用户输入

    执行shell脚本

    脚本执行结束shell退出

    登录shell

    需要输入用户名和密码才能进入的shell 或者加参数(-login)进入

    [root@learn ~]# su --login lisi

    非登录shell

    不需要输入用户名和密码就能登录shell

    [root@learn ~]# sh

    [root@learn ~]# bash

    [root@learn ~]# su lisi

    可通过pstree命令查看登录shell

    [lisi@learn root]$ pstree

    init─┬─ManagementAgent───2*[{ManagementAgen}]

         ├─VGAuthService

         ├─abrtd

         ├─acpid

         ├─atd

         ├─auditd───{auditd}

         ├─console-kit-dae───63*[{console-kit-da}]

         ├─crond

         ├─dbus-daemon

         ├─dhclient

         ├─hald─┬─hald-runner─┬─hald-addon-acpi

         │      │             └─hald-addon-inpu

         │      └─{hald}

         ├─login───bash

         ├─master─┬─pickup

         │        └─qmgr

         ├─5*[mingetty]

         ├─rsyslogd───3*[{rsyslogd}]

         ├─sshd───sshd───bash───bash───bash───bash───bash───su───bash───ps+

         ├─udevd───udevd

         └─vmtoolsd───{vmtoolsd}

    图形界面的linux登录后打开命令行终端

    自定义shell环境

    [lisi@learn ~]$ export PS1='[\h@\u \t]#'

    [learn@lisi 21:02:30]#

    永久保存个人shell环境

    [lisi@learn ~]$ echo "export PS1='[\h@\]u \t]# '">> .bash_profile

    [learn@lisi 21:30:12]#  cat .bash_profile |grep "exp"

    export PATH

    export PS1='[\h@\u \t]# '

    [lisi@learn ~]$ source .bash_profile

    [learn@u 21:25:50]#

    全局定义shell环境

    [lisi@learn ~]$ cat /etc/bashrc

    bash配置文件

    bash的配置文件保存用户的工作环境

    个人配置文件在用户家目录中

    ~.bash_profile       ~/.bashrc

    全局配置文件

    /etc/profile         /etc/profile.d/*.sh           /etc/bashrc

    profile类的文件  

    设定环境变量

    登录前运行的脚本和文件

    bashrc类的文件

    设定本地变量

    定义命令别名

    全局配置和个人配置设置冲突以个人配置为准,不冲突都生效

    登录式shell配置文件应用顺序

    读取顺序

    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~./bashrc  --> /etc/bashrc

    非登录式shell应用那些配置文件 应用顺序

    读取顺序

    ~/.bash_profile --> /etc/bashrc --> /etc/profile.d/*.sh

    文件和文件夹权限

    文件权限

    r 可读 用户可以使用cat查看文件的内容

    w 可写 可以编辑或删除此文件

    x 可执行 executable 针对命令文件可以授权用户可执行权限

    文件夹权限

    r 用户可以列出该文件夹内部所有文件  ls

    w 用户可以在此文件夹中创建文件和文件夹

    x 用户可以使用cd进入该文件夹 通过ls -l 查看内部文件的详细信息

    通过二进制演变成数字权限位

    000

    ---

    无权限

    0

    001

    --x

    可执行

    1

    010

    -w-

    可写

    2

    011

    -wx

    写和执行

    3

    100

    r--

    可读

    4

    101

    r-x

    读和执行

    5

    110

    rw-

    读和写

    6

    111

    rwx

    读写执行

    7

    访问文件和文件夹的三类用户

    u 属主

    g 属组

    o 其它账户

    chown

    更改文件和文件夹属主和属组

    同时更改文件夹的属主和属组

    [root@learn ~]# chown root:lisi 123

    [root@learn ~]# ll 123

    -rw-r--r-- 1 root lisi 193 Jan 28 10:24 123

    同时更改文件夹及文件夹内文件和文件夹的属主和属组

    [root@learn ~]# chown lisi:lisi -R 11/

    [root@learn ~]# ll 11

    total 0

    -rw-r--r-- 1 lisi lisi 0 Jul 12 19:39 ppt

    更改文件夹属主

    [root@learn ~]# chown lisi: 123

    [root@learn ~]# ll 123

    -rw-r--r-- 1 lisi lisi 193 Jan 28 10:24 123

    更改文件夹属组

    [root@learn ~]# chown :root 123

    [root@learn ~]# ll 123

    -rw-r--r-- 1 lisi root 193 Jan 28 10:24 123

    参照文件夹的属性设置文件的属性

    [root@learn ~]# chown --reference=11/ 11/ppt

    [root@learn ~]# ll 11/

    total 0

    -rw-r--r-- 1 root lisi 0 Jul 12 19:39 ppt

    chmod

    修改文件和文件夹权限

    三类用户

    u 属主

    g 属组

    o 其他用户

    a 所有人

    三类权限

    r   w   x

    修改属主的访问权限

    [root@learn ~]# chmod u=rwx 123

    [root@learn ~]# ll 123

    -rwxr--r-- 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod u+x 123

    [root@learn ~]# ll 123

    -rwxr--r-- 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod u-x 123

    [root@learn ~]# ll 123

    -rw-r--r-- 1 lisi root 193 Jan 28 10:24 123

    修改属组的访问权限

    [root@learn ~]# chmod g=rwx 123

    [root@learn ~]# ll 123

    -rw-rwxr-- 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod g-x 123

    [root@learn ~]# ll 123

    -rw-rw-r-- 1 lisi root 193 Jan 28 10:24 123

    修改其他用户的访问权限

    [root@learn ~]# chmod o=rwx 123

    [root@learn ~]# ll 123

    -rw-rw-rwx 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod o-x 123

    [root@learn ~]# ll 123

    -rw-rw-rw- 1 lisi root 193 Jan 28 10:24 123

    同时修改属主、属组、其他账户权限

    [root@learn ~]# chmod u=r,g=rw,o=x 123

    [root@learn ~]# ll 123

    -r--rw---x 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod a=r 123

    [root@learn ~]# ll 123

    -r--r--r-- 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod a=rwx 123

    [root@learn ~]# ll 123

    -rwxrwxrwx 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod a-x 123

    [root@learn ~]# ll 123

    -rw-rw-rw- 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod ug=rw,o=x 123

    [root@learn ~]# ll 123

    -rw-rw---x 1 lisi root 193 Jan 28 10:24 123

    修改文件夹内部文件和文件夹的权限

    [root@learn ~]# chmod go-x -R 123

    [root@learn ~]# ll 123

    -rw-rw---- 1 lisi root 193 Jan 28 10:24 123

    使用八进制方式设置权限

    [root@learn ~]# chmod 700 123

    [root@learn ~]# ll 123

    -rwx------ 1 lisi root 193 Jan 28 10:24 123

    [root@learn ~]# chmod 711 123

    [root@learn ~]# ll 123

    -rwx--x--x 1 lisi root 193 Jan 28 10:24 123

    参照现有文件或文件夹权限设置文件和文件夹权限

    [root@learn ~]# chmod --reference=11/ 11/ppt

    [root@learn ~]# ll 11/

    total 0

    -rwxr-xr-x 1 lisi lisi 0 Jul 12 19:39 ppt

    umask

    权限遮罩码 umask 控制用户创建文件和文件夹的默认安全设置

    文件默认权限

    666-umask

    文件夹默认权限

    777-umask

    管理员root

    umask=022

    文件默认权限666-022=644 文件夹默认权限777-022=755

    普通用户  

    umask=002

    文件默认权限666-002=664 文件夹默认权限 777-002=775

    更改umask

    [root@learn ~]# umask 0007

    [root@learn ~]# umask

    0007

    永久更改用户自身的uamsk

    vim .bash_profile

    在Linux中文件的默认权限不允许有执行权,如果和umask计算的结果有执行权限将其计算结果+1

    例:

    如果umask=023  用户文件的权限666-023=643

    643转换 rw-r---wx 因不允许有执行权

    所以+1等于 644 rw-r--r

    在/etc/profile文件中设定系统全局umask,定义了默认文件权限

    [root@learn ~]# cat /etc/profile

    ...

    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

        umask 002

    else

        umask 022

    fi

    ...

    文件特殊权限

    上级目录权限决定文件权限

    权限下发suid  4

    条件:

    作用于二进制文件(可执行文件),对于目录和文件无效

    特征:         

    chmod u+s filename

    rw- +suid    rwS

    rwx +suid    rws

    功能:

    不管谁来执行命令,都以拥有者的权限执行。

    sgid   2

    条件:

    作用于二进制文件(可执行文件)、目录,对文件无效

    特征:          

    chmod g+s filename

    rw- +suid    rwS  

    rwx +suid    rws

    功能:

    不管谁来执行命令,都以拥有组的权限执行

    当上级目录设定sgid后,此目录内所有内容都将继承该目录的所属组权限

    sticky   1

    条件:

    只能作用于目录

    特征:           

    chmod o+t filename

    o+t

    功能:

    任何人创建文件,只能root和创建者有删除权限

    以上三种模式,大小写s或t 取决于文件是否具有x权限

    文件重定向

    输入输出重定向

    输入为0,输出为1,错误为2

    根据以上特性试验:

    将正确和错误输出重定向到文件(默认是1,可以不写直接跟重定向)

    ls /etc/passwd /etc/passwd1 &>/home/all.log     &表示1和2

    等同

    ls /etc/passwd /etc/passwd1 > /home/11.log 2>&1  2>&1表示将查询到的结果1和2都输出到11.log文件下

    将正确和错误输出重定向到不同的文件

    ls /etc/passwd /etc/passwd1 1>/home/1.log 2>/home/2.log

    追加:>>

    echo ‘aaa’ >>1.log 把aaa内容追加到1.log文件中

    输入:< 和输入追加 <<    很少使用

    cat < /etc/passwd    不加<也能显示

    cat << /etc/passwd、

    系统黑洞 /dev/null

    不需要的系统日志等重定向到系统黑洞(回收站(清空状态))/dev/null

    ls /etc/passwd /etc/passwd1 > /dev/null 2>&1

    查看文件大小

    ls –lh /dev/null

    du –sh /dev/null

    零发射器 /etc/zero

    dd if=/dev/zero of=1.txt bs=1 count=1M

    if从零发射器输入到1.txt,bs份数 1份,count数据大小1M

  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/pathping/p/7252497.html
Copyright © 2011-2022 走看看