• 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

  • 相关阅读:
    HDU 2112 HDU Today
    HDU 1869 六度分离
    HDU 3790 最短路径问题
    HDU2066 一个人的旅行
    HDU1596 find the safest road(最短路)
    HDU 1254 推箱子(双重bfs)
    HDU 1429 胜利大逃亡(续) (bfs+状态压缩)
    HDU 1045 Fire Net
    数据结构之单链表头插法,尾插法
    Java--会移动、反弹的球
  • 原文地址:https://www.cnblogs.com/pathping/p/7252497.html
Copyright © 2020-2023  润新知