全部博文(293)
分类: LINUX
2010-01-28 08:56:46
一、介绍设定及管理用户的策略时必须考虑哪些因素
1、除系统帐号之外还有哪些用户会进来存取系统资源,是否需要限制这些用户只能在特定时间或特定地点来连线。
2、这些用户的帐号及密码可以使用多长时间,这可以让我们决定是否需要强制让用户定期变更密码。
3、针对硬件的考虑,例如可使用硬盘的容量或CPU的使用限制,可使用磁盘配额功能限制用户可以使用的硬盘容量。
二、介绍/etc/passwd 这个存放有关用户信息的文件
1、这个文件是Linux系统中存来存放用户信息的,其中存放了所有用户登录系统时需要用到的帐号信息,而且其它系统服务或应用程序所使用的系统帐号也存放在这里。
在这个文件中,每个用户都占用户行记录,并且用6个冒号“:”分隔了7个栏位,7个栏位说明如下:
注:如果要查看这个文件需要使用root帐号登录系统,才可以查看
(1)用户名;
(2)X 表示这个帐号需要使用密码登录系统,空白表示不用输入密码就可以登录系统;
(3)这个帐号的UID,其中 root 帐号的 UID一定是0,1~499保留给系统服务和应用程序所使用的系统帐号,普通帐号从500开始,每个用户都会有自己的UID;
(4)记录用户的GID,就是用户所属组的组ID号;
(5)可以写入这个帐号的注解,例如这个用户的全名,通讯信息等说明,
· finger 用户名 命令:可显示这个栏位的信息及一些其它的有关这个用户遥信息;
· chfn –o china user1 命令:为user1用户加入位置在中国(china)办公室的注解,-o 表示要加入office的注解,china 是 –o 的参数指定办公地点在中国;
(6)定义了用户的家目录的路径;
(7)当这个用户帐号登录后,第一个要执行的程序,预设情况下这个栏位的记录会在 /bin/bash中,当用户登录后,第一个要执行的程序是shell;
· 如是这个栏位的记录是 /sbin/nologin 表示这个用户只能根据指定的方式登录到系统中,不能从本地登录;
例:ftp:x:14:50:FTP USER:/var:/ftp:/sbin/nologin 这个ftp帐号只能以FTP方式登录系统;
· 如果这个栏位是 /bin/false 说明如下:
例:mailuser:x:507:507::/home/mailuser:/bin/false 这个mailuser帐号只能用来收发邮件,而不能登录系统
2、passwd这个文件的权限必须是 “rw-r--r—”,其中r的权限不可修改,因为用户在登录时都需要读取这个文件;
三、介绍添加一个用户及相关信息
1、useradd 命令添加一个用户
格式: useradd 用户名
2、使用useradd命令添加用户时,系统会去修改 /etc/passwd 文件,添加一行这个用户的记录,并将用户名的密码存入 /etc/shadow,在/etc/group中添加一条与用户名同名的组记录,并且变更这个用户家目录的权限,以及所有权;
例:
3、passwd 命令设置及修改用户的密码
格式:passwd 用户名 如果未指定用户名表示修改当前正在使用的用户名的密码
注:设定密码时,密码不会显示在屏幕上。
在设定密码时出现以下信息及说明如下:
BAD PASSWORD:it is too short 表示设定的密码太短了,太短的密码也是可以使用的,设定密码时需要输入两次才可以设定成功;
· 设定完密码查看 shadow 文件,可以看到新添加的用户密码的栏位已由“!!”变为了“$1$”开头,表示密码设定成功;
4、使用newusers命令导入提前做好的文件来建立大量的用户
使用VI编辑器根据passwd文件的格式来创建来用添加用户名的文件,如下图:
注:使用newusers命令建立的用户,不会把 /etc/skel/中设定环境变量的文件复制过来,也就是说使用这种方法建立的用户家目录是空的。
四、介绍 User Private Group (UPG 用户私有组)
1、UPG是Redhat 独有的一种机制,UPG机制会在我们建立用户时,为这个用户建立一个与用户同名的私有组,并且会把用户加入到这个组中,所有使用这个用户增加的文件,都会属于这个私有组。
2、此法优点如下:
可以防止这个用户建立的新文件不属于任何一个组
五、介绍如何管理组
1、系统将组的信息存储在 /etc/group这个文件中,可直接修改这个文件来管理组,这个文件中内容说明如下:
2、使用命令来管理组
(1)groupadd 创建一个新组,格式:groupadd 新建立组名
(2)groupmod 修改组内容,格式:例:groupmod -n group2 group1 将group1重命名为group2 -n表示name;
(3)groupel 删除一个组,格式:groupdel 要删除的组名
六、修改或删除一个帐号
1、系统中的用户帐号信息存放在 /etc/passwd 文件中,如想修改用户帐号的信息有以下两种方法:
· 可以手动修改 passwd 文件中的内容;
· 使用 usermod 命令,格式:usermod [参数] 用户名
在修改用户帐号前,可以使用 id username 查看用户帐号的一些基本信息
例:·使用命令修改用户的家目录
usermod -d /home/user-1 user1 重新指定user1家目录的路径是 user-1 ,注:这个命令在指定家目路时只能修改passwd这个文件内容,但不能创建家目录,必须手动创建并且修改这个目录的拥有者及拥有组才能真正的将这个目录指定为家目录。
·将用户帐号加入其它组中
usermod –G user2 user1 将用户帐号user1加入到user2组中
·修改用户帐号的主要组
usermod -g user2 user1 将用户帐号user1的主要组变更为user2
·锁定用户帐号
usermod –L user1 将user1帐号锁定禁止登录,在passwd文件中密码栏位前面会有一个“!”表示禁止登录
·解除用户帐号的锁定
usermod -U user1 解除user1帐号的锁定
2、删除一个用户帐号
(1)手动删除:共四步:1、手动删除passwd文件中这个用户帐号的记录 2、手动删除shadow中这个文件中这个用户帐号的密码记录 3、手动删除group这个文件中这个用户帐号的组记录 4、手动删除 /var/spool/mail/这个用户帐号所对应的文件,这四项都删除完成后才算是真正的删除了这个用户帐号。
(2)使用userdel命令删除用户帐号
userdel -r username
注:这个命令不会删除这个用户帐号所对应的私有组
七、密码有效期的设定
1、预设情况下用户的密码永远不会过期;
2、基于安全性考虑,应该强制设定密码的有效期,也就是强迫用户每隔一段时间就修改密码;
3、可以修改 /etc/login.defs 文件中的设定,来修改预设的用户密码的有效期;
4、可使用 chage 命令修改建立好的用户密码的有效期,格式:chage [参数] 用户名
5、存储用户密码的 shadow 文件的说明如下:
(1)用户名,与passwd文件中的用户名对应;
(2)密码(经过MD5加密过):1、以“$1$”开头表示用户已设定密码;2、只有“!!”表示用户未设定密码;3、以“!”开头表示这个用户帐号又锁定不能登录系统;
(3)上次更新密码的日期,这个日期是以1970年1月1日做为基数1相加得来的,过一天就加一(例1971年1月1日就用366表示)
·chage –l username 可查看用户是什么时间修改密码的;
·chage –d 2009-06-16 username 把用户上次修改密码的日期指定为某一个日期
(4)密码至少需要使用多长时间才可以修改密码,1表示至少需要1天,0表示不限制,
· chage –m 1 username 设定用户至少需要1天时间才可以修改密码;
(5)密码使用的期限,如7表示每隔7天就需要修改一次密码,99999表示不受限制永远有效;
· chage –M 7 username 设定用户每隔7天就必须重设密码;
(6)密码到期前多长时间,提示用户修改密码,如7表示到期前7天提示用户修改密码;
(7)密码过期多长时间未修改密码将锁定用户帐号,如3表示密码过期3天后锁定帐号;
· chage –I 3 username 设定密码过期3天后锁定帐号;
(8)帐号到期日,这个日期也是以1970年1月1日为基数每过一天加一得来的,
· chage –E 年-月-日 username 指定用户在指定日期锁定用户帐号
(9)保留栏位,暂未使用;
八、用户登录前会执行哪些脚本程序
1、第一个执行的脚本文件是 /etc/profile 这个文件,当被执行后,会去调用 /etc/profile.d/ 下的所有以 .sh 结尾的文件;
2、当profile.d下的脚本文件都执行完后,会再去执行用户家目录下的 .bash_profile 这个文件文件执行完后会再去调用家目录下的 .bashrc 这个脚本文件,
当用户登录系统后shell脚本的执行顺序如下:(以下又称为:login shell scripts)
(1) /etc/profile
(2) /etc/profile.d/*.sh
(3) ~/.bash_profile
(4) ~/.bashrc
(5) /etc/bashrc
九、当启动一个bash shell 时会执行哪些脚本文件
1、当启动一个bahs shell 时,会执行以下这些脚本文件(以下又称为:non login shell scripts)
也就是当用户使用 su 命令切换用户时,就会执行下面的脚本文件
~/.bashrc
/etc/bashrc
/etc/profile.d/*.sh
下面是 profile 和 bashrc 这两种脚本文件的对比,如下表:
profile | bashrc | |
用途 | 设定环境变量的值 | bash的配置文件 |
作用于所有用户(当用户登录时都会执行) | /etc/profile 中的值对所有的用户启作用 | /etc/bashrc 对所有用户启作用 |
只作用于指定用户 | ~/.bash_profile 定义自己专用的变量 | ~/.bashrc 使用者专用的 |
特性 | ·只有在使用者登录时才执行,新的设定在用户登出后再次登录才生效 | 不论是在用户登入到系统中来还是开启一个subshell时系统都会去执行这个脚本文件 |
十、介绍如何切换用户
1、su命令切换用户,格式如下:
su [-] [username] 切换用户
su [-] [username] –c command 如果切换用户只是为了执行一条命令就使用这条命令切换
2、su 这个命令可以允许我们暂时切换为另一个用户身份来工作,默认情况下,在不指下用户名时,将被切换到 root 帐号。
如是只执行 su - 将切换到root身份登录并加载login shell
3、“-”这个参数说明
加“-”表示:开启一个新的login shell 就是使用新切换的用户的shell环境主,会重新执行一次下面的这些login shell脚本文件
(1) /etc/profile
(2) /etc/profile.d/*.sh
(3) ~/.bash_profile
(4) ~/.bashrc
(5) /etc/bashrc
不加“-”表示:未开启新的login shell,使用原有用户身份的shell环境(也就是开启一个no login shell)只会执行这些no login shell脚本文件;
(1)~/.bashrc
(2) /etc/bashrc
(3) /etc/profile.d/*.sh
注:如果由root用户切换到其它用户将不需要输入密码,如果由普通用户切换到root用户需要输入root密码才可以登录。
十一、介绍sudo ,让普通用户执行只有root才可执行的命令
1、可以在/etc/sudoers文件中定义好某个特定的使用者帐号,可以执行某一个特定的只有ROOT才可执行的命令,那么这个用户就可以使用root的UID和GID执行特定的命令。
2、其它的目录下的sudoers中未定义用户帐号,当试图使用sudo来执行命令时,系统就会通过发邮件的方式自动通知管理员有未经允许的用户试图执行未经允许的命令。
3、例:使用visudo命令来编辑sudoers文件,如果使用vi编辑器打开sudoers文件将是以只读方式打开无法进行编辑;
(1)visudo -f /etc/sudoers 打开sudoers文件进行编辑
按I键进入编辑模式,说明如下图所示
编辑完这个文件后,保存退出。
(2)执行 su – www1 切换到www1用户,执行 sudo httpd 这个命令来启动或重启httpd这个服务,但这里需要输入www1用户的密码;
注:这里还未安装httpd这个服务,等后面学完如何设定httpd这个服务再回头来测试这个实验。
(3)如果有未经许可的用户执行这个命令,将会显示 username is not in the sudoers file. 表示username用户未加入sudoers文件中
This incident will be reported. 表示系统会自动通知管理员有用户示经许可使用的命令。
(4)这时切换到root帐号,执行mail命令就可能看到有新邮件进入,查看邮件就可以看到哪个用户未列入sudoers文件中,但他在这台主机上试图使用root身份执行了哪个命令。
十二、介绍网络用户帐号
1、网络用户帐号是相对本地用户帐号来说的,用户帐号验证流程如下图:
(1)用户登录后系统先去比对本地的用户帐号及密码,如果验证成功就可以登录本地,这称为:本地用户;
(2)如果本地未验证成功,系统将连接远程NIS或 LDAP服务器验证用户名密码,如果验证成功,这称为:网络用户
(3)如果两种方式都未通过验证,这个帐号必须重新输入用户名及密码重新登录;
2、在一般环境中,每台主机都有自己的用户名密码信息库,用户登录时会去使用本机中的用户名密码来做验证,如果有多台主机,需要将每台主机设置同样的用户名密码才可以让这个用户在其它主机登录,NIS服务器或LDAP服务器就是将这些用户帐号及密码集中存放到一台主机上,将用户登录时去NIS或LDAP服务器上验证用户名及密码来登录主机,这样需只要在服务器上设置一次用户名密码就可以了,而NIS负责管理的这个区域的用户名及密码,这个区域就称为:域(domain)。
3、用户信息资料库分为两部分:
(1)用户帐号资信息,例如:UID、预设的SHELL、家目录路径及组成员的资料等;
(2)用户帐号的验证信息,例如:用户登录时需要的密码;
4、如果需要把验证密码的工作交给网络上其它的主机完成,需要修改 /etc/nsswitch.conf 文件来决定要采用哪种方式验证用户名及密码;
十三、介绍设定验证用户帐号的方式
1、执行 system-config-authentication 命令开启图形界面的验证设定工具;如果在命令后面加上“—nox” 参数则会开启界面的验证设定工具;
authconfig 命令开启文字界面的验证设定工具
2、验证工具支持以下几种提供验证用户帐号的服务 注:如果不做设定只使用本机文件验证。
(1)NIS (2)LDAP (3)Hesiod (4)winbind
3、验证设定工具可以支持以下几种验证使用者的方式,未做设定使用MD5技术,将用户遥密码加密后再和本机中的密码资料库比对,也称为:NSS验证方式;kerberos 验证、LDAP验证和SMB、Winbind是两种整合一致平台的验证技术,可以把验证用户及密码的工作交给微软件的DC去做。
举例说明,如下图:
执行 system-config-authentication 命令出现以下界面
执行 authconfig 命令开启文字界面工具
NIS及LDAP服务器的建立还未提及,这部分只暂做了解。
转自:http://adairnet.spaces.live.com/blog/cns!F5DC2937B72C0783!543.entry