admin 管理员组文章数量: 887021
2024年1月13日发(作者:springboot文档中文)
Linux用户管理及权限设置
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
· 用户账号的添加、删除与修改。
· 用户口令的管理。
· 用户组的管理。
注:此说明适用于Debian、Redhat、suse、Ubuntu、Fedora等众多linux系统,并对多少位没有区别。
一、Linux系统用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1、添加新的用户账号
添加新用户帐号使用useradd命令,其语法如下:
代码:
useradd 选项 用户名
其中各选项含义如下:
代码:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名 指定新账号的登录名。
例1:
代码:
# useradd –d /home/olcs -m olcs
此命令创建了一个用户sam,
其中-d和-m选项用来为登录名sam产生一个主目录/home/olcs(/home为默认的用户主目录所在的父目录)。
例2:
代码:
# useradd -s /bin/bash -g olcs –G olcs,root
此命令新建了一个用户gem,该用户的登录Shell是/bin/bash,它属于olcs用户组,同时又属于root用户组,其中olcs用户组是其主组。
这里可能新建组:#groupadd olcs
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
2、删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:
代码:
userdel 选项 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:
代码:
# userdel -r olcs
此命令删除用户olcs在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
3、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
代码:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用如下选项:
代码:
-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:
代码:
# usermod -s /bin/csh -d /home/zinglabs –g olcsteam olcs
此命令将用户olcs的登录Shell修改为csh,主目录改为/home/zinglabs,用户组改为olcsteam。
4、用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
代码:
passwd 选项 用户名
可使用的选项:
代码:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是olcs,则下面的命令修改该用户自己的口令:
代码:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
代码:
# passwd olcs
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
代码:
# passwd -d olcs
此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
代码:
# passwd -l olcs
备注:/usr/bin/passwd 是修改用户密码的程序 密码记录在 /etc/shadow
/etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息.
/etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户( r o o t )可读。
Linux /etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。
5、口令时效
口令时效是系统管理员用来防止机构内不良口令的一种技术。在Linux系统上,口令时效是通过chage命令来管理的,格式为:chage []
下面列出了chage命令的选项说明:
-m days: 指定用户必须改变口令所间隔的最少天数。如果值为0,口令就不会过期。
-M days: 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时,用户在使用该帐号前就必须改变口令。
-d days: 指定从1970年1月1日起,口令被改变的天数。
-I days: 指定口令过期后,帐号被锁前不活跃的天数。如果值为0,帐号在口令过期后就不会被锁。
-E date: 指定帐号被锁的日期。日期格式YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。
-W days: 指定口令过期前要警告用户的天数。
-l: 列出指定用户当前的口令时效信息,以确定帐号何时过期。
例如下面的命令要求用户user1两天内不能更改口令,并且口令最长的存活期为30天,并且口令过期前5天通知用户
chage -m 2 -M 30 -W 5 user1
可以使用如下命令查看用户user1当前的口令时效信息:chage -l user1
提示:1)可以使用chage 进入交互模式修改用户的口令时效。
2)修改口令实质上就是修改影子口令文件/etc/shadow中与口令时效相关的字段值。
二、Linux系统用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux
系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
1、增加一个新的用户组
增加一个新的用户组使用groupadd命令,其格式如下:
代码:
groupadd 选项 用户组
可以使用的选项有:
代码:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例1:
代码:
# groupadd olcs
此命令向系统中增加了一个新组olcs,新组的组标识号是在当前已有的最大组标识号的基础上加1。
例2:
代码:
#groupadd -g 101 group1
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
2、删除已有用户组
如果要删除一个已有的用户组,使用groupdel命令,其格式如下:
代码:
groupdel 用户组
例如:
代码:
#groupdel group1
此命令从系统中删除组group1。
3、修改用户组的属性
修改用户组的属性使用groupmod命令。其语法如下:
代码:
groupmod 选项 用户组
常用的选项有:
代码:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
例1:
代码:
# groupmod -g 102 group1
此命令将组group1的组标识号修改为102。
例2:
代码:
# groupmod –g 10000 -n group2 group1
此命令将组group1的标识号改为10000,组名修改为group2。
4、用户在用户组间切换
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
代码:
$ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
让Linux系统中的普通用户也有超级用户的权限
三、目录权限管理
1、3种基本权限
在Linux中,将使用系统资源的人员分为4类:超级用户、文件或目录的属主、属主的同组人和其他人员。超级用户拥有对Linux系统一切操作权限,对 于其他3类用户都要指定对文件和目录的访问权限。
代表字符 对应数值 权限 对文件的含义
r 4 读
可以读文件的内容
w 2 写
可以修改该文件
x 1 可执行
可以执行该文件
- 0 无
对目录的含义
可以列出目录中的文件列表
可以在目录中创建删除文件
可以使用cd命令进入该目录
2、查看文件和目录的权限
可以使用带l参数的ls命令查看文件或目录的权限
每一行显示一个文件或目录的信息,这些信息包括文件的类型、文件的权限、文件的属主和文件的所属组,还有文件的大小以及创建时间和文件名。输出列表中每 一行第一列的第一个字母指示了该文件的类型。各种文件类型及代表字符如下:
-:普通文件
b:块文件设备,是特殊的文件类型
d:目录文件 ,事实上在ext2fs中,目录是一个特殊的文件
c:字符文件设备 ,是特殊的文件类型
l:符号链接文件,实际上它指向另一个文件
s、p:管道文件,这些文件关系到系统的数据结构和管道,通常很少见到
第一列的其余9个字母可分为三组,3个字母一组,这3组分别代表:文件属主的权限、文件所属组的权限和其他用户的权限。每组中的3个栏位分别表示读、 写、执行权限。
第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
-:表示不具有该项权限。
3、更改操作权限(chmod/chown)
系统管理员和文件属主可以根据需要来设置文件的权限,有两种设置方法:文字设定法和数值设定法。
(1)文字设定法
chomd的文字设定法的格式为:chmod [ugoa][+-=][rwxugo]
第1个选项表示要赋予权限的用户,具体说明如下:
u:属主 g:所属组用户 o:其他用户 a:所有用户
第2个选项表示要进行的操作,具体说明如下:
+:增加权限 -:删除权限 =:分配权限,同时将原有权限删除
第3个选项是要分配的权限,具体说明如下:
r/x/w:允许读取/写入/执行 u/g/o:和属主/所属组用户/其他用户的权限相同
例如:
chmod go -r users //取消组用户和其他用户对文件users的读取权限
chmod u+x users //对文件users的属主增加招待权限
chmod u+x,go-r users //对文件users的属主添加执行权限,同时取消组用户和其他用户对文件的读取权限
(2)数值设定法
chmod的数值设定法的格式为:chmod n1n2n3
其中n1、n2、n3分别代表属主的权限、组用户的权限和其他用户的权限,这三个选项
都是八进制数字。
例如:
chmod 755 adduser //对文件adduser的属设置可读、写和执行的权限,所属组和其他用户只设置读和执行权限,没有写权限
chmod 600 user1 //取消组用户和其他用户对文件user1的一切权限(原权限为-rw-rCrC)
备注:加入想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。
4、更改属组或同组人
改变文件的属主和组可以用chown命令,命令格式为:chown [-R] 。
例如:
chmod osmond user1 //将文件user1的属主改为osmond
chmod user1 //将文件user1的属主和组都改成osmond
chmod -R mydir //将mydir目录及其子目录下的所有文件或目录的属主和组都改成osmond
5、设置文件和目录的生成掩码
用户可以使用umask命令设置文件夹的默认生成掩码。默认的生成掩码告诉系统当创建一个文件或目录时不应该赋予哪些权限。如果用户将umask命令放 在环境文件(.bash_profile)中,就可以控制所有的新建文件或目录的访问权限。其命令格式为:umask
[u1u2u3]其中,u1、u2、u3分别表示的是不允许属主有的权限、不允许同组人有的权限和不允许其他人有的权限。
例如:
umask 022 //设置不允许同组用户和其他用户有写权限 umask //显示当前的默认生成掩码
用法非常简单,只需执行umask 777 命令,便代表屏蔽所有的权限,因而之后建立的文件或目录,其权限都变成000,依次类推。通常root帐号搭配umask命令的数值为022、027和077,普通用户则是采用002,这样所产生的权限依次为755、750、700、775。
用户登录系统时,用户环境就会自动执行rmask命令来决定文件、目录的默认权限。
6、特殊权限设置
(1)SUID、SGID和sticky-bit
除了上述的基本权限之外,还有所谓的特殊权限存在。由于特殊权限会拥有一些“特权”,因而用户若无特殊需要,不应该去打开这些权限,避免安全方面出现严重漏洞,甚至摧毁系统。下面列出了3个特殊权限的说明:
SUID:当一个设置了SUID位的可执行文件被执行时,该文件以所有者的身份运行,也就是说无论谁来执行这个文件,他都拥有文件所有者的特权,可以任意存取该文
件拥有者能使用的全部系统资源。如果所有者是root,那么执行人就有超级用户的特权了。
SGID:当一个设置了SGID位的可执行文件被执行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源;若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p(preserve,保留文件属性)参数,才能保留原来 所属的群组设置。
sticky-bit:对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作,对一个目录设置了 sticky-bit之后,存放在该目录下的文件仅允许其属主执行删除、移动等操作。
一个设置了SUID的典型例子是passwd程序,它允许普通用户改变自己的口令,这是通过改变/etc/shadow文件的口令字段来实现的。然而系 统管理员决不允许普通用户拥有直接改变/etc/shadow文件的权限。解决方法是将passwd程序设置SUID,当passwd被执行时将拥有超级 用户的权限,而passwd程序运行结束又回到普通用户的权限,下面是显示passwd程序的权限:
一个设置了sticky-bit的典型例子是系统临时文件目录/tmp,这避免了不守法的用户存心搞鬼,恣意乱删其他用户存放的文件。下面显示/tmp 目录的权限:
(2)SUID、SGID和sticky-bit的表示
从上面的显示可以看出,SUID是占用属主的x位置为表示的;SGID是占用组的x位置来表示的;sticky-bit是占用其他人的x位置来表示 的。在表示上有大小定之分,假若同时设置执行权限和SUID、SGID和sticky-bit,权限标识字符是小写的;倘若关闭执行权限,则标识字符会变 成大写。
(3)设置特殊权限
使用chmod命令设置特殊权限,仍然有字符设定法和数值设定法之分。使用字符设定法时,可以使用s和t权限字符,
例如:
chmod u+s /usr/bin/myapp //为程序/usr/bin/myapp添加SUID权限
chmod g+s /home/groupspace //为目录/home/groupspace添加SGID权限
chmod o+t /home/share //为目录/home/share添加sticky-bit权限
使用chmod的数值设定法时,要使用4位八进制数值,其中第一位八进制数用于设置特殊权限,后三位八进制数用于设置基本权限。
例如:
chmod 4755 /usr/bin/myapp //设置SUID
chmod 2755 /home/groupspace //设置SGID
chmod 1755 /home/share //设置sticky-bit
附录:
1、用户和组状态命令
whoami: 用于显示当前用户的名称
groups []: 用于显示指定用户所属的组,若未指定用户,则显示当前用户所属的组
id: 用于显示用户当前的UID、GID和用户所属的组列表
su [-][]: 用于转换当前用户到指定的用户帐号,若不指定用户名则转换当前用户到root;若使用参数“-”,则在转换当前用户的同时转换用户工作环境。
newgrp []: 用于转换用户的当前组到指定的附加组,用户必须属于该组才可以进行。
2、Linux下的帐户系统文件
Linux下的帐户系统文件主要有/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow 4个。
(1)/etc/passwd文件中每行定义一个用户帐号,一行中又划分为多个不同的字段定义用户帐号的不同属性,各字段用“:”隔开。
各字段定义如下:
第一字段:用户登录系统时使用的用户名,它在系统中是唯一的。
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID, 是一个整数,系统内部用它来标识用户。每个用户的UID都是唯一的。root用户的UID是0,1~499是系统的标准帐户,普通用户从 500开始。
第四字段:GID, 是一个整数,系统内部用它来标识用户所属的组。
第五字段:注释性描述,例如存放用户名全称等信息,这是可选的
第六字段:用户home目录所在位置,即用户登录系统后进入的目录。
第七字段:批示该用户使用的shell,Linux默认为bash。
例:
给linux系统添加一个帐号:
useradd -g mysql -d /home/test -m test(:新建一个用户test, 属于mysql组,开始目录是/home/test)
然后进入 /etc/passwd,可以看到刚加的用户的信息。如下
test:x:504:501::/home/test:/bin/bash
(2)/etc/passwd文件对任何用户均可读,为了增加系统安全性,用户的口令通常用shadow
passwords保护。/etc/shadow只对root用户可读。在安装系统时,会询问用户是否启用shadow
passwords功能。在安装好系统后也可以用pwconv命令和pwunconv来启动或取消shadow
passwords保护。经过shadow passwords保护的帐户口令和相关设置信息保存在/etc/shadow文件里。
各字段意义如下:
第一字段:用户的帐户名同/etc/passwd ,字段非空;
第二字段:用户的口令,是加密过的;
第三字段:上次修改口令的时间;从1970年1月1日起,到用户最后一次更改口令的天数;
第四字段:两次修改口令间隔最少的天数;字段值为空,帐号永久可用;
第五字段:两次修改口令间隔最多的天数;字段值为空,帐号永久可用;(99999表示不需要变更)
第六字段:在用户口令过期之前多少天提醒用户更新;字段值为空,帐号永久可用;
第七字段:在口令过期之后多少天禁用此用户;如果这个字段的值为空,帐号永久可用;
第八字段:在用户口令过期之后到禁用帐户的天数(从1970年的1月1日开始的天数),字段值为空,帐号永久可用;
第九字段:标志,保留位;
(3)/etc/group文件。将用户分组是Linux中对用户进行管理及控制访问权限的一种手段。当一个用户同时是多个组的成员时,在/etc /passwd中记录的是用户所属的主组,也就是登录时所属的默认组,而其他的组称为附加组。用户要访问附加组的文件时,必须首先使用newgrp命令使 自己成为所要访问的组的成员。组的所有属性都存放在/etc/group中,此文件对任何用户均可读。
各字段意义如下:
第一字段:用户组名称;
第二字段:用户组口令,由于安全性原因,已不使用该字段保存口令,用“x”占位;
第三字段:GID,组的识别号,和UID类似,每个组都有自己独有的ID号,不同组的GID不会相同
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户
组为GID的用户名
(4)/etc/gshadow文件用于定义用户组口令、组管理员等信息,该文件只有root用户可以读取。
各字段意义如下:
第一字段:用户组名称,该字段与group文件中的组名称对应;
第二字段:用户组口令,该字段用于保存已加密的口令;
第三字段:组的管理员帐号,管理员有权对该组添加、删除帐号;
第四字段:属于该组的用户成员列表,用“,”分隔;
提示:帐户管理的实质就是管理上述的4个帐户系统文件。
3、Chmod命令详解
指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR] [--help] [--version]
说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉
以控制档案如何被他人所存取。
mode : 权限设定字串,格式如下 : [][[+-=][rwxX]...][,...],其中u 表示该档案的拥有
者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆
是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被
设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
范例 :将档案 设为所有人皆可读取 :
chmod ugo+r
4、Chown命令详解
指令名称 : chown
使用权限 : root
使用方式 : chown [-cfhvR] [--help] [--version] user[:group]
说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥
有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以
改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才
有这样的权限。
user : 新的档案拥有者的使用者
IDgroup : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
范例 :
将档案 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users
版权声明:本文标题:linux用户管理及权限设置 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705149944h474787.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论