Linux账户管理和权限管理.ppt
Linux基础Linux账户管理和权限管理,教学目的和要求,理解账户实质熟悉账户配置文件学会设置和管理口令理解Linux系统的权限学会设置基本操作权限了解特殊权限的使用,重点内容,账户实质账户文件账户设置权限表示权限设置,账户概述,什么是用户账户像Linux这样的多任务多用户系统,往往是一台计算机被多个人同时使用,因此每个用户都有一个惟一的用于登录的用户名以示区分。然而,对于用户来说除了名字还有许多其他特性。一个账户(account)则用来指定属于一个用户的所有文件、资源以及信息。,账户概述,账户实质账户实质上就是一个用户在系统上的标识,系统依据账户来区分每个用户的文件、进程、任务,给每个用户提供特定的工作环境(如用户的工作目录、shell版本、以及X-Windows环境的配置等),使每个用户的工作都能独立不受干扰地进行。,账户概述,Linux中的账户包括用户账户超级用户:UID=0,GID=0普通用户:UID=500伪用户:0UID500组账户标准组:标准组可以容纳多个用户,若使用标准组,在创建一个新的用户时就应该指定他所属于的组。私有组:私有组中只有用户自己。当在创建一个新用户user时,若没有指定他所属于的组,Red Hat 就建立一个和该用户同名的私有组。,账户概述,用户和组的关系组是用户的集合。一个标准组可以容纳多个用户。同一个用户可以同属于多个组,这些组可以是私有组,也可以是标准组。当一个用户同属于多个组时,将这些组分为:主组:用户登录系统时的组。附加组:可切换的其他组。,系统账户文件,用户口令文件/etc/passwd文件权限:(-rw-r-r-)用户影子口令文件/etc/shadow文件权限:(-r-)组账号文件/etc/group文件权限:(-rw-r-r-)组口令文件/etc/gshadow文件权限:(-r-),Red Hat 的账户管理,默认启用shadow passwords功能。/etc/passwd文件对任何用户均可读,为了增加系统的安全性,用户的口令通常用shadow passwords保护。经过shadow passwords保护的账户密码和相关设置信息保存在/etc/shadow文件里。/etc/shadow只对root用户可读。默认使用MD5算法的用户口令。一般不设置组口令。因为绝大多数应用程序不使用组口令,Red Hat 的账户管理,Red Hat 建议尽量使用私有组来提高系统安全性。Red Hat 不建议管理员直接编辑修改系统账户文件来维护账户。若用户直接编辑了账户文件,建议使用账号文件的一致性检测命令。pwck命令:检测文件“/etc/passwd”和“/etc/shadow”的每行中字段的格式和值是否正确。grpck命令:检测文件“/etc/group”和“/etc/gshadow”的每行中字段的格式和值是否正确。,与账户管理相关的其他文件或目录,在Linux系统中有几个用来设置新账户的文件、配置文件和子目录,例如,etc/skel子目录里就保存着新用户的初始化文件,新用户的登录子目录被放在/home子目录中,下面是一个路径名列表。/home 用户自己的登录子目录所在的位置。/etc/skel 为登录shell保存默认的初始化文件,如.bash-profile和.cshrc等。/etc/shells 保存登录shell,如BASH和TCSH等。/etc/passwd 为用户保存它的口令。/etc/group 保存用户所属的用户组信息。可以手工修改这些文件和子目录来设置一个新账户。,使用命令行工具添加用户账号,命令格式:#useradd 常用选项:-g group:指定新用户的主组。-G group:指定新用户的附加组。-d directory:指定新用户的自家目录。-s shell:指定新用户使用的Shell,默认为bash。-e expire:指定用户的登录失效时间,例如:08/31/2006-M:不建立新用户的自家目录。,使用命令行工具添加用户账号,操作举例:#useradd user1#useradd-s/bin/tcsh jason#useradd-g mygroup-e 12/31/2006 user2#useradd-G staff tom#useradd-G ftpgrp-d/var/ftp2-s/sbin/nologin-M anftp1,口令设置,使用useradd命令创建用户账户之后需要使用passwd命令设置初始口令格式:#passwd 举例:为指定用户设置口令#passwd jason修改用户自己的口令$passwd,使用命令行工具修改用户账号,命令格式:#usermod 常用选项:选项与useradd命令基本相同。操作举例:#usermod-l user2 user1#usermod-G softgroup jjh#usermod-L user1#usermod-U user1,使用命令行工具删除用户账号,命令格式:#userdel 常用选项:-r 用于删除用户的宿主目录操作举例:#userdel user2#userdel-r user1,使用命令行工具添加组账号,命令格式:#groupadd 常用选项:-r:用于创建系统组账号(GID小于500)-g:用于指定GID操作举例:#groupadd mygroup#groupadd-r sysgroup#groupadd-g 888 group2,使用命令行工具修改组账号,格式:#groupmod 常用选项:-g:改变组账号的GID,组账号名保持不变。-n:改变组账号名。操作举例:#groupmod-g 503 mygroup#groupmod-n newgroup mygroup,使用命令行工具删除组账号,命令格式:#groupdel注意事项:被删除的组账号必须存在当有用户使用组账号作为私有组时不能删除与用户名同名的私有组账号在使用userdel命令删除用户时被同时删除操作举例:#groupdel mygroup,口令管理,禁用用户账户口令#passwd-l 查看用户账户口令状态#passwd-S 恢复用户账户口令#passwd-u 删除用户账户口令#passwd-d,口令时效,口令时效简介口令时效是系统管理员用来防止机构内不良口令的一种技术。口令时效意味着过了一段预先设定的时间后(通常是90天),用户会被提示创建一个新口令。强制用户在一段时间之后更改口令的机制称为口令时效。chage命令命令格式:#chage,口令时效,Change命令常用选项:-m days:指定用户必须改变口令所间隔的最少天数。如果值为 0,口令就不会过期。-M days:指定口令有效的最多天数。当该选项指定的天数加上-d 选项指定的天数小于当前的日期,用户在使用该账号前就必须改变口令。-d days:指定自从1970年1月1日起,口令被改变的天数。-I days:指定口令过期后,账号被锁前不活跃的天数。如果值为0,账号在口令过期后就不会被锁。-E date:指定账号被锁的日期,日期格式为YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。-W days:指定口令过期前要警告用户的天数。-l:列出指定用户当前的口令时效信息,以确定账号何时过期。,口令时效,操作举例:用户user1两天内不能更改口令,并且口令最长的存活期为30天,并在口令过期前5天通知user1。#chage-m 2-M 30-W 5 user1查看用户user1当前的口令时效信息。#chage-l user1,用户管理器配置,如果用户更喜欢使用图形化界面,可使用用户管理器来配置用户和组。用户管理器允许查看、修改、添加和删除本地用户和组,如图所示。,图 Red Hat用户管理器,添加新用户,要添加新用户,在用户管理器中单击【添加用户】图标按钮。一个如图 所示创建新用户的对话框就会出现。在适当的文本框内输入新用户的用户名和全称。在【口令】和【确认口令】文本框内输入口令。口令必须至少有6个字符。,图 创建新用户,添加新用户,选择一个登录shell。如果不能确定应该选择哪一个shell,就接受默认的/bin/bash。默认的主目录是/home/用户名。可以改变为用户创建的主目录,或者通过取消已选中的【创建主目录】复选框来不为用户创建主目录。,修改用户属性,要查看某个现存用户的属性,单击图中的【用户】标签,从用户列表中选择该用户,然后单击【属性】图标按钮,或者从菜单栏选择【文件】|【属性】命令,一个类似图的对话框就会出现。,图 用户属性,修改用户属性,【用户属性】对话框有4个选项卡,其功能如下。【用户数据】:显示在添加用户时配置的基本用户信息。使用这个选项卡来改变用户全称、口令、主目录或登录 shell。【账号信息】:如果想让账号到达某一固定日期时过期,选中【启动账户过期】复选框。在提供的文本框内输入日期。选中【用户账号已被锁】复选框来锁住用户账号,从而使用户无法在系统登录。【口令信息】:这个选项卡显示了用户口令最后一次被改变的日期。要强制用户在一定天数之后改变口令,选中【启动账户过期】复选框。还可以设置允许用户改变口令之前要经过的天数,用户被警告改变口令之前要经过的天数,以及账号变为不活动之前要经过的天数。【组群】:选择想让用户加入的组以及用户的主要组。,添加新组,要添加新用户组,单击【添加组群】图标按钮。一个类似图的创建新组群窗口就会出现。输入新组的名称来创建。要为新组指定组ID,选中【手工指定组群ID】复选框,然后选择 GID的数值。Red Hat Linux 把 低于 500 的组ID 保留给系统组。,单击【确定】按钮来创建组。新组就会出现在组列表中。,图 创建新组,修改组属性,要查看某一现存组的属性,从组列表中选择该组,然后在按钮菜单中单击【属性】图标按钮,或选择用户管理器菜单【文件】|【属性】命令。一个类似图的组属性对话框就会出现。【组群用户】选项卡显示了哪些用户是组的成员。选择其他用户把他们加入到组中,或取消选择用户把他们从组中移除。单击【确定】按钮来修改该组中的用户。,图 组属性,成批添加用户账户,创建脚本addusers,内容为:#!/bin/bash echo-n Give me the name of the file containing user data.read file1!-f$file exit 1)while read username2 do useradd$username/dev/null 2&13 if$?-ne 0 then echo Fail to create an account with name=$username.else echo redhat|passwd-stdin$username/dev/null 2&14 fi done$file,成批添加用户账户,创建用户名数据文件users,内容为:user101 user102 user103 user104 执行脚本创建多个用户#bash addusers Give me the name of the file containing user data.users5,常用的用户和组状态命令,whoami:用于显示当前用户的名称。groups:用于显示指定用户所属的组,如未指定用户则显示当前用户所属的组。id:用于显示用户当前的uid、gid和用户所属的组列表。su-:用于转换当前用户到指定的用户账号,若不指定用户名则转换当前用户到root。若使用参数“-”则在转换当前用户的同时转换用户工作环境。newgrp:用于转换用户的当前组到指定的附加组,用户必须属于该组才可以进行。,操作权限概述,Linux是多用户的操作系统,允许多个用户同时在系统上登录和工作。为了确保系统和用户的安全,Linux采取了很多的安全措施。通过用户的代号(UID)来确定每个用户在登录系统后都做了些什么,也可以用来区别不同用户所建立的文件或目录。Linux文件系统安全模型是通过给系统中的文件赋予三个属性来起作用的,这三个赋予每个文件的属性称为所有者、组和访问权限。Linux下每一个文件必须严格地属于一个用户和一个组。,使用 Linux 系统资源的四类人员,在Linux中,将使用系统资源的人员分为四类:超级用户文件或目录的属主属主的同组人其他人员由于超级用户具有操作Linux系统的一切权限,所以不用指定超级用户对文件和目录的访问权限。对于其他三类用户都要指定对文件和目录的访问权限。用户只能不受限制的操作自家目录及其子目录下的所有文件。对系统中其他目录的访问受到同组和其他人的访问限制。,设置文件权限的准则,尽量使用私有组,保护用户各自的文件或目录。应随时了解指定给文件和目录的权限,定期检查文件和目录以确保指定了正确的权限。如果在目录下发现陌生的文件请向系统管理员或安全人员报告。为文件和目录指定权限时请慎重考虑只有在具有充分的理由。例如:处理小组项目时组员可能需要访问特定的文件或目录需要让他人访问时再将访问权限授予他人。,三种基本的访问权限,三种基本的访问权限读(r)写(w)执行(x)三种基本的访问权限对文件的含义r:可以读文件的内容w:可以修改该文件x:可以执行该文件,三种基本的访问权限,三种基本的访问权限对目录的含义r:可以列出目录中的文件列表w:可以在该目录中创建、删除文件x:可以使用cd命令进入该目录目录权限提示有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既使该文件或子目录属于其他用户。,查看文件和目录的权限,使用如下命令查看权限$ls-l常见的权限字符串及其含义字符 数值 说明-rw-600只有属主才有读取和写入的权限。-rw-r-r-644-rwx-700-rwxr-xr-x 755-rwx-x-x 711-rw-rw-rw-666-rwxrwxrwx777 drwx-700 drwxr-xr-x755,权限的文字设定法,chmod命令的文字设定法格式chmod ugoa+-=rwxugo 人员标识属主(u)同组(g)其他人(o)所有的人员(a),权限的文字设定法,设定方法+:增加权限-:删除权限=:分配权限,同时删除旧的权限权限字符r(读)w(写)x(执行)u(和属主的权限相同)g(和所属组用户的权限相同)o(和其他用户的权限相同),权限的文字设定法举例,取消组用户和其他用户对文件users的读取权限#cd;ls-l users-rw-r-r-1 root root 42 May 2 18:07 users#chmod go-r users#ll users-rw-1 root root 42 May 2 18:07 users,权限的文字设定法举例,对文件addusers的属主添加执行权限#ll addusers-rw-r-r-1 root root 452 May 2 17:44 addusers#chmod u+x addusers#ll addusers-rwxr-r-1 root root 452 May 2 17:44 addusers,权限的文字设定法举例,对文件addusers1的属主添加执行权限,同时取消组用户和其他用户对文件的读取权限#ll addusers-rw-r-r-1 root root 399 May 2 18:14 addusers1#chmod u+x,go-r addusers1#ll addusers1-rwx-1 root root 399 May 2 18:14 addusers1,权限的数值设定法,chmod命令的数值设定法格式chmod n1n2n3 n1n2n3其中n1代表属主的权限n2代表组用户的权限n3代表其他用户的权限,权限的数值设定法,n1、n2、n3选项都是8进制数字,其意义如下:读 写 执行 二进制 八进制说明-000 0 没有权限。-x 001 1 允许执行。-w-010 2 允许写入。-w x 011 3 允许执行和写入。r-100 4 允许读取。r-x 101 5 允许执行和读取。r w-110 6 允许写入和读取。r w x 111 7 允许执行写入和读取。,权限的数值设定法举例,对文件addusers的属主设置可读、写和执行权限,所属组用户和其他用户只设置读和执行的权限,没有写的权限。#ll addusers-rwxr-r-1 root root 452 May 2 17:44 addusers#chmod 755 addusers#ll addusers-rwxr-xr-x 1 root root 452 May 2 17:44 addusers,权限的数值设定法举例,取消组用户和其他用户对文件users1的一切权限#ll users1-rw-r-r-1 root root 24 May 2 18:15 users1#chmod 600 users1#ll users1-rw-1 root root 24 May 2 18:15 users1,更改属主和组,chown命令功能:更改属主和组。格式:#chown-R 参数-R:表示对目录及其子目录进行递归设置。,更改属主和组,举例:将文件users1的属主改成osmond#chmod osmond users1将文件users1的组改成staff#chmod.staff users1将文件users的属主和组都改成osmond#chown osmond.osmond users将mydir目录及其子目录下的所有文件或目录的属主和组都改成osmond#chown R osmond.osmond mydir,三种特殊权限简介,SUID当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。SGID当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源。若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p(preserve,保留文件属性)的参数,才能保留原来所属的群组设置。,三种特殊权限简介,sticky-bit对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作。对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作。,特殊权限实例,SUID的典型例子是passwd程序#ll/usr/bin/passwd-r-s-x-x 1 root root 16336 Feb 14 2003/usr/bin/passwd 设置了sticky-bit的典型例子是系统临时文件目录/tmp#ll-d/tmpdrwxrwxrwt 4 root root 4096 May 3 08:20/tmp,特殊权限的文字表示,SUID和SGID用s表示;Sticky-bit用t表示SUID是占用属主的x位置来表示SGID是占用组的x位置来表示Sticky-bit是占用其他人的x位置来表示的在表示上有大小写之分假若同时设置执行权限和SUID、SGID与Sticky,权限标识字符是小写的形式倘若关闭执行的权限,则标识字符会变成大写,特殊权限的文字表示,例如:-rwsr-sr-t 1 root root 9Aug 19 21:47 showme-rwSr-Sr-T 1 root root 9Aug 19 21:47 showme-rwsr-Sr-T 1 root root 9Aug 19 21:47 showme-rwsr-Sr-t 1 root root 9Aug 19 21:47 showme-rwsr-sr-T 1 root root 9Aug 19 21:47 showme,特殊权限的数值表示,三种特殊权限可以用单独的一位8进制数值表示SUID、SGID和sticky-bit的数值表示SUID SGID sticky 二进制 八进制 说明-000 0 不设置特殊权限-t 001 1 只设置sticky-s-010 2 只设置SGID-s t 011 3 只设置SGID和stickys-100 4 只设置SUID s-t 101 5 只设置SUID和stickys s-110 6 只设置SUID和s s t 111 7 设置三种特殊权限,设置特殊权限举例,为程序/usr/bin/myapp添加SUID权限#chmod u+s/usr/bin/myapp为目录/home/groupspace添加SGID权限#chmod g+s/home/groupspace为目录/home/share添加sticky权限#chmod o+t/home/share为程序/usr/bin/myapp添加SUID权限#chmod 4755/usr/bin/myapp为目录/home/groupspace添加SGID权限#chmod 2755/home/groupspace为目录/home/share添加sticky权限#chmod 1755/home/share,思考题,1、Linux系统是如何标识用户和组的?2、简述私有组和主组的关系?简述标准组和附加组的关系?3、简述Linux的四个账户系统文件及其各个字段的含义?4、如何设置用户口令?如何锁定用户账号?如何设置用户口令时效?5、Linux文件系统的三种基本权限为何?6、Linux文件系统的三种特殊权限为何?何时使用它们?7、简述chmod命令的两种设置权限的方法?8、简述三种特殊权限及其设置方法?,