三周第一次课(12月25日)
2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理
2.27linux和windows互传文件
要使用xshell和securecrt,putty不支持。
1.linux传到windows
1)要安装“lrzsz”包
2)使用命令【sz】,会跳出windows的保存位置的对话框,选择保存位置。这样就可以在windows中看到这个文件了
2.windows传到linux
使用命令【rz】,选择windows下的文件,保存到linux当前用户目录下
3.1 用户配置文件和密码配置文件
1.【/etc/psswd】:用户账户信息的配置文件。
在Linux /etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。
【/etc/passwd】中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
【用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell】:
1)“用户名”:是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
2)“口令”:一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”
3) 用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。
Linux用户可以分为3类:
#管理员UID为0:系统的管理员用户。如root用户
#系统用户UID为1-999:Linux系统为了避免因某个服务程序出现漏洞而被***提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围
#普通用户UID从1000开始:由管理员创建的用于日常工作的用户。
需要注意的是,UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000 开始的(即使前面有闲置的号码)。
4. “组标识号”:字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
为了方便管理属于同一组的用户,Linux系统中还引人了用户组的概念。通过使用用户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。假设有一个公司中有多个部门,每个部门中又有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限。例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的数据库信息等。
另外,在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳人其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。
5. “注释性描述”:字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
6. “主目录”:也就是用户的家目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
7. 登录的shell:登录shell通常是/bin/bash。用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。 用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
8. 系统中有一类用户称为伪用户(psuedo users),这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。“/sbin/nologin“ 它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
/etc/passwd文件中常见的伪用户
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。
2. 【/etc/shadow】:用户账户的安全信息。
与Linux /etc/passwd文件不同,Linux /etc/shadow文件是只有系统管理员才有权利进行查看和修改的文件
Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是: 【登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志】 1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令;
星号代表帐号被锁定;
双叹号表示这个密码已经过期了。
$6$开头的,表明是用SHA-512加密的,
$1$ 表明是用MD5加密的
$2$ 是用Blowfish加密的
$5$ 是用 SHA-256加密的。
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了
如果2个账号的密码一致,在shadow文件里显示的加密的口令也是不一样的
3.2 用户组管理
1.【/etc/group】:用户组账户信息的配置文件
“ /etc/group”文件是有关于系统管理员对用户和用户组管理的文件,linux用户组的所有信息都存放在/etc/group文件中。
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为扩展组。
用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
【组名:口令:组标识号:组内用户列表】
组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是x。
组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
2. 【/etc/gshadow】:用户组账户安全信息的配置文件
/etc/gshadow文件的每一行,以“:”分隔成4个字段。
【用户组名:用户组密码:用户组管理员的名称:支持的账号名称】
etc/gshadow是/etc/group的加密资讯文件,比如用户组(Group)管理密码就是存放在这个文件。/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码;
第一字段:用户组 第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码; 第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割; 第四字段:组成员,如果有多个成员,用,号分割;
3. 备份文件
最后字符为“-”的文件是系统自动备份的文件。如源文件不小心删除了,可以拷贝成源文件,从而恢复回来
4.增加组
1)命令【groupadd】:用于将新组加入系统。
格式 groupadd [-g gid] [-o]] [-r] [-f] groupname -g gid:指定组ID号。 -o:允许组ID号不必惟一。 -r:创建系统组,创建一个系统组. 新系统组的GID会自动从login.defs中的SYS_GID_MIN-SYS_GID_MAX中选择, 而不是 GID_MIN-GID_MAX。centos7里系统组的组ID:101-999 -f:和rm -f的意义一样, 使用此参数时, 即使指定的组已经存在, 命令依然会正常退出(不返回错误), 当和-g一起使用时, 如果指定的GID已 经存在, 则会自动使用另一个GID.
-K:覆盖配置文件“/ect/login.defs”;
举例:
2)命令【groupdel】
用于删除指定的工作组
groupdel [选项] 组名
删除组时,要确保这个组里没有成员,只有这个组里有任何成员在,你就不能删除这个组。
3.3 用户管理
1. 命令【useradd】:用于Linux中创建的新的用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
useradd [选项] 用户名
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段(即备注)
-d, --home-dir HOME_DIR 新账户的主目录(即家目录)
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID,必须指定已存在的组号或组名
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
新增“user2”用户:
新增“user3”用户,它的用户ID是1004 ,属于grp2组
新增“user4”用户,用户ID是1006,属于grp2组,家目录是/home/aming111,shell是/sbin/nologin
新增“user5“,不创建家目录
上图在“/home“没有user5目录,但并不代表没有家目录,只是没有创建。user5的家目录就是上图红框中的
#在创建用户时,不是特别指定用户UID的话,以后新建用户时,用户UID会自动+1。
上图用户ID除1004,1006是指定外的,其余都是自动增加的
#在创建用户时,GID不会自动增加,而是根据UID自动增加
2. 命令【userdel】
userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除用户的家目录
userdel [选项] 用户名
# -f:强制删除用户,即使用户当前已登录;
#-r:同时删除用户及用户家目录