用户与用户组之间关系
-
用户(User)
用户是操作系统中执行操作的个人或账户。每个用户都有一个唯一的用户名和与之相关联的密码。用户可以登录系统,执行命令,访问文件等。 -
用户组(Group)
用户组是一种将多个用户组织在一起的方法,以便可以统一管理这些用户的权限。例如,你可以创建一个“developers”组,然后将所有开发人员添加到这个组中。这样,你可以为这个组设置权限,使得组内的所有成员都能访问或修改某些文件或执行某些操作,而不需要为每个用户单独设置权限。 -
用户和用户组的关系
一对一关系:一个用户可以属于一个或多个用户组。例如,一个用户可能既是“developers”组的成员,也是“marketing”组的成员。
一对多关系:一个用户组可以包含多个用户。例如,“developers”组可能包含多名开发人员。
- 在Linux系统中,每个用户都必须属于一个用户组。每个用户在创建时都会被分配到一个主要组(也称为初始组或私有组),这个主要组通常与用户的用户名相同,并且用户是该组的主要成员。此外,用户还可以被添加到其他用户组作为附属组成员.
用户组的主要目的是方便权限管理。通过将用户添加到不同的用户组,可以为这些用户分配不同的权限和访问权限。这种方式可以简化权限管理,因为只需要为用户组分配权限,而不需要为每个用户单独分配权限
权限管理:通过将用户添加到特定的用户组,可以更容易地管理权限。例如,如果你想要让某个程序或服务仅对“developers”组的成员开放,你可以设置该程序或服务仅允许属于“developers”组的用户访问。
用户、用户组、文件权限之间关系
在 Linux 中,每个用户必须属于一个组,每个文件都有所有者、所在组、其他组的概念。这是基于万物皆文件的基础之上的,因为文件的至关重要性,文件之间的关系也就变得同等重要了
如图所示,user1 创建了 file 文件,自然而然 file 的所有者是 user1,那么 user1 所在的组别一对于 file 来说就是所在组了。而组别一以外的组别对于 file 来说都是其他组。当然了,所有者或者所在组对于 file 文件来说都是可以变更的。而对于不同角色来说,对 file 文件有着不同的权限,接下来会详细解释

一般谁创建了该文件,谁就是该文件的所有者。可以使用 ls -ahl 查看文件的所有者 使用 ;
chown 修改文件的所有者
chown [新的所有者] [文件名]
如果是目录的话 使用-R 选项将目录下的所有子文件进行递归处理。
//代表将abc的所有者改为Tom
chown tom /home/abc.txt
//代表将kkk目录下的所有文件的所有者都改为Tom
chown -R tom /home/kkk
chmod 修改文件的权限
- 普通授权
chmod +x a.txt
- 8421法
chmod 777 a.txt //1+2+4=7,"7"说明授予所有权限
chmod -R a+r ./www/ #将www下的所有档案与子目录皆设为任何人可读取
用户组
组的创建
groupadd group1 //创建名为group1的组
useradd -g group1 user1 //创建一个用户user1并将他添加到group1 组中
查询用户所在的组
id user1 //查询user1用户所在的组
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 用户名 //改变该用户登录的初始目录。用户需要有进入新目录的权限
文件所在组
chgrp [选项] [newgroup] [文件/目录] 使用-R 选项将目录下的所有子文件进行递归处理。
chgrp group2 /home/abc.txt 将abc文件的所在组修改为group2
chgrp -R group2 /home/kkk 代表将kkk目录下的所有文件的所在组都改为group2
文件权限(rwx)
括号内代表"8421法"
从第 2 位到第 10 位代表了 abc.txt 文件的详细权限
文件权限简介:
‘r’ 代表可读(4),
‘w’ 代表可写(2),
‘x’ 代表执行权限(1),
文件权限信息示例:-rwxrw-r–
-第一位:'-'就代表是文件,'d’代表是文件夹
-第一组三位:拥有者的权限
-第二组三位:拥有者所在的组,组员的权限
-第三组三位:代表的是其他用户的权限
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc.txt
abc.txt 的所有者root对其拥有可读,可写(因为其组权限也有 w,所以可以对文件进行删除。注意可修改不代表可删除,删除一个文件的前提是对该文件所在目录有可写权限),可执行的权限;root 组所在成员对该文件拥有查看目录,修改目录的权限;其他组的成员对这个文件只拥有读的权限,以下是对这三种权限的解释。
权限对于文件
r 代表可读:可以查看
w 代表可写:可以修改文件
x 代表可执行:文件可以被执行
权限对于目录
r 代表可读:可以查看,使用ls展示目录中的内容
w 代表可写:可以修改,对目录内文件进行新增、删除;重命名目录
x 代表可执行:可以进入该目录如cd
修改文件或者目录的权限
通过修改文件或者目录的权限,从而对所有者、所在组和其他组的成员进行权限的划分。
u:所有者 g:所在组 o:其他人 a:所有人(u,g,o的总和)
chmod u=rwx,g=rx,o=r a.txt //代表对a文件,所有者有读写执行的权限,所在组有读和执行的权限,其他人有读的权限
chmod o+w a.txt //代表给其他组添加对a文件可以修改的权限
用数字变更权限。(三种权限也可以用数字表示:r=4 ; w=2 ; x=1)
r=4 ; w=2 ; x=1 所以rwx= 7
chmod u=rwx,g=rx,o=r a.txt 也可以写作为 chmod 754 a.txt
一、用户组操作
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;
新建用户组
在Linux中,您可以使用groupadd命令来创建一个新的用户组。以下是一个示例命令,用于创建一个名为mygroup的新用户组:
sudo groupadd mygroup
查看用户的所属组:
groups username
将用户添加到用户组:
usermod -aG groupname username
-aG选项表示将用户添加到组中(-a表示追加,-G指定组名)。
设置用户组标识
如果您想要设置用户组的标识符(GID),可以使用-g选项:
groupadd -g 1001 mygroup
新建用户同时增加工作组
# 新建phpq用户并增加到test工作组
useradd -g test phpq
注::-g 所属组 -d 家目录 -s 所用的SHELL
创建一个新用户并添加到特定组:
useradd -m -G groupname username
-m选项表示创建用户的家目录,-G选项用于指定用户的初始组。
给已有的用户增加工作组
usermod -G groupname username
或者:
gpasswd -a user group
从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A
或者用命令
gpasswd -d A GROUP
用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;
root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;
通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;
当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org 的网页程序,就是nobody用户;我们匿名访问ftp 时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看 /etc/passwd ;
用户操作
临时关闭用户:
在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上就可以了。想恢复该用户,去掉即可。
或者使用如下命令关闭用户账号:
passwd peter –l
重新释放用户:
passwd peter –u
永久性删除用户账号
userdel peter
groupdel peter
usermod –G peter peter (强制删除该用户的主目录和主目录下的所有文件和子目录)
从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A
或者用命令
gpasswd -d A GROUP
显示用户信息
id user
cat /etc/passwd
二、用户
root用户具有超级用户权限,但是为了减轻对操作系统的破坏,需要针对Linux系统给不同人创建用户,或者针对不同应用程序使用不同的用户,那么就需要用到useradd命令来创建用户了,首先,执行useradd命令,主要有三个过程:
1.为新创建的用户账户编辑文件/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow。
2.为新用户创建用户主目录(home)。
3.给新用户设置主目录的操作权限。
Linux主目录是指Linux操作系统中的用户主目录。在Linux系统中,每个用户都有一个独立的主目录,用于存储个人文件和配置信息。了解Linux主目录的结构和功能可以帮助用户更好地管理和组织自己的文件。
Linux的主目录一般位于根目录下,使用“/home/用户名”来表示。当用户成功登录系统后,会自动进入自己的主目录。主目录是每个用户的私密空间,其他用户无法直接访问或修改。
二.基本语法
useradd [options] 用户名

useradd -m -d /tmp/user dmdba
例子二:创建一个用户组为dinstall ,用户名为dmdba的用户
useradd -g dinstall dmdba
例子三:创建一个登录shell为 /bin/bash的用户名为dmdba的用户
useradd -s /bin/bash dmdba
例子四:创建一个用户名为dmdba,用户id为12345 群组为dinstall shell为/bin/bash 同时主目录 为/home/dmdba
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
例子五:创建一个用户名为dmdba,没有登录shell
useradd -s /sbin/nologin dmdba
将用户加入多个用户组
useradd -g oinstall -G dba -m oracle
useradd -g oinstall -G dba -m oracle
这个命令是在Unix或Linux系统中创建一个新的用户oracle,并将其添加到oinstall和dba组。
这个命令的含义是:
useradd:这是一个命令,表示要创建一个新的用户。
-g oinstall:这意味着将用户添加到名为oinstall的组。
-G dba:这意味着将用户添加到名为dba的组。
-m:这个选项告诉系统创建用户的主目录,并且如果已经存在,则不要报错。
oracle:这是新用户的用户名。
三、用户(user)和用户组(group)相关的配置文件、命令或目录;
1、与用户(user)和用户组(group)相关的配置文件;
1)与用户(user)相关的配置文件;
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;
2)与用户组(group)相关的配置文件;
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;
2、管理用户(user)和用户组(group)的相关工具或命令;
1)管理用户(user)的工具或命令;
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
2)管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;
3、/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 来改变新用户家目录的属主;
4、/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 注:是否创用户家目录,要求创建;
5、/etc/default/useradd 文件;
通过useradd 添加用户时的规则文件;
# useradd defaults file
GROUP=100
HOME=/home 注:把用户的家目录建在/home中;
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用;
EXPIRE= 注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash 注:所用SHELL的类型;
SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
1920

被折叠的 条评论
为什么被折叠?



