• linux 用户和组管理


    1 概述

    Linux系统是一个多用户多任务的分时操作系统

    任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。。

    每个用户账号都拥有一个惟一的用户名和各自的口令。



    2 用户账户管理

    useradd 创建新用户

    语法

    useradd(选项)(参数)

    选项

    -d<登入目录>:指定用户登入时的启始目录;

    -e<有效期限>:指定帐号的有效期限;

    -f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;

    -g<群组>:指定用户所属的群组;

    -G<群组>:指定用户所属的附加群组;

    -r:建立系统帐号;

    -s<shell>:指定用户登入后所使用的shell;

    -u<uid>:指定用户id。

    参数

    用户名:要创建的用户名。

    实例

    新建用户加入组:

    useradd –g sales jack –G company,employees

    建立一个新用户账户,并设置ID:

    useradd caojh -u 544

    passwd 更改密码

    语法

    passwd(选项)(参数)

    选项

    -d:删除密码,仅有系统管理者才能使用;

    -f:强制执行;

    -k:设置只有在密码过期失效后,方能更新;

    -l:锁住密码;

    -s:列出密码的相关信息,仅有系统管理者才能使用;

    -u:解开已上锁的帐号。

    参数

    用户名:需要设置密码的用户名。

    存放用户信息的文件

    /etc/passwd

    /etc/shadow

    存放组信息的文件

    /etc/group

    实例

    [root@localhost ~]# passwd linuxde     # 更改或创建linuxde用户的密码;

    Changing password for user linuxde.

    New UNIX password:           # 请输入新密码;

    Retype new UNIX password:    # 再输入一次;

    passwd: all authentication tokens updated successfully.  # 成功;

    userdel 删除用户

    语法

    userdel(选项)(参数)

    选项

    -f:强制删除用户,即使用户当前已登录;

    -r:删除用户的同时,删除与用户相关的所有文件。

    参数

    用户名:要删除的用户名。

    实例

    userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于/var目录中,现在我们来删除这个用户:

    userdel linuxde       # 删除用户linuxde,但不删除其家目录及文件;

    userdel -r linuxde    # 删除用户linuxde,其家目录及文件一并删除;

    请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

    chown 变更文件或目录的拥有者或所属群组

    只有文件主和超级用户才可以便用该命令。

    语法

    chown(选项)(参数)

    选项

    -c:效果类似“-v”参数,但仅回报更改的部分;

    -f:不显示错误信息;

    -h:只对符号连接的文件作修改,而不更改其他任何相关文件;

    -R:递归处理,将指定目录下的所有文件及子目录一并处理;

    -v:显示指令执行过程;

    参数

    用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;

    文件:指定要改变所有者和工作组的文件列表。

    实例

    将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:

    chown -R liu /usr/meng

    chmod 变更文件或目录的权限

    chmod [OPTION]... MODE[,MODE]... FILE...

    chmod [OPTION]... OCTAL-MODE FILE...

    chmod [OPTION]... --reference=RFILE FILE...

    参数

    mode:八进制数或符号组合。

    file:指定要更改权限的一到多个文件。

    选项

    -c:当文件的权限更改时输出操作信息。

    -f:抑制多数错误消息的输出。

    -v:无论文件是否更改了权限,一律输出操作信息。

    -R:对目录以及目录下的文件递归执行更改权限操作。

    返回值

    返回状态为成功除非给出了非法选项或非法参数。

    例子

    # 查看当前目录(包含隐藏文件)的长格式。

    ls -la

      -rw-r--r--   1 user  staff   651 Oct 12 12:53 .gitmodules

    # 第1位如果是d则代表目录,是-则代表普通文件。

    # 更多详情请参阅info coreutils 'ls invocation'(ls命令的info文档)的'-l'选项部分。

    # 第2到4位代表当前用户的权限。

    # 第5到7位代表组用户的权限。

    # 第8到10位代表其他用户的权限。

    # 添加组用户的写权限。

    chmod g+w ./test.log

    # 删除其他用户的所有权限。

    chmod o= ./test.log

    # 使得所有用户都没有写权限。

    chmod a-w ./test.log

    # 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。

    chmod u=rwx, g=rw, o=r ./test.log

    # 等价的八进制数表示:

    chmod 754 ./test.log

    # 将目录以及目录下的文件都设置为所有用户拥有读写权限。

    # 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!

    chmod -R a=rw ./testdir/

    # 根据其他文件的权限设置文件权限。

    chmod --reference=./1.log  ./test.log

    3 用户组管理

    groupadd 创建新工作组

    语法

    groupadd(选项)(参数)

    选项

    -g:指定新建工作组的id;

    -r:创建系统工作组,系统工作组的组ID小于500;

    -K:覆盖配置文件“/ect/login.defs”;

    -o:允许添加组ID号不唯一的工作组。

    参数

    组名:指定新建工作组的组名。

    实例

    建立一个新组,并设置组ID加入系统:

    groupadd -g 344 jsdigname

    此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

    id显示用户的ID以及所属群组的ID

    语法

    id [-gGnru]--[help][--version][用户名称]

    选项

    -g或--group   显示用户所属群组的ID。

    -G或--groups   显示用户所属附加群组的ID。

    -n或--name    显示用户,所属群组或附加群组的名称。

    -r或--real    显示实际ID。

    -u或--user    显示用户ID。

    实例

    [root@localhost ~]# id

    uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

    解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:

    root组GID号是:0

    bin组GID号是:1

    daemon组GID号是:2

    sys组GID号是:3

    adm组GID号是:4

    disk组GID号是:6

    wheel组GID号是:10

    打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项:

    [root@localhost ~]# id -a

    uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

    4 用户相关系统文件

    /etc/passwd

     Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

    这个文件对所有用户都是可读的。它的内容类似下面的例子:

    # cat /etc/passwd

    root:x:0:0:Superuser:/:

    daemon:x:1:1:System daemons:/etc:

    bin:x:2:2:Owner of system commands:/bin:

    sys:x:3:3:Owner of system files:/usr/sys:

    adm:x:4:4:System accounting:/usr/adm:

    uucp:x:5:5:UUCP administrator:/usr/lib/uucp:

    auth:x:7:21:Authentication administrator:/tcb/files/auth:

    cron:x:9:16:Cron daemon:/usr/spool/cron:

    listen:x:37:4:Network daemon:/usr/net/nls:

    lp:x:71:18:Printer administrator:/usr/spool/lp:

    sam:x:200:50:Sam san:/usr/sam:/bin/sh

    从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

    用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

    第一字段:用户名(也被称为登录名)。

    第二字段:口令。

    第三字段: UID

    第四字段: GID

    第五字段:用户名全称,这是可选的,可以不设置

    第六字段:用户的家目录所在位置

    第七字段:用户所用SHELL的类型

     

    /etc/shadow

    与/etc/passwd中的记录行一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

    第一字段:用户名(也被称为登录名)

    第二字段:密码(已被加密)

    第三字段:上次修改口令的时间

    第四字段:两次修改口令间隔最少的天数

    第五字段:两次修改口令间隔最多的天数

    第六字段:提前多少天警告用户口令将过期

    第七字段:在口令过期之后多少天禁用此用户

    第八字段:用户过期日期

    第九字段:保留字段

    下面是/etc/shadow的一个例子:

    # cat /etc/shadow

    root:Dnakfw28zf38w:8764:0:168:7:::

    daemon:*::0:0::::

    bin:*::0:0::::

    sys:*::0:0::::

    adm:*::0:0::::

    uucp:*::0:0::::

    nuucp:*::0:0::::

    auth:*::0:0::::

    cron:*::0:0::::

    listen:*::0:0::::

    lp:*::0:0::::

    sam:EkdiSECLWPdSa:9740:0:0::::

    /etc/group

    每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。

    当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

    此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

    组名:口令:组标识号:组内用户列表

    "口令"字段存放的是用户组加密后的口令字。这个字段一般为空,或者是*。

    "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。

    "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

    /etc/group文件的一个例子如下:

    root::0:root

    bin::2:root,bin

    sys::3:root,uucp

    adm::4:root,adm

    daemon::5:root,daemon

    lp::7:root,lp

    users::20:root,sam

    /etc/gshadow

    组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中。

    首先,我们借助 Vim 命令查看一下此文件中的内容:

    [root@localhost ~]#vim /etc/gshadow

    root:::

    bin:::bin, daemon

    daemon:::bin, daemon

    …………

    lamp:!::

    文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符分为 4 个字段,每个字段的含义如下:

    组名:加密密码:组管理员:组附加用户列表

    组名

    同 /etc/group 文件中的组名相对应。

    组密码

    对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组没有组密码,也不设有群组管理员。

    组管理员

    能将用户加入自己管理的群组中,也就免去麻烦 root 了。

    不过,由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了。

    组中的附加用户

    该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。

    参考

    https://www.php.cn/linux/linux-user-manage.html

    http://c.biancheng.net/view/842.html

  • 相关阅读:
    shell函数
    sed命令
    交互式输入与for语句
    day01_云计算概述及kvm介绍
    grep与正则表达式
    shell的编程原理
    shell的文本处理工具
    shell的基础入门
    深入理解JavaScript中 fn() 和 return fn() 的区别
    一篇笔记带你快速掌握面向对象的Javascript(纯手打)
  • 原文地址:https://www.cnblogs.com/ZhouJiaHao/p/13439175.html
Copyright © 2020-2023  润新知