管理用户帐号
1.系统中的每个进程(运行程序)都作为一个特定用户运行。每个文件归一个特定用户所有。对文件和目录的访问受到用户的限制。与运行进程相关联的用户可确定该进程可访问的文件和目录。
若要查看与进程相关联的用户,请在 ps 命令中包含 u 选项。第一列显示用户名:
[root@serverX ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19244 1424 ? Ss 21:00 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 21:00 0:00 [kthreadd]
student 114 0.0 0.2 106008 1240 pts/0 S 21:00 0:00 /bin/sh
2.若要查看与某一个文件或目录相关联的用户,则使用ls -l 。第三列显示用户名。
3.Linux 用户在数据库中定义。默认情况下,系统使用简单的“平面文件”(即 /etc/passwd文件)存储有关本地用户的信息。 /etc/passwd 采用以下格式(七个冒号分隔字段):
account:password:UID:GID:GECOS:directory:shell
用户属性:
account 是 UID 到名称的一种映射,便于用户使用。
password 以前是以加密格式保存密码的位置。现在密码存储在称为 /etc/shadow 的单独文件中。
UID是用户的ID,在最基本的级别标识用户的编号。
GID是主组ID,默认情况下,是与所有新建文件关联的号码,用于潜在的合并。
GECOS 字段存储任意文本,通常是用户的实际姓名、办公电话或个人电话号码。
directory 是用户的个人数据和配置文件的位置。
shell 是在用户登录时,以及如果 shell (例如 /bin/bash )提供用户命令行提示时,执行
的程序。
4.管理本地用户:
useradd创建用户: useradd usernam可在无选项的情况下运行时,为/etc/passwd中的所有字段设置合理的默认值。useradd在默认情况下不设置任何有效的密码,用户无法登录。useradd -help将显示可用于覆盖默认值的基础选项。-u 就是指定所建立用户的uid.
userdel删除用户:userdel username 从/etc/passwd中删除用户,但默认的情况下,主目录保持不变userdel -r username 可删除用户和用户的主目录。
useradd -u 2000 -s /sbin/nologin -M -d /demo -g ming -G studnet bob
添加用户的bob,它的uid是2000. -s是不分配的shell终端。-M是不创建家目录,-d指定以/demo为用户主目录。-g是指的该用户属于主组ming,-G 指定该用户属于附属组student
id显示用户信息:id将显示用户的信息,包括其UID编号和组成成员身份。UID的范围,UID是0是root,且具有特“常规用户”。
id username将显示username的用户信息,包括其UID编号和组成员身份。
passwd设置密码:passwd username可用于设置用户的初始密码,或更改该用户的密码。
5.管理密码:
密码存储在/etc/passwd文件中,但是/etc/passwd必须完全可读,因为命令(例如ls)需要访问该文件才能将UID映射到用户名。将密码迁移到更加安全的/etc/shadow文件,该文件支持若干个不同的密码加密算法。只要加密的密码存储在专用的文件中,密码期限策略和数据就可以存储。
密码哈希中存储有哪 3 条信息?:$1$myPMmLiM$NUAUYAnGzIt1maaTWmj1k.
student:$1$m4oOvunP$h7/aE8.nPlgRgA0ak7vsZ0:15438:0:99999:7:::
test:$1$oBWdC3Wz$kek16SwqTUVq3oMaWK8uF/:15438:0:99999:7:::
(1)1-哈希算法(1表示MD5哈希)
(2)m4oOvunP-用于加密哈希的salt
(3)h7/aE8.nPlgRgA0ak7vsZ0-已经加密的哈希。
6./etc/shadow字段:
root:$1$myPMmLiM$NUAUYAnGzIt1maaTWmj1k.:15183:0:99999:7:::
字段(1)用户名(2)密码散列(3)上次密码更改日期(自1970年1月1日以来的天数)(4)最短密码期限(按照天数计,0=无最短期限要求)(5)最长密码期限(按照天数计)(6)密码警告期限(按照天数计,0=未指定警告)(7)密码非活动期限(按照天数计)8.账户到期日(自1970年1月1日以来的天数)
7.tail /etc/passwd中第二个字段要是有X就表示有密码,无X表示没有密码可直接进去。
8.
chage -l username(sushan)(显示用户的当前账户信息设置)
chage -m 0 -M 90 -W 7 -l 14 username(-m指定最短时间,-m 0意思是不限制最短时间,-M指定最长时间,-W指定警告时间,也就是在密码到达最大日期之前的几天给予警告 -I(大写I)指定的是非活动时间,在密码达到最长日期之后还有几天非活跃时间,在这段时间你只能修改密码,其他的什么也不能干。)
chage -d 0 username(将强制更新密码。)
9.管理组的信息:与用户一样,组也有名称和编号( GID )。本地组在 /etc/group 中定义。 LDAP 也可用于提供组信息。
主要组:每个用户只有一个主要组。对于本地用户,主要组通过 /etc/passwd 第三个字段中列出的组的 GID 编号定义.通常,用户创建的新文件归主要组所有。通常,新创建用户的主要组为具有与该用户相同名称的新创建组。该用户是这一用户专用组( UPG )的唯一成员。
补充组:用户可以是 0 或多个补充组的成员。属于本地组补充成员的用户列在 /etc/group 中组条目的最后一个字段中。对于本地组,用户成员身份由 /etc/group 中组条目的最后一段中找到的逗号分隔的用户列表来确定。groupname:password:GID:user1,user2,user3.补充组成员身份用来帮助确保用户具有访问系统中文件和其他资源的权限。
管理补充组
(1)groupadd -g 601 groupname (创建名为 groupname 且 GID 为 601 的补充组。)
(2)usermod -aG groupname username(会将用户username添加到groupname中。)
10.usermod 可以修改一个已经存在的用户账户信息,包括通过 -L 选项进行“锁定”。其中的一些选项你可以使用:-G:添加到附加组。-a:(add)不加a的话会把其他的附属组删除掉。-g:修改用户的主组信息。-U:解锁。-p:修改密码信息(如:usermod -p westos sushan修改密码为westos)。-L:所动帐号。
11.ldap网络用户账户:
将计算机设置为客户端,以使用现有LDAP目录服务提供的网络用户账户。这样,LDAP目录就成为我们组织中所有网络用户和组的中心机构。用户账户信息可以确定装户的特征和配置。身份验证方式用于确定尝试登录的人员是否应该获得对账户的使用权限。网络目录服务可以提供用户账户信息和身份验证方法。
LDAP 目录服务器可以用作分布式、集中式、网络用户管理服务。目录条目按树结构排列,可以在其中进行搜索。基础 DN (区分名称)是树的基础,用于搜索用户和组的目录条目。
LDAP 客户端配置的主要元素(1)服务器的完全限定主机名(2)基础 DN ,用于搜索用户定义(3)认证机构(“ CA” )证书,用于签署 LDAP 服务器的 SSL 证书
在开始之前,您因该确保已安装 directory-client yum 软件包,其中包括软件包 sssd .authconfig-gtk 和 oddjob-mkhomedir。
方式(1)“ 系统” -->“ 管理” -->” 身份验证”或 system-config-authentication 可用于修改“身份标识和身份验证”的配置。
用命令行的方式(2)
(3)system-config-authentication 将自动启动 sssd 服务,该服务将查找并缓存客户端的 LDAP 用户信息和身份验证凭据。如果 LDAP 服务器不可用,但是 sssd 正常运行,则系统或许能够通过 sssd 缓存对网络用户进行身份验证并获取相关信息。
使用 getent passwd username 验证正在使用的账户信息。无论用户是在 /etc/passwd 中定义的本地用户,还是由 LDAP 服务托管的网络用户,都可以执行此操作。如果本地用户与网络用户之间有任何重复,此命令将始终显示系统实际正使用的定义。默认情况下,本地用户定义覆盖网络用户定义。
注意: getent passwd 在默认情况下仅显示本地账户。如果您要显示所有可用账户(包括 LDAP 账户),则修改 /etc/sssd/sssd.conf 文件
在[domain/default] 部分添加如下行 :
enumerate = True
重启 sssd 服务 :
# service sssd restart
# getent passwd
.....
ldapuser1:*:1701:1701:LDAP Test User 1:/home/guests/ldapuser1:/bin/bash
ldapuser2:*:1702:1702:LDAP Test User 2:/home/guests/ldapuser2:/bin/bash
ldapuser3:*:1703:1703:LDAP Test User 3:/home/guests/ldapuser3:/bin/bash
(4)ssh ldapuser1@localhost 以ldapuser1的网络用户登录到本机上来,ldapuser1-20是服务器的20个用户,每台客户机均可以访问,只是不独占内存。
12.请记住,挂载网络共享需要主机名、共享名、挂载点和挂载选项这四种信息。(下面介绍一下挂载网络文件系统的挂载)
(1)使用 showmount -e nfsserver.domain 获取导出的路径,该路径与主机名组合即为共享名。
[root@demo ~]# showmount -e instructor.example.com
Export list for instructor.example.com:
/home/guests 192.168.0.0/255.255.255.0
/var/nfs
192.168.0.0/255.255.255.0
/kickstart 192.168.0.0/255.255.255.0
/var/ftp/pub 192.168.0.0/255.255.255.0
(2)使用 getent passwd username 获取所需主目录挂载点。
[root@demo ~]# getent passwd ldapuser1
ldapuser1:*:1701:1701:LDAP Test User 1:/home/guests/ldapuser1:/bin/bash
(3)对于主目录,我们很可能想要使用 rw 作为挂在选项。在 autofs 中配置间接映射与以下内容类似:
# vim /etc/auto.master
/home/guests /etc/auto.guests
# vim /etc/auto.guests
ldapuser1 -rw instructor.example.com:/home/guests/ldapuser1
ldapuser1 -rw instructor.example.com:/home/guests/ldapuser2
每次创建新 LDAP 用户, /etc/auto.guests 都需要更新,以包含新添加的用户。但请注意行的“模式”。我们想要支持使用任意用户名登录,因此可以将第一列替换为“星号( * )”,它是一个通配符,与登录进程可能尝试 cd 到的任意子目录都匹配。然后,我们使用元字符“连号( & )”替换共享中的用户名,但保
留由通配符匹配的映射名:
# cat /etc/auto.master
/home/guests /etc/auto.guests
# cat /etc/auto.guests
* -rw instructor.example.com:/home/guests/&
# service autofs reload
13.管理文件系统访问控制列表
访问控制列表支持(1)标准 Linux 文件系统( ext2/3/4 )支持使用 POSIX ACL 设置多个复杂文件权限,前提是文件系统是使用acl选项挂载的。(2)在 Red Hat Enterprise Linux 中,如果通过 ls -l显示的权限字符串的最后一个字符是+,则文件或目录设置了 ACL 。getfacl file 用于显示文件的ACL.
u:bob:rw-- # 适用于用户 bob
u:500:--- # 适用于 UID 为 500 的用户
u::rwx # 适用于 file 文件的拥有者
g:westos:rwx # 适用于组 westos
g:l0:r-x #适用于 GID 为 10 的组
g::rw- #适用于 file 所属组
o::rwx #适用于其他所有人
(1)setfacl 用于设置或修改文件的 ACL,acl是一种更加灵活的系统控制方式。
# setfacl -m u:bob:rw filename # 授予用户 bob 读写权限
# setfacl -m g:westos:rw filename #授予组 westos 读写权限
# setfacl -m g:redhat:r filename #授予组 redhat 读的权限
# setfacl -x u:bob filename # 删除用户 bob 的 ACL 权限
# setfacl -m o::- filename # 修改其他所有人的权限为空
14权限优先级
在确定某个进程(亦即某个运行程序)是否能够访问某一文件时,可按照以下方式应用文件权限和 ACL :
(1)如果是以拥有该文件的用户身份运行该进程,那么可应用该文件的用户权限
(2)另外,如果是作为列于用户 ACL 条目中的用户运行进程,那么应用用户ACL(只要受mask允许)
(3)另外,如果是以与拥有该文件的组相匹配的组身份或以具有明确组 ACL 条目的组身份运行该进程,如
果权限是由任意匹配组授予的,则应用该权限(只要 mask 许可)
(4)否则,应用文件的其他权限
ACL 掩码:具有 ACL 的文件拥有一个“ mask” (掩码),这个掩码既能够限制拥有该文件的组的最大权限,又能够限制 ACL 中的补充用户和组所拥有的最大权限。getfacl file 将当前掩码显示为 mask::permissions。由 ls -ld file 显示的组权限也反映了当前掩码(并非所拥有组的权限!)
默认ACL(继承)目录可以有“默认 ACL” 条目,系统自动针对在该目录中创建的新文件设置这些条目
setfacl -m d:u:bob:rw directory 将设置默认 ACL 条目,授予用户 bob 对在 directory 中创建的所有新文件的读写访问权限。d的意思不是directory的意思,是default的意思。这样之后你进入该目录创建的所有文件以及目录都使得用户bob对新创建的文件或者目录具有rw的权限。这类似 setgid 权限的方法(针对目录时),使得在该目录中创建的新文件归拥有该目录的组所有。
15.ACL 挂载选项
挂载文件系统之后,必须启用对 POSIX ACL 条目的支持。
安装程序会配置它创建的所有 ext4 文件系统,以自动启用 ACL 支持。
# tune2fs -l /dev/sda1 |grep "Default mount"
Default mount options: user_xattr acl
如果手动格式化文件系统,则需要使用 acl 挂载选项挂载该系统。
您可以将手动格式化的 ext4 文件系统设置为在挂载时自动启用支持,方法是使用 tune2fs 设置默认
挂载选项: # tune2fs -o user_xattr,acl /dev/sda1(user_xattr指的是用于用户扩展。)