第4章 管理用户和用户组

来源:互联网 发布:淘宝新手开店教程视频 编辑:程序博客网 时间:2024/05/12 06:55


对用户和用户组的的管理是Fedora系统管理的重点之一。本章将讲解如何在图形界面和命令行两种方式下增加、管理、删除用户和用户组的方法,当然还包括更高级的一些功能,比如创建用户组目录。

4.1 用户和用户组的介绍

用户可以是人(指的是与人相关联的用户账号),也可以是特定程序使用的账号,用户组是逻辑上的组织者,用于通用的用途。同一个组内的用户将拥有该组所指定的权限,包括读、写和执行相应的文件。
每个用户都有一个唯一的数字形式的ID(UID),每个权限组也都有一个数字形式的ID(GID)。创建文件的用户也是被创建文件的用户,以及该用户所在组也是文件的拥有者。文件的权限被分成读、写、可执行权限,而且可以分配不同的权限给拥有者、用户组或所有人。只有ROOT用户才能改变一个文件的所有人,访问权限(读、写、执行)则由ROOT和文件所有者都可以修改。
另外,FEDORA支持对文件和目录设置访问权限控制列表(ACLS),这样可以指定非文件拥有者以外的用户具有访问权限。相关信息请参考《存储管理指南》中的“访问权限列表”章节。

4.1.1 用户私有组

FEDORA系统使用了用户私有权限组(UPG),这样更方便于管理用户组。当创建新用户时会自动增加一个用户私有权限组。这个权限组的名字和用户的名字是一样的,而且这个用户组里有且只有新创建的这个用户。
用户私有权限组的功能在于能够安全的设置新创建的文件和目录的默认权限,只允许其组内的用户修改文件和目录。
决定新建文件和目录的权限的设置叫UMASK,配置在/etc/bashrc文件里。类UNIX系统的UMASK通常设置为022,指的是仅允许文件和目录的创建者可以修改。在这个规则下,其它所有用户,包括文件创建者所在用户组内的其它用户都无权修改。但是,在用户私有组规则下,由于用户私有组只有同名的一个用户,所以这个权限保护其实没有必要(因为同一用户组内没有其它用户)。
所有的用户都保存在/etc/group文件里。

4.1.2 影子密码

在多用户环境下,用shadow-utils软件提供的影子密码功能增强系统的安全性以及加强授权管理是很有必要的。所以,系统默认安装了该软件。
下面是影子密码相对于传统类UNIX系统在密码保存方面的优点:
影子密码增强了系统安全性:把加密的密码由所有人可以读的/etc/passwd文件转移到了/etc/shadow文件,而这个文件只有root用户可以读。
影子密码保存了密码的有效期。
影子密码允许使用/etc/login.defs文件来加强安全策略。
大多数提供shadow-utils软件的工具包无论是否启用了影子密码都是能正常工作的。但是,由于密码有效期只保存在/etc/shadow文件里,所以有些工具和命令在不启用影子密码的情况下有可能会不能正常工作:
chage工具,用于设置密码有效期的参数。更多信息请参考《RHEL7 安全指南》中的密码安全部分。
gpasswd工具,用于管理/etc/group文件的软件。
带-e -expiredate -f --inactive选项的usermod命令。
带-e -expiredate -f --inactive选项的useradd命令。

4.2 在图形界面下管理用户

Users工具可以在图形界面下查看、修改、增加和删除本地用户。

4.2.1 使用用户设置工具

按下super键,进入activities overview,键用users回车,users设置工具就出来了,super键可能由于键盘、硬件等不同而不同,但经常是Windows或command键,一般在空格键的左边。
让修改生效,首先要先点解锁按钮,此时会出现授权对话框,注意,除非你的用户具有超级权限,否则请使用ROOT用户权限。增加或删除用用户,点+或-号,增加一个用户到管理员组,修改用户类型为标准或管理员即可。修改用户的语言,选择语言后会有下拉菜单可以选择。
创建的新用户要设置密码后才生效。增加用户菜单有立即设置密码的选项,或者也可以选择在该用户首次登陆的时候设置密码。

4.3 使用命令行工具

除了前面说的在图形界面下操作外,也可以在命令行下操作。
表4.1 管理用户和组的命令行工具
id 显示用户和组ID
useradd ,usermod,userdel 用户管理的标准工具,用于增加、修改、删除用户
groupadd,groupmod,groupdel 组管理的标准工具,用于增加、修改、删除用户组
gpasswd 管理/etc/group配置文件的标准工具
pwck,grpck 验证密码和组以及影子密码关联文件的工具。
pwconv,pwunconv 转化为影子密码,或把影子密码转化为普遍密码的工具。
grpconv,grpunconv与上一个相似,转化用户组影子信息的工具

4.3.1 增加新用户

增加新用户的命令(ROOT权限):
useradd [options] username
options 参考表4.2
默认的useradd命令创建的用户是锁着的,解锁则需要用下面的命令分配一个密码:
passwd username
你可以同时设置密码有效期,请见4.3.3
表4.2 useradd命令选项
-c 'comment' 指定别名,通常用于指定用户的全名
-d 指定用户目录,不指定的话将默认为/home/username/.
-e 指定账号的过期时间,格式为 YYYY-MM-DD.
-f 设定账号过期后多少天后将停用,若指定为0,则过期后立即停用,-1则表示过期后也永不停用。
-g 指定用户组的名字,必须是存在的用户组的名。
-G group_list 需要加入的其它用户组,用逗号分隔,必须是已经存在的用户组,可以是名字,也可以是组ID。
-m 如果用户目录将创建它。
-M 不创建用户目录。
-N 不创建用户私有权限组。
-p password 对密码加密(crpt方式)
-r 创建一个系统管理用户(UID小于1000,并且没有用户目录)
-s 登陆后的SHELL,默认为 /bin/bash.
-u uid 指定用户的UID,不能与已有的重复,且必须大于999
usermod命令的选项也是一样的。注意,如果要修改用户加入另外一个组,应使用-a --append(与-G一起使用)。否则你原来的用户组将被覆盖掉。
过程示例
下面的步骤将说明useradd juan的过程中影子密码将启用:
增加新用户juan时,
1./etc/passwd文件将新增一行
juan:x:1001:1001::/home/juan:/bin/bash
这一行信息有以下特征:
以juan用户名开始
后面跟着x,表示系统在使用影子密码
UID大于999。Fedora系统中小于1000的UID是给系统用户使用的,不会分配给新创建的用户。
GID大于999.Fedora小于1000号的GID是给系统用户组使用的,不会分配给新建的用户组。
GECOS字段是空白,主要是提供账号的额外信息的,比如全名或电话号码等。
juan的用户目录为/home/juan/
默认shell是/bin/bash
2./etc/shadow里新增一行信息:
juan:!!:14798:0:99999:7:::
这行信息有以下特征:
以用户juan开头。
两个感叹号,表示账号是锁定的。
(注意:如果用了-p选项加密,它也将放在/etc/shadow文件里)
密码永不过期
3./etc/group里也增加了一行:
juan:x:1001:
用户组的名子和用户名是一样的,叫UPG,详细信息请参考4.1.1
这一行有以下特征:
以用户账号juan开头。
x表示系统使用影子密码。
GID与/etc/passwd中的一致。
4./etc/gshadow增加一行以组名开头的信息:
juan:!::
特征如下:
以组名juan开头。
/etc/gshadow的文件中密码位置是一个感叹号,表示组被锁定。
其它位置是空的。
5.在/home目录下创建了juan的用户目录:
~]# ls -ld /home/juan
drwx------. 4 juan juan 4096 Mar 3 18:23 /home/juan
这个目录的拥有者为用户juan和权限组juan.只有juan有读、写、执行权限。
6./etc/skel(保存用户默认设置的目录)目录下的文件被复制到/home/juan/目录里。/etc/skel/的文件会根据安装的程序不同而有所不同。
~]# ls -la /home/juan
total 24
drwx------. 4 juan juan 4096 Mar 3 18:23 .
drwxr-xr-x. 5 root root 4096 Mar 3 18:23 ..
-rw-r--r--. 1 juan juan 18 Jul 09 08:43 .bash_logout
-rw-r--r--. 1 juan juan 176 Jul 09 08:43 .bash_profile
-rw-r--r--. 1 juan juan 124 Jul 09 08:43 .bashrc
drwxr-xr-x. 4 juan juan 4096 Jul 09 08:43 .mozilla
这样,一个被锁定的账户juan就正式在系统中创建了。管理员用passwd命令分配密码以后,这个账号就生效了。

4.3.2 增加一个新用户权限组

以ROOT身份执行如下命令就可以给系统增加一个用户权限组:
groupadd [options] group_name
options请参考表4.3
表4.3 groupadd常用命令行选项
-f, --force 用-g gid选项增加组时,若组ID已存在,groupadd将选择另外一个唯一GID。
-g gid 组ID,必须大于999,且不能重复。
-K, --key key=value 覆盖 /etc/login.defs的默认设置。
-o, --non-unique 允许复制GID方式创建组。
-p, --password password 为组设置密码password
-r 建立一个GID小于1000的系统用户组。

4.3.3 启用密码有效期

从安全角度,建议用户定期修改密码。可以通过chage命令操作。
注意:影子密码必须启用,否则chage将不能使用。请参考4.1.2
配置密码有效期的命令:
chage [options] username
options请参考表4.4。当chage命令后直接跟着用户名时(没有options选项),将显示当前密码有效期并允许你交互式修改。
表4.4 chage 命令的选项
-d days 自 1970-01-01起的有效期天数
-E date 以YYYY-MM-DD格式指定密码的失效日期.也可以用自1970年1月1日起的天数代替。
-I days 指定过期后停用账号的天数,若为0,则立即停用。
-l Lists 显示当前账号的有效期设置。
-m days 指定密码有效期的最大天数。当用此选项指定时,必须在指定的那一天前修改密码,与-d不同,-d在那一天修改即可。
-W days 指定密码过期前多少天提示用户。
你可以配置密码在第一次登陆时过期并提示用户修改密码。这将强制用户立即修改密码。
1.设置初始密码。两种方式:可以设置初始密码,或使用空密码。
配置一个初始密码用下面的命令:
passwd username
为用户配置一个空密码:
passwd -d username
警告:在任何情况下都应避免使用空密码。
用空密码虽然很方便,但很不安全,任何第三方都可以登陆系统。启用用户前一定要确保用户密码非空。
2.让密码立即过期的命令:
chage -d 0 username
这个命令将设置自上次修改密码起计算的失效日期(从1970年1月1日计算)。这个设置的日期将强制密码立即失效,而且不受密码有效策略限制。
通过以上设置,用户将被提示设置新密码。

4.3.4 启用自动登陆

用户用ROOT登陆会给系统带来风险。为减少这种风险,你可以配置系统在一定时间后自动退出登陆。
1.确保screen软件已安装,你可用以下命令安装screen
dnf install screen
如何安装软件包请参考6.2.4
2.以ROOT身份在/etc/profile中增加一行信息:
trap "" 1 2 3 15
3.在/etc/profile文件末尾增加当用户登陆时启用screen会话的脚本:
SCREENEXEC="screen"
if [ -w $(tty) ]; then
trap "exec $SCREENEXEC" 1 2 3 15
echo -n 'Starting session in 10 seconds'
sleep 10
exec $SCREENEXEC
fi
注意,每当新建会话时,都会显示用户需等待10秒钟,可以用sleep命令修改等待的秒数。
4.在/etc/screenrc中增加以下信息
idle 120 quit
autodetach off
意思是120秒后将关闭screenrc。可以用idle修改这个值。
你可以设置系统锁定会话的方式处理:
idle 120 lockscreen
autodetach off
用以上方式,解除锁屏时将需要输入密码,在重新登陆后生效。

4.3.5 创建用户组目录

系统管理员通常为每个项目分配一个组,所有需要访问这个项目文件的用户都放到这个组里。传统方式下,这是非常困难的。当一个人创建了一个文件,这个文件将关联到自己的组。当一个人为多个项目工作时,分配文件权限是非常困难的。但在UPG规则下,组和文件的权限对应自动由setgid ibt分配,可以很简单的在组之间共享目录。
比如,一组人可以访问/opt/myproject/,同时另一组人可以修改这个目录的文件(不是所有人可以修改)。
1.用ROOT用户创建/opt/myproject/目录:
mkdir /opt/myproject
2.把myproject组加到系统里:
groupadd myproject
3.把/opt/myproject/目录关联到myproject组:
chown root:myproject /opt/myproject
4.允许组内用户创建文件设置setgid bit:
chmod 2775 /opt/myproject
这时,myproject组里的用户都可以创建和修改/opt/myproject/下面的文件,而且不需要管理员权限。验证权限是否正确设置:
~]# ls -ld /opt/myproject
drwxrwsr-x. 3 root myproject 4096 Mar 3 18:31 /opt/myproject
5.把用户加到myproject组里:
usermod -aG myproject username

4.4 其它信息

0 0
原创粉丝点击