扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
1. 设置用户:用户名是系统中一个独一无二也叫登陆名。以及和它相对应的password由6-8位组成。以使用户可以通过 password来登陆系统。同时,还有用户的家目录。是用户登陆以后的主目录。还有用户的shell包括:Bourne shell Korn shell C shell Z shell BASH shell TC shell。用户初始化文件用来定制用户的工作环境。
2. 用户名的组成由26个大小写字母和10个数字组成。用户名不能包括下划线和空格。同时UID的范围为100-60000所有的UID必须是唯一的。GID的范围也是100-60000。
3. 通过admintool管理用户可以包括一下方面:Users Groups Hosts Printers Serial ports Software。Admintool必须用ROOT用户登陆。Admintool&。使用命令修改锁定用户:passwd –l username在 /etc/shadow 中password一项的正常显示变为*LK*表示用户已经被锁定。
Passwd中各列为:
loginID:x:UID:GID:comment:home_directory:login_shell
root UID:0 超级用户帐号,几乎没有任何约束并且不考虑其他所有的登陆,保护和许可;可以进入系统访问
daemon UID:1 控制后台进程的系统帐号
bin UID:2 管理大部分命令的帐号
sys UID:3 管理许多系统文件的帐号
adm UID:4 管理某些管理文件的帐号
lp UID:71 打印服务帐号
smtp UID:0 smtp邮件者使用简单网络管理协议。SMTP是INTERNET标准协议
uucp UID:5 为UNIX-to-UNIX拷贝程序(UUCP)捆绑数据文件和目标的帐号
nuucp UID:6 使用远程系统登陆到主机传送文件的帐号
listen UID:37 网络监听帐号
nobody UID:60001 匿名帐号,当独立于root用户建立一个需求时分派NFS服务器。nobody帐号分派软件进程时不需要任何特殊的权限。
noaccess UID:60002 需通过一些应用程序而不登陆系统时,为了访问系统而为一个用户或者进程分派的帐号
nobody4 UID:65534 SunOS4.0或者4.1的匿名帐号
/etc/shadow文件
loginID:password:lastchg:min:max:warn:inactive:expire
/etc/group文件
groupname:group-password:GID:username-list
从命令行建立和管理帐号
建立帐号
useradd [-u uid] [-g gid] [-G gid [,gid,..]] [-d dir] [-m] [-s shell] [-c comment] loginname
其中-m和-d有什么区别呢?
相关命令
usermod userdel groupadd groupmod groupdel
usermod [-u uid[-o]] [-g group] [-G group [,group…]] [-d dir] [-m] [-s shell] [-c comment] [-l newlogname] [-f inactive] [-e expire] login
userdel [-r] login
groupadd [-g gid [-o]] groupname
groupmod [-g gid [-o]] [-n name] groupname
shadow中各列为:
loginID:password:lastchg:min:max:warn:inactive:expire
第3章 系统安全
系统安全概述:
1. 创建:/var/adm/loginlog用于保存失败登陆。
2. 使用命令finger who rusers来监视系统使用。
3. 使用su命令来进行用户切换。
4. 修改/etc/default/login来限制root用户的登陆。
5. 使用id groups来了解组成员。
6. 使用chown chgrp来改变文件的所有者和组。
7. 了解setuid setgid 访问控制列表(ACLs)
8. 通过3个文件来控制远程访问:/etc/hosts.equiv $HOME/.rhosts /etc/ftpusers
使用pwconv命令:
使用pwconv命令依赖与passwd中的密码区’x’。来同步etc/passwd etc/shadow这2个文件。以passwd为主来控制shadow中的各项。
如果/etc/shadow文件不存在,pwconv将利用/etc/passwd文件来建立
如果/etc/shadow是存在的,则执行下面的步骤
。如果条目在/etc/passwd文件中存在,而不在/etc/shadow文件中,则在shadow文件中添加
。如果条目在/etc/shadow文件中存在,而不在/etc/passwd文件中,则在shadow文件中删除。
记录不良登陆信息:
当一个用从本地或者远程利用命令行方式登陆进系统。login程序参考/etc/passwd和/etc/shadow文件中有授权的用户来检测用户名和密码。
如果拥护提供的是/etc/passwd中的登陆名,并且提供了这个登陆名的正确的密码,login程序就会允许访问系统。
如果用户名不存在于/etc/passwd文件中或者密码不是这个用户名的正确密码。login程序就拒绝访问系统。
可以保存不良的登陆尝试到一个文件。/var/adm/loginlog
系统默认这个文件是不存在的,需要用#touche /var/adm/loginlog来建立他,并且赋予他只有root才有的读写权限。
loginlog中的每个条目都包含一次不良登陆记录,每个条目包括用户登陆名,TTY设备和不良登陆尝试时的时间。
所有的5次登陆失败的信息,系统会自动计入这个文件。
监视系统的访问:
显示系统上的用户用:
who命令。这个命令的信息来源于/var/adm/utmpx。
登陆设备类型
。console:用于显示系统启动和错误信息的设备
。pts:表示一个不需要物理设备的登陆或者窗口会话的伪设备。
。term:一个在物理上连接的设备。如串口。包括一个终端或者一个modem。
显示详细的关于本地或远程用户的信息:
finger -m username
finger -m username@remotehostname
-m 只与用户名相匹配
finger命令显示用户的登陆名,家目录路径,登陆时间,登陆设备名,/etc/passwd中所描述的数据,登陆shell和主机名。
如果用户在他的家目录中建立标准的ASCII文件 .plan .projects。finger命令的输出就来源于这二个文件。
这些文件传统意义上用于用户当前的计划和项目的大纲。并且必须建立文件访问权限为644。
显示登陆活动的记录:
使用last命令来记录所有的登陆和退出。Last命令来源于:/var/adm/wtmpx。
每一条登陆包括用户名,登陆设备,登陆主机,日期和时间,总共用时。包括reboot的时间。
显示远程系统上的用户:
rusers 命令类似于who命令。但是,显示的用户是登陆在远程主机上的。如果rpc.rusersd后台程序(既守护程序)是打开的,远程主机只回应rusers命令。网络服务器则返回远程主机上的列表。
Ruser[-l]命令用于显示远程的登陆。登陆用户,TTY端口(登陆设备)月,日登陆时间和空闲时间。如果用户没有空闲则最后部分显示无时间。
控制root访问:
系统管理员应该仅仅在完成管理任务时使用root帐号,尽量避免利用root帐号完成日常工作。
这样可以保护系统不被未经授权的访问威胁。
可以用以下方式变更为root
。直接使用root登陆,并且提供正确的root口令
。使用正常的用户登陆,然后调用su命令并且提供正确的root口令。
yuhuohu回复于:2007-01-16 16:00:55
好帖
风之幻想回复于:2007-01-16 16:01:14
使用su命令改变为其他用户:
命令格式:
su [-] [username]
使用su命令必须要提供正确的password除非已经是root用户。如果密码是正确的,su建立一个新的shell进程,根据新用户在/etc/passwd中shell区域中的定义。
su -(破折号)选项指定一个完整的登陆。他改变用户的工作环境为期待的用户。
有效的UID和有效的GID
当运行新的su命令,有效的UID和有效的GID就切换到新用户了,并且由EUID和EGID来决定访问文件和目录的权限。
使用whoami命令:
使用whoami命令显示有效的当前用户名whoami命令显示当前的用户ID。
Whoami显示的是已交换的用户。
Who am i显示的是原始用户。
Sysadmin组
任何用户都属于Sysadmin组(GID14)就可以运行admintool来管理本地的系统文件和功能.
管理用户的访问:
本地的/etc/default中有三个系统文件:
1. Root用户可以监视谁在使用su命令在/etc/default/su。
2. 在/etc/default/login中可以限制root用户的访问。
3. 在/etc/default/passwd中能够对password进行管理。
监视su的使用:
为了保证系统的安全必须要监视su 转变为root的使用情况。在/etc/default/su中。
CONSOLE默认是注释的。所以,不管su的记录是成功还是失败都被记录下来。如果删除注销CONSOLE的值被定义为/dev/console则只记录正确的root转换。而所有不成功的登陆则被记录在/var/adm/sulog中。
SULOG的值指定有那个文件来记录su的记录。如果不定义则su的记录是关闭的。
在/var/adm/sulog中+号表示成功转换,-号表示不成功转换。
限制root用户的访问:
在/etc/default/login通过限制root用户访问指定的设备来保护root用户的帐号。
你可以设置三种不同的CONSOLE值来进行root用户的访问限制。
1. 如果将CONSOLE=/dev/console则root用户只能通过console登陆。其他试图从其他设备登陆的root将提示给错误信息。
2. 如果#CONSOLE=/dev/console则root用户可以从任何终端和网络中登陆。
3. 如果CONSOLE的值为空则root用户从任何地方都不能登陆。甚至console。只有一种方法就是用系统其他用户登陆,然后通过su变成root用户登陆。
执行大环境系统密码老化原则:
你可以设置整个系统的密码规则,而不需要为/etc/shadow中的每个用户进行设置。这样是通过修改/etc/default/passwd来完成的。它有三个不同的值域MAXWEEKS,MINWEEKS,PASSLENGTH。
在/etc/default/passwd中MAXWEEKS指定了密码最大的有效周数如果这个值为空则必须依照/etc/shadow中的MAX来决定密码的最大周数。MINWEEKS指定了密码最小的周数,如果这个值为空,则必须依照/etc/shadow中的MIN来决定密码的最小周数。
PASSLENGTH的值指定了所有的用户的密码最小长度在6-8位。系统默认为6位。如果设置超过了8位则系统默认为8位。
决定用户组的成员:
groups命令可以用来显示用户组的成员。
Groups (列出本组成员)
Groups 用户组名
定义用户帐号:
你可以使用id命令通过列出UID,用户名,GID和组名来描述用户。Id命令返回的是EUID和名字。如果user1登陆用su切换成user4则id命令返回的是user4的信息。
Id [options] [username]
要查看指定用户的所有信息使用-a选项。
使用chown命令改变文件的所有者:
你需要将系统中文件和目录改变所有者的时候就使用chown命令。默认的只有root用户可以改变文件和目录的所有者。
命令格式:
chown [option(s)] user_name filename(s)
chown [option(s)] UID filename(s)
注意:用户名和UID必须存在于/etc/passwd中。
-R选项在改变目录所有者时使目录中的所有子目录和文件都改变所有者。
在改变目录所有者和组成员同时进行的时候需要class。例如:
chown user3: class file2
chown –R user3:class dir1
setuid许可:
当setuid许可设置在一个可执行文件上的时候,一个用户或进程运行这个可执行文件的时候将获得这个文件属主的运行权限代替用户的权限。
这样就允许用户访问那些通常情况下只有用户所有者本身才能访问的文件和目录。加上许多可执行的程序必须运行在象root,sys,bin这样的工作环境中。
Setuid许可在所有者可执行的位置上显示一个“s”。
注意:如果大写字母“S”出现的时候它表示setuid是打开状态而可执行状态“x”是关闭或者被拒绝状态。
Root用户和所有者可以利用chmod命令和8进制数值4000设置setuid许可在一个可执行文件上。
例如:
chmod 4555 executable_file
寻找setuid许可的文件输入:
find / -perm -4000
setgid许可:
setgid许可与setuid许可是类似的除了用户或者进程的有效的GID改变为文件所属的组属主。同样,访问也是获得基于组所分配的许可。
Setgid许可在组的可执行位置上显示一个“s”。
注意:如果小写字母“l”出现,它代表着setgid是打开的而可执行的方式是被关闭或者拒绝的。这个指示代表着当访问的时候文件和记录是被强制锁定占用的。
Root用户和所有者可以使用chmod命令和8进制数值2000设置setgid许可在一个可执行文件上。
例如:
chmod 2555 executable_file
共享目录:
setgid在创建共享目录的时候是非常有用的。
当setgid设置在一个目录上的时候,创建与这个目录上的文件属于这个组同时属于这个组的目录。
例如:一个用户具有写的权限在这个目录中,并且创建了一个文件,那么这个文件属于与组同样的目录。并且没有用户组。
建立一个共享目录,必须建立setgid
#chmod g+s share_directory
搜索已经存在了setgid的文件和目录
#find / -perm –2000
Sticky Bit许可:
Sticky Bit是在公共可写目录中保护文件的特殊许可。
如果一个目录有sticky Bit设置,一个仅仅可以被文件的所有者,目录的所有者或者root删除。这可以防止一个用户在公共可写目录中删除其他用户的文件。
Sticky Bit显示是一个“t”在other的执行区域。
注意:如果大写字母“T”出现它表示Sticky Bit是打开的而可执行方式是关闭或者是被拒绝的。
Root用户和所有者可以使用chmod命令和8进制数值1000设置Sticky Bit许可在目录上
例子:
#chmod 1777 public_directory
搜索已经设置了Sticky Bit许可的目录
# find / -type d –perm -1000
注意:想了解更多的关于Sticky Bit的信息请输入命令:man sticky。
访问控制列表:
访问控制列表(ACLS)当传统的文件保护不足的情况下可以提供对文件访问更加优化的控制。
一个ACL能够提供更好的安全设置通过你为文件所有者,文件组,其他特殊用户和组定义的访问许可。ACL同样还可以为每一个种类设置默认的许可。
例如:如果系统管理员希望每一个在特定组中的成员可以读一个文件,可以简单的为这个组设置这个文件的读许可。
无论如何,如果系统管理员希望只有一个人可以对这个文件进行写操作呢?ACLs可以提供这种级的安全,而传统的UNIX文件系统的保护则不能提供这个功能。
ACL扩展了标准的UNIX的访问许可。
ACL信息是保存的并且使每一个文件或者目录联系起来。
ACL命令和选项:
Getfacl filename(s) 显示在一个文件上的ACL条目。
Setfacl options filename 在一个文件上设置,增加,修改和删除ACL条目。
Setfacl –m acl_entries 在文件上创建或修改ACL条目。
Setfacl –s acl_entries 删除旧的ACL条目用新的ACL条目代替旧的。
Setfacl –d acl_entries 在一个文件上删除一个或多个ACL条目。
Setfacl –f acl_file 指定一个ACL设置文件包括在其他文件上设置的许可列表。acl_file仅仅是这个命令的一个变量
Setfacl –r 为ACL mask的重新计算许可。
允许在ACL 上指定mask是被忽略的和被替代的,当需要给任何增加的用户,所有者,组和在ACL 上增加的组的条目给予访问的最大允许设置的时候。
ACL条目:
Entry-type:为文件所有者,所有者组,指定用户,增加的组和ACL mask的条目设置许可。
UID or GID:用户名或UID,组名或GID
Perm:条目类型的许可设置。你能够通过字母:r,w,x来设置也可以通过8进制数字0-7来设置。
Setfacl命令使用这些ACL条目在文件上设置文件的许可。
例如:
u[ser]::perm ----------设置所有者的许可。
。g[roup]::perm---------设置所有者所在组的许可。
o[ther]:perm-----------设置用户许可,除了所有者或者所有者所在组的成员。
U[ser]:UID:perm or u[ser]:username:perm--------为指定用户设置许可。这个用户必须在/etc/passwd下存在。
G[roup]:GID:perm: or g[roup]:groupname:perm---------为指定的组设置许可。这个组必须在/etc/group中存在。
M[ask]:perm----------------设置ACL mask。Mask条目需要最大的许可允许所有的用户,除了所有者和所有组。Mask是为所有用户和组改变权限的快速的方法。
为文件增加和修改ACL许可:
你能够使用setfacl –m为一个或多个文件增加和修改ACL条目。
命令格式:
setfacl –m acl_entry,acl_entry filename1 [filename2 …]
例如:
setfacl –m user:user8:6 file.txt
查看已有文件的ACL:
查看已有文件的ACL有2中方式:
1. 使用getfacl命令。
2. 使用ls –l 命令。
使用ls –l显示的时候,任何已经有一个ACL的文件都权限模式的末端附加一个“+”。
注意:如果一个文件为增加的用户和组没有设置ACL这个文件被考虑到的细小的ACL文件,这个“+”是不显示的。
删除文件的ACL条目:
从一个文件上删除ACL条目。使用命令setfacl –d 命令。一个ACL条目能用一个或者多个逗号分开没有许可的ACL条目。删除ACL条目要指定条目类型的UID(用户名)GID(组名)。
文件所有者,文件组所有者,其他和ACL mask不能删除ACL条目。
命令格式
setfacl –d ACL_entry filename(s)
or
setfacl –d ACL_entry,ACL_entry filename(s)
例如:
setfacl –d u:user8 file.txt
替换文件的ACL条目:
要从命令行重新定位文件上的ACL条目,最少必须指定设置的用户,组,其他和mask许可及文件名。
命令格式
setfacl –s u::perm,g::perm,o:perm,m:perm,[u:UID:perm],[g:GID:perm] filename(s)
管理远端访问的发布:
在网络上有着更多的访问,这对远程系统用户来说是有益的。无论如何,无限制的访问和共享的数据和资源都需要考虑安全问题。
一个本地主机的安全尺度一般是基于来自远程系统用户的已存在的能够进行确认,限制和块操作方式。
3个网络文件列出了为处理远程用户访问本地系统的基本安全发布提供确切的计划。
/etc/hosts.equiv文件。
$HOME/.rhosts文件。
/etc/ftpusers文件。
/etc/hosts.equiv和$HOME/.rhosts文件:
代表性的说,当一个远程用户要求注册访问本地主机的时候,第一个要读的文件就是本地主机上的/etc/passwd。在这个文件中为每一个用户都设置一个条目,能够使得用户从远程系统上登陆本主机。如果帐号还结合有密码,则远程用户必须要提供密码才可以登陆本地系统。
当在/etc/passwd中没有条目的情况下,远程用户的访问是被拒绝的。
/etc/hosts.equiv和$HOME/.rhosts文件是辅助的一个标准的基于密码认证来决定,如果一个远程用户允许访问本地主机,并且认证为本地用户。
这些文件提供远程认证定义处理。
这一过程第一个验证的是/etc/hosts.equiv然后验证$HOME/.rhosts文件在要求访问本地用户的家目录的时候。基于的信息包含在这2个文件中(如果它们存在),决定访问是允许还是拒绝。
/etc/hosts.equiv文件应用于全部系统上,同时,独立用户能够保持他们自己的$HOME/.rhosts在他们自己的家目录 。
表3-1可看书。
/etc/hosts.equiv和$HOME/.rhosts文件的条目:
当/etc/hosts.equiv和$HOME/.rhosts文件具有相同的格式时,相同的条目在不同的文件中有不同的效果。
大体格式呈现在这里。解释和列举在所属页中每个类型的条目所呈现出的意图。
2个文件都有一个一行的条目,他们可能是下面条目中的一种:
hostname
hostname username
+
注意在/etc/hosts.equiv和$HOME/.rhosts文件中的主机名必须是官方的名字不能使用假名。
如果只使用了hostname,那么所有的用户都信任指定的主机 ,提供他们已知的本地主机。
如果hostname和username都使用了,那么只有指定的远程用户从指定的远程主机可以访问到本地主机。
一个文件中只包含了一个单独的加号,任何一个在网络上的远程主机是被信赖的不需要登陆密码。
/etc/hosts.equiv文件:
为普通用户在/etc/hosts.equiv中使用定义远程用户和远程主机是被信任的。
注意:在/etc/hosts.equiv文件并不检查root用户的访问。
如果本地主机的/etc/hosts.equiv文件包含一个远程主机名,那么在远程主机上的所有的正常用户是被信赖的并且不需要密码就可以登陆到本地主机。每个远程用户必须在本地主机上/etc/passwd中已经有条目的。否则被拒绝访问。
这在正常用户在多个不同系统上有帐号的情况下是非常有用的,排除在网络上传送ASCII密码的安全风险。
/etc/hosts.equiv文件默认是不存在的,如果远程用户需要访问本地主机的话,就建立文件。
$HOME/.rhosts文件:
/etc/hosts.equiv文件适用于广泛的非root用户,.rhosts则适用于指定的用户。
所有的用户包括root,都可以自己的home目录中建立并且维护他们自己的.rhosts文件。
例子:如果用户从远程主机运行rlogin程序并且获得root权限访问到本地主机,程序就会在root的本地主机的home目录中检测/.rhosts文件。
如果远程主机名在文件中列表,他就被认为是可信赖主机并且允许远程的用户访问,在这个过程中的root访问,是在本地主机上得到的。
$HOME/.rhosts文件默认是不存在的,需要用户在自己的home目录中建立。
限制FTP登陆:
Solaris操作系统提供一个叫做/etc/ftpusers的ASCII文件。ftpusers文件列出的是禁止运行FTP登陆到系统的用户名。
在文件中的每一行包括一个被限制的用户名例如:
username
当ftp会话被调用的时候,FTP服务器in.ftpd守护进程会读这个ftpusers文件,如果登陆名与列表中的一个匹配,就拒绝会话,并返回“login faild”信息。
默认的,ftpusers文件包括下列系统帐号:
root;daemon;bin;sys;adm;lp;uucp;nuucp;listen;nobody;noaccess;nobody4
可以添加任何用户名;这些条目中的帐号必须是在/etc/passwd文件中存在的。
因为Solaris 8新的安全策略不允许root登陆,所以root也被包括在/etc/ftpusers文件中。
如果在/etc/ftpusers中删除root条目,那么root登陆权限就将被允许,/etc/default/login文件肯定反映远程root登陆权限。
/etc/shells文件:
/etc/shells文件包含的是系统中shell的列表。在实际应用中,例如sendmail和ftp,可以使用这个文件来决定一个shell是不是有效的。
这个文件默认是不存在的。
注意:如果这个文件不存在,则getusershells(3c)使用它自己的shells列表。
建立文件时,希望认可的每个shell必须有一个单独的条目行,条目行由shell的路径组成。
#touch /etc/shells
/sbin/sh
/bin/sh
/bin/ksh
当/etc/ftpusers文件禁止某个用户ftp连接的时候,可以建立一个/etc/shells文件来允许只有那些运行了在文件中定义了的shell的用户进行ftp连接。
如果某个shell不在这个文件中,那么任何用户运行了这个未定义的shell都将不能允许利用ftp连接到系统。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者