4 /etc/gshadow  用户组帐号的加密文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

[root@jekay /]# cat /etc/gshadow

用户组名    用户组密码   用户组的管理者   组成员列表

root:::root

bin:::root,bin,daemon

daemon:::root,bin,daemon

sys:::root,bin,adm

adm:::root,adm,daemon

tty:::

……

/etc/gshadow /etc/group 的加密文件;

用户组密码,用于结构比较复杂的权限模型;

5 /etc/skel 目录   用来初始化用户的主目录

[root@jekay /]# ls -al /etc/skel

total 20

drwxr-xr-x    2 root     root         4096 Mar 27 16:59 .

drwxr-xr-x   32 root     root         4096 Mar 27 17:04 ..

-rw-r--r--    1 root     root           24 Feb 11  2003 .bash_logout

-rw-r--r--    1 root     root          191 Feb 11  2003 .bash_profile

-rw-r--r--    1 root     root          124 Feb 11  2003 .bashrc

目录中存放有与用户相关的配置文件。一般来说,每个用户都有自己的主目录,用户

成功登录后就处于自己的主目录下。

     当为新用户创建主目录时,系统会在新用户的主目录下建立一份 /etc/skel 目录下所有文件的拷贝,用来初始化用户的主目录。

2、超级权限控制sudo 的配置文件 /etc/sudoers

root 超级用户是系统最高权限的拥有者;几乎无所不能,多数的系统设置和权限设置对 root 帐号来说是无用的;所以 root 帐号权限管理不善就会造成系统安全的隐患;

在对系统操作时尽量避免使用 root 登陆,也应该尽量避免直接使用 root 帐号对系统进行配置和操作;但有时普通用户可能需要 root 权限来完成必要的系统管理工作,我们可以使用 su sudo 来实现;

用户帐号类型:

超级用户: Linux 操作系统中, root 的权限是最高的,也被称为超级权限的拥有者。普通用户无法执行的操作, root 用户都能完成,所以也被称之为超级管理用户。在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对 root 除外。 root 用户的特权性还表现在 root 可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为 root 是系统中权限最高的特权用户); UID 0

普通用户和伪装用户: 与超级用户相对的就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户;但为了完成特定的任务,普通用户和伪装用户也是必须的; Linux 是一个多用户、多任务的操作系统,多用户主要体现在用户的角色的多样性,不同的用户所分配的权限也不同;这也是 Linux 系统比 Windows 系统更为安全的本质所在;

但值得注意的是超级用户的操作是在系统最高许可范围内的操作;有些操作就是具有超级权限的 root 也无法完成;如: /proc 目录、加了写保护的文件等;

[root@jekay /]# ls -ld /proc

dr-xr-xr-x   47 root     root            0 Mar 27 12:03 /proc

 

[root@jekay tmp]# chattr +i file

[root@jekay tmp]# rm -f file

rm: cannot remove `file': Operation not permitted

 

获取超级权限的过程,就是切换普通用户身份到超级用户身份的过程;这个过程主要是通过 su sudo 来解决;

使用 su 命令临时切换用户身份

su 命令就是切换用户的工具;

su [OPTION 选项参数] [用户]
  -, -l, --login 登录并改变到所切换的用户环境;
  -c, --commmand=COMMAND 执行一个命令,然后退出所切换到的用户环境;

 

su 在不加任何参数,默认为切换到 root 用户,不改变 shell 环境;

su 加参数 - ,表示默认切换到 root 用户,并且改变到 root 用户的环境;

su 的确为管理带来方便,通过切换到 root 下,能完成所有系统管理工具,只要把 root 的密码交给任何一个普通用户,他都能切换到 root 来完成所有的系统管理工作;但如果登陆的用户比较多,而多个用户都需要使用 root 权限,这时就可能会造成安全隐患,而且由于切换的过程是打开 root shell 环境,很多情况下也会造成 root 权限外泻;

sudo工具

由于 su 对切换到超级权限用户 root 后,权限的无限制性,所以 su 并不能担任多个管理员所管理的系统。通过 sudo ,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道 root 密码,所以 sudo 相对于权限无限制性的 su 来说,还是比较安全的,所以 sudo 也能被称为受限制的 su ;另外 sudo 是需要授权许可的,所以也被称为授权许可的 su

    sudo 执行命令的流程是当前用户切换到 root (或其它指定切换到的用户),然后以 root (或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过 sudo 的配置文件 /etc/sudoers 来进行授权;

sudo 的配置文件是 /etc/sudoers ;可通过命令 visudo 直接进行编辑;

通过 sudo -l 来查看哪些命令是可以执行或禁止的;

/etc/sudoers 文件中每行算一个规则,前面带有 # 号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用 \ 号来续行,这样看来一个规则也可以拥有多个行;

/etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的;

默认 /etc/sudoers 配置文件

[root@jekay]# cat /etc/sudoers

# sudoers file.

# This file MUST be edited with the 'visudo' command as root.

# See the sudoers man page for the details on how to write a sudoers file.

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification

# User privilege specification

root    ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands

# %wheel        ALL=(ALL)       ALL

# Same thing without a password

# %wheel        ALL=(ALL)       NOPASSWD: ALL

# Samples

# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom

# %users  localhost=/sbin/shutdown -h now

 

别名规则定义格式如下:

Alias_Type NAME = item1, item2, ...

Alias_Type NAME = item1, item2, ite m3 : NAME = item4, item5
别名类型(Alias_Type):别名类型包括如下四种

Host_Alias 定义主机别名;项目可以是主机名、可以是单个ip(整段ip地址也可以),也可以是网络掩码;

Host_Alias BE01=localhost,bt05,tt04,<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />10.0.0.4,255.255.255.0,192.168.1.0/24 注:定义主机别名HT01,通过=号列出成员

User_Alias 用户别名,别名成员可以是用户,用户组(前面要加%号)

User_Alias SYSAD=jekay,linux,lt,benet:NETAD=jekay:WEBMASTER=admin

Runas_Alias 用来定义runas别名,这个别名指定的是目的用户,即sudo 允许切换至的用户;

Runas_Alias OP = root, operator

Cmnd_Alias 定义命令别名;

Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted
Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network
Cmnd_Alias KILL = /usr/bin/kill

 

NAME 就是别名了,NMAE的命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头;

item 按中文翻译是项目,在这里我们可以译成成员,如果一个别名下有多个成员,成员与成员之间,通过半角,号分隔;成员在必须是有效并事实存在的。

item成员受别名类型 Host_AliasUser_AliasRunas_AliasCmnd_Alias 制约,定义什么类型的别名,就要有什么类型的成员相配。我们用Host_Alias定义主机别名时,成员必须是与主机相关相关联,比如是主机名(包括远程登录的主机名)、ip地址(单个或整段)、掩码等;当用户登录时,可以通过w命令来查看登录用户主机信息;用User_AliasRunas_Alias定义时,必须要用系统用户做为成员;用Cmnd_Alias 定义执行命令的别名时,必须是系统存在的文件,文件名可以用通配符表示,配置Cmnd_Alias时命令需要绝对路径;其中 Runas_Alias User_Alias 有点相似,但与User_Alias 绝对不是同一个概念,Runas_Alias 定义的是某个系统用户可以sudo 切换身份到Runas_Alias 下的成员;我们在授权规则中以实例进行解说;

别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过\来续行;同一类型别名的定义,一次也可以定义几个别名,他们中间用:号分隔,