1、Linux 单用户多任务,多用户多任务概念
Linux 是一个多用户、多任务的操作系统;单用户多任务、多用户多任务 概念;
- Linux 的 单用户、多任务:比如:以 beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;
- Linux 的 多用户、多任务:上面除了 beinan 这个用户,可能还有其它的用户远程登录过来,也能做其它的工作。这就是多用户,很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说;比如:在服务器上面有 FTP 用户、系统管理员、web 用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma 或Yuking 兄在管理他们的主页系统和FTP ;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody 用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样;
用户的角色区分:用户在系统中是分角色的,在 Linux 系统中,由于角色不同,权限和所完成的任务也不同;用户的角色是通过 UID 和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;
- root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
- 虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如 bin、daemon、adm、ftp、mail 等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
- 普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;
多用户操作系统的安全
- 多用户系统对系统管理更为方便、更为安全。比如 beinan 用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佳,Linux 能很好的保护每个用户的安全,从服务器角度来说,多用户的下的系统安全性也是最为重要的,常用的 Windows 操作系统在系纺权限管理方面根本没法和 Linux 或 Unix 类系统相比。
2、用户 (user)和 用户组(group)概念
用户 ( user )
Linux 是多用户操作系统,所以可以在 Linux 系统中建若干用户(user)。比如:我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;
当然用户(user)的概念理解还不仅仅于此,在 Linux 系统中还有一些用户是用来完成特定任务的,比如 nobody 和 ftp 等,我们访问 LinuxSir.Org 的网页程序,就是 nobody 用户;我们匿名访问 ftp 时,会用到用户 ftp 或 nobody ;
如果您想了解 Linux 系统的一些帐号,请查看文件:/etc/passwd
用户组 ( group )
用户组(group)就是具有相同特征的用户(user)的集合体;比如:有时要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时就需要用户组,把用户都定义到同一用户组,通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限。
用户 和 用户组 的对应关系
- 一对一:某个用户可以是某个组的唯一成员;
- 多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
- 一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
- 多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;
实际用户 和 有效用户 区别
Unix系统通过进程的有效用户ID和有效用户组ID来决定进程对系统资源的访问权限。
Unix高级编程第八章提到实际用户和有效用户,那么这两个用户到底是什么,它们之间有什么区别呢?
实际用户 和 有效用户 区别
- 实际用户ID( 实际组ID ):标识当前用户(所属组)是谁,当用户登陆时取自口令文件。即标识我是谁。也就是登录用户的 uid 和 gid。比如我的Linux以king用户登录,在Linux运行的所有的命令的实际用户ID都是king的uid,实际用户组ID都是king的gid(可以用id命令查看)
- 有效用户ID( 有效组ID ):用来决定我们(当前进程)对资源的访问权限或者对文件的访问权(即实际该进程是以那个用户运行的)
一般情况下,有效用户 ID 等于实际用户ID,有效用户组ID等于实际用户组ID。当设置-用户-ID(SUID)位设置,则有效用户ID等于文件的所有者的uid,而不是实际用户ID;同样,如果设置了设置-用户组-ID(SGID)位,则有效用户组ID等于文件所有者的gid,而不是实际用户组ID。
一个测试验证程序

这个程序非常简单没有什么好说的。编译这个程序生成 test 程序


发现结果和上面一样,test 进程的有效用户ID等于实际用户ID(0),有效用户组ID等于实际用户组ID(0)。下面给 test 程序设置 SUID

发现设置 test 程序的 SUID 位之后,test 进程的有效用户ID等于文件所有者的 UID( gkh的uid为500),有效用户组ID还是等于实际用户组ID(0)。这样程序就可以访问只有 gkh 才能访问的资源了
linux 特殊权限 SUID、SGID、SBIT
先看看下面两个的权限是什么


非常奇怪,/tmp 目录和 passwd 文件的权限怎么怪怪的,怎么有 s 和 t 权限。
SUID 权限
当 s 出现在 “文件拥有者的 x 权限” 上时,如上面看到的 /usr/bin/passwd 这个文件的权限是 -rwsr-xr-x,此时就被称为 SET UID 简称 SUID。
SUID 对于一个文件有什么限制和功能呢?
例如:普通用户用 passwd 修改自己的命令,实际上最终更改的是 /etc/passwd 文件。此文件时用户管理配置文件,只有 root 权限才能更改

既然是 root 用户才拥有此权限,为什么我们可以通过 passwd 命令来修改密码呢,那这就要归功于 passwd 设置了 suid 权限位了

此时普通用户通过执行 passwd 命令,临时拥有 root 权限,间接的修改 /etc/passwd,以达到修改自己密码的权限
SGID 权限
SGID 对 目录
SGID 对 文件
SBIT 权限
我们知道 /tmp 目录是这样的权限。

现在我们来验证下,先用 root 账号在 tmp 文件中创建一个文件 test,然后用 openstack (其他账号) 进入该目录,删除 test 文件,看看发生什么情况

我们看到这样是不能删除文件的。因为 /temp 目录有 SBIT 权限
设置 SUID、SGID、SBIT
操作这些标志与操作文件权限的命令是一样的,都是 chmod。 有两种方法来操作
方法 1:符号类型改变权限(文字法:SUID: u+s ,SGID: g+s,SBIT: o+t )
方法 2:数字类型改变档案权限
3、管理用户(user)和用户组(group)相关命令
su、su -、sudo、visudo、sudoedit
su :切换用户(su 和 su – 这两个切换用户命令是有区别的。)
- su :是用来切换用户,只输入su 后面不加账户名称时,系统默认切换到 root 账户。仅仅只是切换 root 身份,但 Shell 环境仍然是普通用户的 Shell。执行 pwd 命令发现工作目录仍然是普通用户的工作目录
- su – :申请切换到 root 用户,需要 root 用户密码。用户 和 Shell 环境一起切换成 root 身份。执行 pwd 命令可以发现工作目录变成 root 的工作目录。要从当前用户切换到其它用户,推荐使用 su – 命令,这样连 shell 环境也切换了。有些 Linu x发行版默认没有设置 root 用户的密码,需要先使用 sudo passwd root 设置 root 用户密码。示例:su – root 或者 su –
- echo $PATH 命令看一下 su 和 su – 环境变量也不一样。
sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。
sudo 程序相关文件
系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限的用户来干这件事:先创建用户并设置密码后,然后在sudo组中加入该用户,多个用户用逗号隔开。

添加内容如下:

把用户 testuser 添加到了 sudo 组中,所以当用户 testuser 登录后就可以通过 sudo 命令以 root 权限执行命令了!但是,用 testuser 执行 root 权限的命令时会报错,还需要修改文件,解决办法:
sudo 命令帮助:
sudo -l 列出用户的权限

管理用户(user)的工具或命令
adduser :添加用户。会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。( 推荐使用 adduser)
useradd :添加用户。需要使用参数指定一些基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定 shell 版本。需要单独设置用户密码、指定家目录、指定shell 等
adduser 命令帮助
useradd 命令帮助。
在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动生成一个同名同ID(UID=GID)的用户组,即与用户名同名的工作组。
useradd -h
选项: -b, --base-dir BASE_DIR 设置基本路径作为用户的登录目录 -c, --comment COMMENT 对用户的注释 -d, --home-dir HOME_DIR 设置用户的登录目录 -D, --defaults 改变设置 -e, --expiredate EXPIRE_DATE 新账户的过期日期。设置用户的有效期 -f, --inactive INACTIVE 用户过期后,让密码无效 -g, --gid GROUP 使用户 “只属于某个组 ” (只能属于一个组) -G, --groups GROUPS 新账户的附加组列表。使用户加入某个组(可以属于多个组) -h, --help 帮助 -k, --skel SKEL_DIR 使用此目录作为骨架目录 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值 -l, --no-log-init 不把用户加入到lastlog文件中 -m, --create-home 自动创建登录目录 -M, --no-create-home 不自动创建登录目录 -N, --no-user-group 不创建同名的组 -o, --non-unique 允许使用重复的 UID 创建用户 -p, --password PASSWORD 为新用户使用加密密码 -r, --system 创建一个系统账户 -R, --root CHROOT_DIR chroot 到的目录 -s, --shell SHELL 登录时候的shell -u, --uid UID 为新用户指定一个UID -U, --user-group 创建与用户同名的组 -Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
示例:
添加用户和组
修改用户属性 usermod (user modify) 命令
对于已创建好的用户,可使用 usermod 命令来修改和设置账户的各项属性,包括登录名,主目录,用户组,登录shell等,
命令用法:usermod [option] username
更多参数看帮助文档:man usermod 或者 usermod -h
usermod -h Usage: usermod [options] LOGIN Options: -b, --badnames allow bad names -c, --comment COMMENT new value of the GECOS field -d, --home HOME_DIR new home directory for the user account -e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE -f, --inactive INACTIVE set password inactive after expiration to INACTIVE -g, --gid GROUP force use GROUP as new primary group -G, --groups GROUPS new list of supplementary GROUPS -a, --append append the user to the supplemental GROUPS mentioned by the -G option without removing the user from other groups -r, --remove remove the user from only the supplemental GROUPS mentioned by the -G option without removing the user from other groups -h, --help display this help message and exit -l, --login NEW_LOGIN new value of the login name -L, --lock lock the user account -m, --move-home move contents of the home directory to the new location (use only with -d) -o, --non-unique allow using duplicate (non-unique) UID -p, --password PASSWORD use encrypted password for the new password -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL new login shell for the user account -u, --uid UID new UID for the user account -U, --unlock unlock the user account -v, --add-subuids FIRST-LAST add range of subordinate uids -V, --del-subuids FIRST-LAST remove range of subordinate uids -w, --add-subgids FIRST-LAST add range of subordinate gids -W, --del-subgids FIRST-LAST remove range of subordinate gids -Z, --selinux-user SEUSER new SELinux user mapping for the user account
(1)改变用户帐户名
命令:usermod -l 新用户名 原用户名
(2)锁定账户
(3)解锁账户
要解锁账户,可以使用带-U参数的usermod命令来实现
修改用户 加入 单个组 和 多个组
usermod 参数 -G 和 -g 的 区别:

删除用户 userdel
更多选项参看:man userdel 或者 userdel -h
用法:userdel 用户名
生产环境中,我们可以通过注视配置文件 /etc/passwd,选择先注销而不删除用户,类似回收站的作用,即使出了问题也能恢复。
将文件夹赋给相应用户以及所在组
查看用户
查看某个用户所属的组
查看系统中所有组
命令:more /etc/group
管理 用户密码
用户管理的一项重要内容是用户口令(密码)的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是:passwd [用户名]。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
命令的格式为:passwd 选项 用户名
可使用的选项:
passwd -h 用法: passwd [options] [LOGIN] 选项: -a, --all 报告所有帐户的密码状态。与-S搭配使用,显示所有用户状态 -d, --delete 删除指定帐户的密码 -e, --expire 强制使指定帐户的密码过期。 这可以强制一个用户下次登录时更改密码。 -h, --help 显示此帮助信息并退出 -k, --keep-tokens 仅在过期时更改密码 -i, --inactive INACTIVE 密码过期一定天数之后禁用账户。 -l, --lock 锁定用户,即禁用账号。此选项通过在密码开头添加一个 ! 实现。 -n, --mindays MIN_DAYS 多长时间改一次密码 -q, --quiet 安静模式 -r, --repository REPOSITORY 更改 REPOSITORY 存储库中的密码 -R, --root CHROOT_DIR 目录到 chroot 到 -S, --status 报告指定帐户的密码状态 -u, --unlock 解锁指定用户的密码。此操作将密码改回锁定前的值 -w, --warndays WARN_DAYS 密码过期之前提前警告的天数 -x, --maxdays MAX_DAYS 密码到期时仍然有效的最大天数 文件 /etc/passwd 用户账户信息。 /etc/shadow 用户账户的密码信息。 /etc/pam.d/passwd passwd 的 PAM 配置。
示例
锁定 / 解锁账户密码
在linux中,除了用户账户可被锁定外,账户密码也可被锁定,任何一方被锁定后,都将无法登录系统。
查询密码状态
删除账户密码
其用法为:passwd -d 帐户名
帐户密码被删除后,将不能登录系统,除非重新设置密码。
管理用户组(group)的工具或命令
涉及命令:
- gpasswd (管理组)
- groupadd(添加组)
- groupmod (修改组)
- groupdel(删除组)
LINUX 下把一个用户加入多个组 命令:gpasswd -a 用户 组
示例:gpasswd -a user group // 将 user 用户加入到 group 组中
如果查看 /etc/shadow 或 /etc/passwd 等文件看不出来用户已经加入想要的组时,此时可以用 id 命令 来查看
另一种实现方法:
添加、删除用户和组
groupadd 命令
root@kali:~# groupadd -h 用法:groupadd [选项] 组 选项: -f, --force 如果组已经存在则成功退出 并且如果 GID 已经存在则取消 -g -g, --gid GID 为新组使用 GID -h, --help 显示此帮助信息并推出 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值 -o, --non-unique 允许创建有重复 GID 的组 -p, --password PASSWORD 为新组使用此加密过的密码 -r, --system 创建一个系统账户 -R, --root CHROOT_DIR chroot 到的目录
删除用户组
一般直接通过usermod命令来更改用户的相关属性(包括用户组属性)
修改组
例如:
修改用户组属性
用户组创建后,根据需要可对用户组的相关属性进行修改。对用户组属性的修改,主要是修改用户组的名称和用户组的GID值。
(1)改变用户组的名称(重命名组名)
(2)重设用户组的GID
添加用户到指定的组/从指定的组中移除用户
gpasswd命令是 Linux 下工作组文件/etc/group 和 /etc/gshadow 管理工具。主要功能:管理组。
可以将用户添加到指定的组,使其成为该组的成员。命令:gpasswd -a 用户账户 用户组名
若要从用户组中移除某用户,命令:gpasswd -d 用户账户 用户组名
例如,现在将上面创建的lijunjie用户添加到vodup用户组中
设置 用户组管理员
添加用户到组和从组中移除某用户,除了 root 用户可以执行该操作外,用户组管理员也可以执行该操作。
示例
切换用户所属的组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令 newgrp 切换到其他用户组,这个命令的参数就是目的用户组。
例如: $ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
查看组

/etc/skel 目录
/etc/skel 目录一般是存放用户启动文件的目录,这个目录是由 root 权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel 目录下的文件都是隐藏文件,也就是类似 .file 格式的;我们可通过修改、添加、删除 /etc/skel 目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;
[root@localhost beinan]# ls -la /etc/skel/ 总用量 92 drwxr-xr-x 3 root root 4096 8月 11 23:32 . drwxr-xr-x 115 root root 12288 10月 14 13:44 .. -rw-r--r-- 1 root root 24 5月 11 00:15 .bash_logout -rw-r--r-- 1 root root 191 5月 11 00:15 .bash_profile -rw-r--r-- 1 root root 124 5月 11 00:15 .bashrc -rw-r--r-- 1 root root 5619 2005-03-08 .canna -rw-r--r-- 1 root root 438 5月 18 15:23 .emacs -rw-r--r-- 1 root root 120 5月 23 05:18 .gtkrc drwxr-xr-x 3 root root 4096 8月 11 23:16 .kde -rw-r--r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目录下的文件,一般是用 useradd 和 adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把 /etc/skel 下的文件复制到用户的家目录下,然后要用 chown 来改变新用户家目录的属主;
/etc/login.defs 配置文件
/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID 和 GID的范围;用户的期限等等,这个文件是可以通过root来定义的;
比如 Fedora 的 /etc/logins.defs 文件内容;
# *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail 注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件; #MAIL_FILE .mail # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 注:用户的密码不过期最多的天数; PASS_MIN_DAYS 0 注:密码修改之间最小的天数; PASS_MIN_LEN 5 注:密码最小长度; PASS_WARN_AGE 7 注: # # Min/max values for automatic uid selection in useradd # UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的; UID_MAX 60000 注:最大UID为60000; # # Min/max values for automatic gid selection in groupadd # GID_MIN 500 注:GID 是从500开始; GID_MAX 60000 # # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). # #USERDEL_CMD /usr/sbin/userdel_local # # If useradd should create home directories for users by default # On RH systems, we do. This option is ORed with the -m flag on # useradd command line. # CREATE_HOME yes 注:是否创用户家目录,要求创建;
/etc/default/useradd 文件
通过 useradd 添加用户时的规则文件;
# useradd defaults file GROUP=100 HOME=/home 注:把用户的家目录建在/home中; INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用; EXPIRE= 注:帐号终止日期,不设置表示不启用; SHELL=/bin/bash 注:所用SHELL的类型; SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置; 也就是说,当用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
4、用户管理、密码、组密码
在 linux 中为了保障系统用户的安全信息,所以将用户帐号,用户密码,用户组信息和用户组密码分开存放在不同的配置文件中的。
- 用户名配置文件:/etc/passwd
- 用户密码配置文件:/etc/shadow
- 用户组配置文件:/etc/group
- 用户组密码配置文件:/etc/gshadow
把这四个文件弄清楚,添加、删除用户和用户组可以通过修改这4个文件来完成。
用户分类
linux 用户有三类:根用户(root用户,命令提示符介面显示#)、普通用户 (命令提示符显介面示#)、虚拟用户。
- root用户:根用户也就是超级用户,拥有最高权限任务,任何文件权限对根用户无效,用户UID为0
- 普通用户:可以登陆系统,只能操作自己拥有文件权限的文件。是由系统管理员创建的。用户UID从501开始(500~60000 之间)
- 虚拟用户:又称伪用户,不具备系统登陆的权限,一般由系统创建或某些程序安装后创建,
用户名文件 /etc/passwd 文件结构

以上 /etc/passwd 文件的属性分解如下,共七个属性(每个属性用分号分割)
/etc/passwd 每行7个字段:账号:密码:UID:GID:账号信息说明:家目录:Shell
示例:smbuser:x:500:500::/home/smbuser:/bin/bash
对应字段:用户名:加密口令:UID:用户所属组的GID:个人信息描述:用户主目录:登陆shell
- 1.用户名 :由字母、数字组成。必须以字母开头,区分大小写,长度不超过8个字符
- 2.加密口令:在早期的 UNIX 版本中,用户和密码放在一起的,用户名在第一个选项位,密码在第二个选项位,后来出于账户安全的考虑,对此进行了改进,将密码另外存放,并用一个特殊字符X占用第二个密码选项位。因为 passwd 文件对所有用户都是可读的,所以为了安全起见,系统将加密口令存放于 /etc/shadow 文件中且只有超级用户才有读取权限。
- 3.用户 UID: 标识用户的数字(root:UID为0 ,普通用户UID为500-60000之间 )
管理员:0。其中0表示系统管理员ROOT账户。
一般用户1-65535(一般用户又分系统用户和普通用户)
系统用户:1-499 (系统默认创建)。用于系统内置账户,如 nobody,bin等
普通用户:500-65535 (管理员创建)。500-65535普通系统本地账户,系统安装完成后,由ROOT用户创建分配给有需要接入Linux主机的使用者使用。如果因为需要,可以将普通系统本地账户的UID改为0,就样该用户就有了ROOT用户一样的权限了,但不建议这样设置。 - 4.用户所属组 GID:默认刚创建,主GID和用户UID相同,是主用户组,可以更改(一般组分为主用户组和附加组)用户组的 GID,用户组名保存在 /etc/group 文件中,有时为了便于权限的分配,可以将多个用户加入到同一个用户组中,对用户组分配相应权限,这样该用户组中的所有用户都同时获得了相同的权限,可以简化对每一个用户来分配权限。将用户加入其它用户组,可以在 /etc/group 文件中的用户组名后批量添加相应的用户名称便可,不需要在此进行修改。
- 5.用户的全名信息,或描述等内容
- 6.用户主目录: 创建普通系统帐户时会默认创建一个和用户名相同的帐户,用户登陆后默认所处的目录一般为~([root@centso-test ~])
- 7.用户登陆后使用的 shell。虚拟用户一般该属性为空或者是 /sbin/nologin /bin/fase 表示禁止用户登陆
用户密码文件 /etc/shadow 文件结构
(以:作为分隔符,一共有九栏)
[root@serverln tmp]# cat /etc/shadow
root:$6$hgwagXkBWGArriiQ$sajFOnZmrW2x0S6dipxvXXAJNfB1/BC0OvzjqeGZqQBVbng3aD9/CeD2j3YOnd6g2NJfPnk7zI1.9xqQ5aO6d0:16381:0:99999:7:::
bin:*:15980:0:99999:7:::
jacob:!!:16382:0:99999:7:::
字段说明:
帐号名称:密码:最近更改密码日期:密码不可被更改日期:密码需重设定日期:密码到期警告天数:密码过期后能使用的天数:帐号失效的日期:保留
- 1 用户名
- 2 经过加密码后的密码信息。这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的。所以为了安全,该文件属性设置为600,只允许root读写。
- 3 最近改动密码的日期,该日期参数是以1970年1月1日作为第1天而累加计算出的
- 4 密码不可改动的天数,由选项3中的日期为第1天,如果该选项参数为0,表示随时可以更改
- 5 密码需要改动的天数,即强制用户每多少天修改密码。
- 6 密码快要到期的前多少天提示警告信息
- 7 密码到期后可以宽限的天数。密码过期后,在宽限天数内可以更改密码并登陆重新激活账号
- 8 账号失效日期,在一些收费使用系统的应用中,可以设置此选项内容.
- 9 预留选项,未使用
用户组文件 /etc/group
/etc/group 共4个字段 群组名:群组密码:GID:群组支持的群组名称(即可以加入多个群组)
用户组的选项内容只有四个,其选项意义如下:
- 用户组名
- 用户组密码,同样经改进后,用户组密码不再保存在用户组名文件中,另存放在/etc/gshadow文件中,此选项使用字符x占位
- 用户组GID
- 用户组中包含的用户名,默认只含有同用户组名的用户,如需往用户组中添加多个用户名,可以在此选项中添加,并用逗号隔开
用户组密码文件 /etc/gshadow
组密码文件示例:
用户组密码文件中的内容和用户组名文件中的内容几乎一样,因为一般很少用到需要对用户组设置密码等的操作
- 组名称
- 密码栏,同样的,开头为 ! 表示无合法密码,所以无群组管理员
- 群组管理员的帐号 (相关资讯在 gpasswd 中介绍)
- 该群组的所属帐号 (与 /etc/group 内容相同!)
5、文件、目录 的 权限
在Linux系统中,对每个文件和目录都有定义相应的属主和属组,以用来管理用户对文件和目录的访问和操作。。
- chown [用户名][文件或目录] 更改文件或目录的所有者(用户),即属主
- chgrp [用户组名][文件或目录] 更改文件或目录所属的用户组,即属组。也可以使用 “chown 用户名:用户组名(用户名.用户组名) 文件或目录” 直接对文件或目录的用户和用户组进行修改
- chmod [ugoa][+-=][rwx] 文件或目录名,更改用户和用户组对目录或文件的访问权限,其简化操作为 chmod 755 /home/user01/ = chmod u=rwx /home/user01|chmdo g=rw /home/user01|chmod o=rw /home/user01
6、综合案例
【题1.1】建立两个用户组group1和group2,以及三个用户dennis、daniel、abigale,并且将前2个用户分配在group1用户组下,后一个分配在group2用户组下



然后,可以使用cat /etc/passwd查看并确定

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177387.html原文链接:https://javaforall.net
