目录
[TOC]
相关文件
/etc/passwd文件
在/etc/passwd中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,比如下面是/etc/passwd的一行:
beinan:\x:500:500:beinan sun:/home/beinan:/bin/bash
第一字段:用户名(也被称为登录名);在上面的例子中,我们看到这两个用户的用户名分别是beinan 和linuxsir;
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID
第四字段:GID;用户的私有组号
第五字段:用户名全称,这是可选的,可以不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户没有设置全称;
第六字段:用户的主目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;
第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是bash ;所以设置为/bin/bash (若为nologin,不能用账号和shell交互,只能通过应用程序登录)
/etc/shadow文件
/etc/shadow文件的内容包括9个段位,每个段位之间用:号分割
beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用户名(也被称之为登录名),在例子中有峡谷两条记录,也表示有两个用户beinan和linuxsir
第二字段:被加密的密码,如果有的用户在此字段中是x,表示这个用户不能登录系统,也可以看作是虚拟用户,不过虚拟用户和真实用户都是相对的,系统管理员随时可以对任何用户 操作;
第三字段:表示上次更改口令的天数(距1970年01月01日),上面的例子能说明beinan和linuxsir这两个用户,是在同一天更改了用户密码,当然是通过passwd 命令来更改的,更改密码的时间距1970年01月01日的天数为13072;
第四字段:密码的最小生存期,两次口令修改之间最小天数的功能。至少在这些天数之内不能修改密码。设置为0
第五字段:密码的最大生存期,两次修改口令间隔最多的天数,在这些天数之后必须修改密码。在例子中都是99999天;永远不需要更改密码。
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;在例子中的值是7 ,表示在用户口令将过期的前7天警告用户更改期口令;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;在例子中,此字段两个用户的都是空的,表示禁用这个功能;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;在例子中,我们看到beinan这个用户在此字段是空的,表示此用户永久可用;而linuxsir这个用户表示在距1970年01月01日后13108天后过期,算起来也就是2005年11月21号过期。(此字段用的少,可用于收费会员服务)
第九字段:保留字段,目前为空,以备将来Linux发展之用;
注意:密码过期≠密码失效≠账号失效
/etc/group文件
/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下:group_name:passwd:GID:user_list在/etc/group 中的每条记录分四个字段:
第一字段:用户组名称
第二字段:用户组密码,由于安全原因,已经不使用该字段保存密码,用”x”占位
第三字段:GID
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名(在group文件中,用户的主要组并不把该用户本身作为成员列出,只有附加组才把该用户作为成员列出。)
/etc/gshadow/文件
etc/gshadow是/etc/group的加密信息文件,/etc/gshadow 格式如下,每个用户组独占一行:
groupname:password:admin,admin,...:member,member,...
第一字段:用户组名称
第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分隔;
第四字段:组成员,如果有多个成员,用,号分隔
注意:组管理员可以不是组成员。
相关命令
添加用户 - useradd命令
添加新的用户账号使用useradd命令,其语法如下:
useradd [选项] 用户名
其中各选项含义如下:
OPTION | form Description |
---|---|
-c全称 | 指定一段注释性描述 |
-d目录 | 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录 |
-g用户组 | 指定用户所属的私有组,用户组名须为现有存在的名称。<若不指定,则用户私有组名就是该用户名。用-g参数指定用户私有组 |
有利于对用户进行分组管理。 | |
-G用户组 | 用户组指定用户所属的附加组。如有多个附加组,则用逗号分开 |
-u | 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号 |
-p | 后面直接指定密码 |
-s shell文件 | 指定用户的登录Shell |
修改用户 - usermod命令
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主
目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
usermod [选项] 用户名
该命令大部分常用选项与useradd命令基本相同。另有如下新选项:
- usermod -l 新用户名当前用户名:这个选项指定一个新的账号,即
将原来的用户名改为新的用户名。 - usermod -L 用户名:锁定用户帐户,使之不能登录系统。
- usermod -U 用户名:对已锁定用户帐户解锁,使之能登录系统
操作举例:
usermod -l user2
user1usermod -L
user1usermod -U user1
另外,其他常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些
选项的意义与useradd命令中的选项一样,可以为用户指定新的属
性值。只不过这里是对已有用户修改其属性。
删除用户 - userdel命令
删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户
账号就是要将/etc/passwd等系统文件中的该用户记录删除,必
要时还删除用户的主目录。删除一个已有的用户账号使用
userdel命令,其格式如下:
userdel [选项] 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:
- userdel –r sam
此命令删除用户sam在系统文件中(主要是/etc/passwd,
/etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
修改口令 - passwd命令
在用useradd创建用户后,下一步就是用passwd来指定其用户口令。
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没
有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以
使用,即使是指定空口令。指定和修改用户口令的Shell命令是passwd。
-
超级用户可以为自己和其他用户指定口令,普通用户只能用它修改
自己的口令。命令的格式为:passwd [选项] 用户名
-
passwd可使用的选项:
Option form Description -l 锁定口令,即禁用账号。使其不能登录 -u 口令解锁 -d 移去指定用户的口令,使之再登录系统时系统不询问口令,如需恢复该用户登录,要重新设置口令 -S 查看用户账户口令状态 以上选项只有root用户可以使用。
修改口令失效 - chage命令
命令格式:chage [选项][用户帐户名]
功能描述:用于更改与口令生存期(口令时效)有关的信息。口令时效是系统管理员用来防止机构内不良口令的一种技术。
口令时效意味着过了一段预先设定的时间后(通常是90天),用户会被提示创建一个新口令。
强制用户在一段时间之后更改口令的机制称为口令时效。命令格式
chage [<选项>] <用户名>
-
常用选项:
Option form Description -d days 指定自从1970年1月1日起,口令被改变的天数。 -m days 口令的最小生存期,指定用户必须改变口令所间隔的最少天数。如果值为0,口令就不会过期。 -M days 口令的最大生存期,指定口令有效的最多天数。当该选项指定的天数加上 -d 选项指定的天数小于当前的日期,用户在使用该账号前就必须改变口令。 -I days 指定口令过期后,账号被锁前不活跃的天数。如果值为0,账号在口令过期后就不会被锁。 -E date 指定账号被锁(过期)的日期,日期格式为YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。 -W days 指定口令过期前要警告用户的天数。 -l 列出指定用户当前的口令时效信息,以确定账号何时过期。只有该选项可供普通用户使用。
chage操作举例:
用户user1两天内不能更改口令,并且口令最长的存活期
为30天, 并在口令过期前5天通知user1。chage -m 2 -M 30 -W 5 user1
查看用户user1当前的口令时效信息。
chage -l user1
(passwd –S也可以查看用户口令信息)
规定用户第一次登录时需修改密码。chage –d 0 user1
注意:上面涉及到的日期采用YYYY-MM-DD格式,但是
实际系统中是用自1970年1月1日后经过的天数来表示这个
日期,并将设置结果保存在/etc/shadow文件中。
修改用户信息工具 - chfn命令
chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的。
最简单的格式是:chfn 用户名
复杂的格式如下:chfn [ -f full-name ][ -o office ][ -p office-phone ][ -h home-phone ][ -u ][ -v ][ username ]
更改文件所属用户 - chown命令
格式:
chown [-c|--changes] [-v|--verbose] [-f|--silent|--quiet] [--dereference][-h|--no-dereference]
[--preserve-root][--from=currentowner:currentgroup] [--no-preserve-root][-R|--recursive]
[--preserve-root] [-H] [-L] [-P]{new-owner|--reference=ref-file} file ...
-
[user[:group]]
指定了新的ownership ,用五种指定方式:new-owner form Description user 拥有此文件主权限的新用户名所属用户组未改变 user:group 新的用户名和用户组 :group 指定新的组名 user: 新用户名,所属组也改为和其相同 : 无改动 -
选项
OPTION Description -c,
--changesSimilar to --verbose mode, but only displays information about files that are actually changed. For example:
changed ownership of 'dir/dir1/file1' from hope:neil to hope:hope-v,
--verbosechanged ownership of 'dir/dir1/file1' from hope:neil to hope:hope
changed ownership of 'dir/dir1/file1' from hope:neil to hope:hope ownership of 'dir/dir1' retained as hope:hope-f,
--silent,--quietQuiet mode. Do not display output. --dereference Dereference all symbolic links. If file is a symlink, change the owner of the referenced file, not the symlink itself. This is the default behavior. -h,
--no-dereferenceNever dereference symbolic links. If file is a symlink, change the owner of the symlink rather than the referenced file. --from=currentowner:currentgroup Change the owner or group of each file only if its current owner or group match currentowner and/or currentgroup. Either may be omitted, in which case a match is not required for the other attribute. --no-preserve-root Do not treat / (the root directory) in any special way. This is the default behavior. If the --preserve-root option is previously specified in the command, this option will cancel it. --reference=ref-file Use the owner and group of file ref-file, rather than specifying ownership with new-owner. -R,
--recursiveOperate on files and directories recursively. Enter each matching directory, and operate on all its contents.**** 来自 https://www.computerhope.com/unix/uchown.htm
添加用户组命令-groupadd命令
格式:
groupadd [<参数>] <组账号名>
常用选项:
-r <系统组账号名> :用于创建系统组账号(该帐号对应的GID小于500 )
-g 后接GID值:用于指定GID (GID必须唯一且大于500 )
修改用户组的属性—groupmod命令
命令格式:# groupmod [<参数>] <组账号名>
-
常用选项:
- -g:改变组账号的GID ,组账号名保持不变。
- -n:改变组账号名。但组帐号名不变。
管理用户组中的用户—gpasswd命令
命令格式:# gpasswd [<参数>] <组账号名>
-
常用选项:
-a 用户帐号:将指定用户添加到指定的用户组(组管理员有权执行)
-A 组管理员用户帐号列表:将指定用户设置为用户组的管理员
-d 用户帐号:将指定用户从指定的用户组中删除(组管理员有权执行)
-
操作举例:
gpasswd –a user1 group1gpasswd –A user2 group1
gpasswd –A ‘’ group1 //取消group1的管理员
gpasswd –d user1 group1
将一个用户user1加入一个组usergroup的两种方法?
gpasswd –a user1 usergroup (一般由组管理员)
usermod –G usergroup user1 (一般由root)
删除用户组—groupdel 命令
命令格式:
groupdel <组账号名>
- 注意事项:
- 被删除的组账号必须存在
- 当有用户使用组账号作为私有组并且该用户还存在时,不能删除。
- 如果用户组中的用户在线,也不能删除。
- 通常,应当将组中用户移出后再将它删除。
- 与用户名同名的私有组账号在使用userdel命令删除用户时被同时删除。操作举例:# groupdel mygroup
将用户从当前组转换到指定组命令 - newgrp
格式:
# newgrp <组账号名>
注意事项:
这条命令将当前用户切换到指定用户组,前提条件是指定用户必须属于该组,即该组确实是该用户的主组或附加组。
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
切换的目标变为当前组(或称有效组)
有效组影响新建文件的权限操作举例:# newgrp bin
其他用户和组状态命令
- id :显示用户当前的uid、gid和用户所属的组列表
- whoami: 显示当前用户的名称
- who: 主要用于查看当前在线上的(也就是登录的)所有用户情况。这个命令非常有用。如果用户想和其他用户建立即使通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登陆的用户此时此刻的所作所为,也要使用who命令。
- w: 主要用于查看当前在线上的所有用户,以及用户当前执行的命令。
- groups 用户名:显示指定用户所属的组,如未指定用户则显示当前用户所属的组。
- su: su /su -/ su zhangshan / su -zhangshan
其他的用户和组状态命令