Linux账号和权限管理
文章目录一、管理用户账号和组账号1、用户账号和组账号概述Linux基于用户身份对资源访问进行控制用户的分类2、用户账号文件/etc/passwd3、用户账号文件/etc/shadow4、chage命令5、添加用户账号-useradd命令6、设置/更改用户命令-passwd7、修改用户账号的属性-usermod8、删除用户账号-userdel9、用户账号的初始配置文件(1) .bash_profil
文章目录
引言
作为一个多用户、多服务的服务器操作系统,Linux提供了严格的权限管理机制,主要从用户身份、文件权限两方面对资源的访问进行限制。本文将分别介绍Linux系统中用户和组账号的管理、文件权限和归属的管理、文件和目录的权限管理、文件和目录的归属管理。
一、用户账号
1、用户账号概述
(1)Linux基于用户身份对资源访问进行控制
-
用户账号
- 超级用户(root管理员,权限最高,ID为0)
- 普通用户(以CentOS7为例,UID在1-999(保留),创建账号从1000开始)
- 程序用户(伪用户,不能登录操作系统,只能正常运行服务,比如ftp和apache) -
组账号
- 基本组(私有组)
- 附加组(公有组) -
UID和GID
- UID(User IDentity,用户标识号)
- GID(Group IDentify,组标识号)
(2)用户的分类
-
超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于Windows操作系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。 root 拥有对系统的最高的管理权限ID=0。
-
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
系统用户UID:1-999(centos7版本)1-499(centos6版本)
UID:即每个用户的身份标示,类似于每个人的身份证号码。 -
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不介许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail等
伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行如:ftp,apache -
UID:即每个用户的身份标示,类似于每个人的身份证号码。
-
管理员组:root,0
-
普通组:GID
- 系统组:1-499(Cent0S6)1-999(CENTOS7)
- 普通组:500+(CentoS6),1000+(CENTOS7)
表示该账户需要密码才能登录,为空时,账户无须密码即可登录
-
组账号:
- 基本组:基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组);
- 附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。
简说:
用户和组的关系
用户是员工,组是职位,员工可以兼职多个岗位
总有一个最重要的身份,主要组和附加组
主要组:必须要一个,组有且唯一。
附加组:可有可无,可以有多个
默认行为当你创建一个新用户时会自动创建一个和之同名的主组
2、用户账号文件/etc/passwd
保存用户名称、宿主目录、登录Shell等基本信息
- 文件位置:/etc/passwd
- 每一行对应一个用户的账号记录
3、用户账号文件/etc/shadow
保持用户的密码、账号有效期等信息
- 文件位置:/etc/shadow
- 每一行对应一个用户的密码记录
4、chage命令
chage命令:用来修改帐号和密码的有效期限,针对目前系统已经存在的用户
chage [选项] 用户名
- -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
- -M:密码保持有效的最大天数。chage -M 60 root
- -W:用户密码到期前,提前收到警告信息的天数。
- -E:帐号到期的日期。过了这天,此帐号将不可用。
- -d:上一次更改的日期。
- -I(大写i):停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
- -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
例:chage -E 2019-04-29 test
//其中,test为用户,用户将在2019年4月29日失效(不可登录)
chage -d 2019-06-30 test //设置test用户最后一次修改密码的日期为2019年6月30日
chage -d 0 test //则代表该test用户需立即修改密码
date -d “+45days” -u//如果不知道时间可以用date查看
- -u:UTC时间
5、添加用户账号-useradd命令
useradd 选项 用户名
- -d:指定用户的宿主目录位置(当与-M一起使用时,不生效)。
- -e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
- -g:指定用户的基本组名(或使用GID号)。
- -G:指定用户的附加组名(或使用GID号)。
- -s:指定用户的登录Shell。
- -u:指定用户的UID号,要求该UID号码未被其他用户使用。
- -M:不建立宿主目录,即使/etc/loqin.defs系统配置中已设定要建立宿主目录。
举例:
1、创建新用户,设置密码
2、给用户指定宿主目录,设置基本组为wheel,附加组为root
3、给王五设置账号过期时间,并且不能登录账户(nologin)
4、赵六不建立宿主目录,在home里面找不到(useradd -M)
5、指定UID给用户李辰(useradd -u)
6、设置/更改用户命令-passwd
- -d:清空指定用户的密码,仅使用用户名即可登录系统。
- -l:锁定用户账户。
- -S:查看用户账户的状态(是否被锁定)。
- -u:解锁用户账户。
passwd命令扩充
#调用管道符,给zhangsan用户设置密码"123",为了方便系统管理,passwd命令提供了
–stdin选项,用于批量给用户设置初始密码。例如: echo “123456” | passwd --stdin zhuxuan
举例:
1、批量给用户设置密码(echo “123456” | passwd --stdin zhuxuan)
2、清除密码(passwd -d)
3、查看用户状态(passwd -S)
4、锁定用户(passwd -l)
5、解锁用户(passwd -u)
7、修改用户账号的属性-usermod
常用命令参数:
- -l:更改用户账号的登录名称(login Name)
- -L:锁定用户账户
- -U:解锁用户账户
以下选项与useradd命令中含义相同
- -u:修改用户的ID号
- -d:修改用户的宿主目录位置
- -e:修改用户的账户失效时间,可使用 YYYY-MM-DD的日期格式
- -g:修改用户的基本组名(或使用GID号)
- -G:修改用户的附加组名(或使用GID号)
- -s:指定用户的登录Shell
8、删除用户账号-userdel
userdel [-r] 用户名
- 添加-r选项时,表示脸用户的宿主目录一并删除
- 如果不加-r,删除之后在创建用户时会报错
举例:
Userdel 直接删除用户不加参数,然后再重新创建出相同的用户
9、用户账号的初始配置文件
- 文件来源
- 新建用户账号时,从**/etc/skel**目录中复制而来 - 主要的用户初始配置文件
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_logout
注:ls -a才能查看,里面有隐藏文件
(1) .bash_profile
示例代码中为用户添加了2个环境变量(JAVAHOME和CLASSPATH),并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)
CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath.
(2).bashrc
例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。
每次修改.bashrc后,使用source/.bashrc(或者。/.bashrc)就可以立刻加载修改后的设置,使之生效。
一般会在bashprofile文件中显式调用bashrc。登陆linux启动bash时首先会去读取~/.bash profi le文件,这样~/bashrc也就得到执行了,你的个性化设置也就生效了。
关于环境变量的读取顺序:
用户登录->>加载~/bash profile --> bash profile中配置了首先是使~/.bashrc生效
(3).bash_logout
用途:用户登出时执行的命令
#~ /.bash_logout
#在当前用户登出时,打印出Logout 和当前时间
echo “Logout, ‘date’”
例子:
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,
.bash_history文件都会被删除.
- history -c 清除历史记录
- history -r /root/history.txt,把命令读进来作为当前bash的历史记录
- history -w /root/history.txt,把当前bash的历史记录写入history.txt
echo “history -c” >> ~/.bash_logout
echo “history -c” >> ~/.bash_profile
二、组账号
1、组账号文件
与用户账号文件相类似
- etc/group:保存组账号基本信息
- etc/gshadow:保存组账号的密码信息
2、添加账号-groupadd
groupadd命令
- groupadd [-g GID] 组账号名
示例:
2、添加删除组成员-gpasswd
gpasswd命令
- 设置组账号密码(极少用)、添加/删除组成员
- gpasswd [选项] 组账号名
常用选项
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
示例:
1、添加用户到组(gpasswd -a)
2、从组中删除用户(gpasswd -d)
3、批量添加组成员,-M添加用户时会把原有的用户全部删除(gpasswd -M)
3、删除组账号-groupdel
groupdel命令
- groupdel 组账号名
示例:
4、查询账号信息
(1)groups命令
- 查询用户所属的组
- groups [用户名]
(2)id命令
- 查询用户身份标识
- id [用户名]
(3)finger命令
- 查询用户账号的详细信息
- finger [用户名]
(4)w、who、users命令
- 查询已登录到主机的用户信息
(5)lastlog命令
- 用于显示系统中所有用户最近一次登录信息
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。
常用选项:
- -b<天数>:显示指定天数前的登录信息
- -t<天数>:显示指定天数以来的登录信息
- -u<用户名>:显示指定用户的最近登录信息
- -h:显示召集令的帮助信息
实例:
1、显示3天前的登录信息(lastlog -b)
2、显示5天以来的登录信息(lastlog -t)
3、显示用户最近的登录信息(lastlog -u)
4、显示帮助信息(lastlog -h)
三、文件/目录的权限和归属
访问权限
- 读取r:允许查看文件内容、显示目录列表
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行x:允许运行程序、切换目录
归属(所有权)
- 属主:拥有该文件或目录的用户帐号
- 属组:拥有该文件或目录的组帐号
1、rwx权限详解
(1)文件中的rwx
r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行
(2)文件夹中的rwx
r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]
(3)查看文件时候前缀
-rw-r--r--. 1 root root 1808 3月 22 08:39 initial-setup-ks.cfg
- 表示类型为文件
第一组rwx: 表示所有者 可读 可写 可执行
第二组rw-: 表示同组用户 可读 可写 但不能执行
第三组r--: 表示其他用户 只可读
可用数字表示:
r = 4
w = 2
x = 1
因此rwx = 4+2+1 = 7
2、设置文件和目录的权限chmod
chmod 权限变更格式 文件或目录路径
- chmod [ugoa] [+ - =] [rwx] 文件或目录
- chmod nnn 文件或目录
chomod [ugoa] [+ - =] [rwx] 文件或目录
u:所有者(属主) g:所有组(属组) o:其他人 a:所有人
+:增加 -:去除 =:设置权限
r:读 w:写 x:运行权限
1. u=rwx,g=rx,o=x
2. o+w 其它用户增加w权限
3. a-x 所有人减去执行权限
chomd nnn 文件或目录
nnn:表示3位8进制数
r = 4 w = 2 x = 1 rwx = 7 rx = 5
chmod u=rwx,g=rx,o=x 可以写成 chmod 751
示例:
3、设置文件和目录的归属chown
chown命令
- chown 属主 文件或目录
- chown :属组 文件或目录
- chown 属主:属组 文件或目录
常用选项
- -R:递归修改指定目录下所有文件、子目录的归属
实例:
4、权限掩码umask
umask作用
- 控制新建的文件或目录的权限
- 默认权限去除umask的权限为新建的文件或者目录的权限
umask设置:umask 022
umask查看:umask
示例:
1、将umask设为022,查看权限(实际权限755)
2、将umask设为000,查看权限(实际权限777)
四、总结
- 用户账号管理(useradd、passwd、usermod、userdel)
- 组账号管理(groupadd、gpasswd、groupdel)
- 用户账号文件与组账号文件
- 查询账号相关信息的命令(groups、id、finger、w)
- 设置目录与文件权限(chmod)
- 设置目录与文件归属(chown)
- 权限掩码(umask)
更多推荐
所有评论(0)