zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/ZhouJiaHao/p/13439175.html
Copyright © 2011-2022 走看看