Linux账号权限管理
用户账号和组账号概述
用户账号
- 超级用户:
root
用户是Linux
操作系统中默认的超级用户账号,对本主机拥有至高无上的权限。
- 普通用户:需要管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户:安装
Linux
操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。
组账号
- 基本组:每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)。
- 附加组:若用户除基本组外同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)
UID
和GID
用户账户管理
用户账户文件
passwd
文件中的配置行格式
字段 |
含义 |
第1字段:sun |
用户账号的名称 |
第2字段:x |
密码占位符 |
第3字段:1000 |
用户账号的UID 号 |
第4字段:1000 |
所属基本组账号的 GID 号 |
第5字段:sun |
用户全名 |
第6字段:/home/sun |
宿主目录 |
第7字段:/bin/bash |
登录 Shell 等信息 |
字段 |
含义 |
第1字段:sun |
用户账号名称 |
第2字段:$6$ozmU...PWcx0 |
使用哈希算法加密的密码字串信息 |
第3字段:18117 |
表示从 1970 年 01 月 01 日 算起到最近一次修改密码时间隔的天数 |
第4字段:0 |
密码的最短有效天数,默认值为0 ,表示不进行限制。 |
第5字段:99999 |
密码的最长有效天数 |
第6字段:7 |
提前多少天警告用户密码将过期,默认值为7 。 |
第7字段 |
在密码过期之后多少天内禁用此用户。 |
第8字段 |
账号失效时间,默认值为空,表示账号永久可用。 |
第9字段 |
保留字段,目前没有特定用途。 |
添加、修改、删除用户账号
useradd
命令——添加用户账号
- 命令格式
useradd [选项]… 用户名...
- 常用选项
选项 |
含义 |
-u |
指定用户UID号。 |
-d |
指定用户宿主目录位置。 |
-e |
指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。 |
-g |
指定用户的基本组 |
-G |
指定用户的附加组 |
-M |
不建立宿主目录 |
-s |
指定用户的登录shell 。/bin/bash 可以登录系统 ,/sbin/nologin 不可登录系统 |
[[email protected] ~]# useradd -u 1008 -s /sbin/nologin siti
[[email protected] ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
sun:x:1000:1000:sun:/home/sun:/bin/bash
siti:x:1008:1008::/home/siti:/sbin/nologin
//创建siti用户,指定UID号1008,指定用户无法登录系统
passwd
命令——为用户账号设置密码
- 命令格式
passwd [选项]… 用户名...
- 常用选项
选项 |
含义 |
-d |
清空指定用户的密码 |
-l |
锁定用户账户 |
-S |
查看用户账户状态 |
-u |
解锁用户账户 |
[[email protected] ~]# passwd siti //设置siti账户密码
更改用户 siti 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]# passwd -l siti //锁定siti账户
锁定用户 siti 的密码 。
passwd: 操作成功
[[email protected] ~]# passwd -S siti //查看账户siti状态
siti LK 2019-08-21 0 99999 7 -1 (密码已被锁定。)
[[email protected] ~]# passwd -u siti //解锁siti账户
解锁用户 siti 的密码。
passwd: 操作成功
[[email protected] ~]# passwd -S siti //查看账户siti状态
siti PS 2019-08-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
usermod
命令——修改用户账号属性
- 命令格式
usermod [选项]… 用户名...
- 常用选项
选项 |
含义 |
-u |
修改用户UID 号 |
-d |
修改用户的宿主目录位置 |
-e |
修改用户的账户失效时间,可使用YYYY-MM-DD 的日期格式 |
-s |
指定用户的登录shell |
-l |
更改用户账号的登录名称 |
-L |
锁定用户账户 |
-U |
解锁用户账户 |
[[email protected] ~]# usermod -l st11 siti //更改siti账户名为st11
[[email protected] ~]# tail -2 /etc/passwd //查看passwd文件后两行信息
sun:x:1000:1000:sun:/home/sun:/bin/bash
st11:x:1008:1008::/home/siti:/sbin/nologin //账户名已更改
[[email protected] ~]# usermod -L st11 //锁定st11用户
[[email protected] ~]# passwd -S st11 //查看st11用户状态
st11 LK 2019-08-21 0 99999 7 -1 (密码已被锁定。)
[[email protected] ~]# usermod -U st11 //解锁st11用户
[[email protected] ~]# passwd -S st11 //查看st11用户状态
st11 PS 2019-08-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[[email protected] ~]# usermod -s /bin/bash st11 //设置st11可以登录系统
[[email protected] ~]# tail -2 /etc/passwd //查看passwd文件后两行信息
sun:x:1000:1000:sun:/home/sun:/bin/bash
st11:x:1008:1008::/home/siti:/bin/bash //shell登录已更改
userdel
命令——删除用户账号
- 命令格式
userdel [选项]… 用户名...
- 常用选项
[[email protected] ~]# userdel -r st11 //删除st11用户,同时删除宿主目录
[[email protected] ~]# tail -2 /etc/passwd //查看passwd文件后两行信息
tcpdump:x:72:72::/:/sbin/nologin
sun:x:1000:1000:sun:/home/sun:/bin/bash //st11用户已删除
组账号管理
组账号文件
添加、管理、删除组账号
groupadd
命令——添加组账号
[[email protected] ~]# groupadd caiwu //创建caiwu组
[[email protected] ~]# tail -3 /etc/group //查看group文件后两行信息
sun:x:1000:
siti:x:1008:
caiwu:x:1009: //创建的caiwu组
gpasswd
命令——添加、设置、删除组成员
- 命令格式
gpasswd [选项] [用户名] [组名称]
- 常用选项
选项 |
含义 |
-a |
向组内添加一个用户 |
-d |
从组内删除一个用户成员 |
-M |
定义组成员列表,以逗号分隔(注意:当组内有已经有成员时,用此选项将覆盖原组内成员) |
[[email protected] ~]# gpasswd -a st11 caiwu //将st11加入caiwu组
正在将用户“st11”加入到“caiwu”组中
[[email protected] ~]# tail -5 /etc/group //查看group文件后5行信息
sun:x:1000:
caiwu:x:1009:st11 //st11成功加入caiwu组
siti:x:1001:
si22:x:1002:
st11:x:1003:
[[email protected] ~]# gpasswd -d st11 caiwu //将st11从caiwu组中删除
正在将用户“st11”从“caiwu”组中删除
[[email protected] ~]# tail -5 /etc/group //查看group文件后5行信息
sun:x:1000:
caiwu:x:1009: //st11从caiwu组中删除
siti:x:1001:
si22:x:1002:
st11:x:1003:
[[email protected] ~]# gpasswd -M st11,si22,siti caiwu //将st11,si22,siti添加进caiwu组
[[email protected] ~]# tail -5 /etc/group //查看group文件后5行信息
sun:x:1000:
caiwu:x:1009:st11,si22,siti //st11,si22,siti成功加入caiwu组
siti:x:1001:
si22:x:1002:
st11:x:1003:
groupdel
命令——删除组账号
[[email protected] ~]# groupdel caiwu //删除caiwu组
[[email protected] ~]# tail -5 /etc/group //查看group文件后5行信息
tcpdump:x:72:
sun:x:1000:
siti:x:1001:
si22:x:1002:
st11:x:1003: //caiwu组已删除
查询账户信息
groups
命令——查询用户账号所属的组
[[email protected] ~]# groups //默认查看当前账户所属组
root
[[email protected] ~]# groups sun //查看sun账户所属组
sun : sun wheel
id
——查询用户账号的身份标识
- 命令格式
id 用户名称(当不填写用户名称时默认当前用户)
[[email protected] ~]# id //默认查看当前用户身份标识
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[[email protected] ~]# id sun //查看sun用户身份标识
uid=1000(sun) gid=1000(sun) 组=1000(sun),10(wheel)
finger
命令——查询用户账号的登录属性
[[email protected] ~]# finger //默认查看当前账户登录属性
Login Name Tty Idle Login Time Office Office Phone Host
root root pts/0 Aug 21 21:58 (192.168.144.1)
[[email protected] ~]# finger sun //查看sun账户登录属性
Login: sun Name: sun
Directory: /home/sun Shell: /bin/bash
Last login 五 8月 9 12:19 (CST) on :1
No mail.
No Plan.
w、who、users
命令——查询当前主机的用户登录情况
- 命令格式
w 用户名称(当不填写用户名称时默认当前用户)
[[email protected] ~]# w //默认查看当前账户登录情况
00:11:19 up 2:13, 1 user, load average: 0.00, 0.01, 0.05
root pts/0 192.168.144.1 21:58 7.00s 0.36s 0.02s w
[[email protected] ~]# who //默认查看当前账户登录情况
root pts/0 2019-08-21 21:58 (192.168.144.1)
[[email protected] ~]# users //默认查看当前账户登录情况
root
[[email protected] ~]# w sun //查看sun账户登录情况
00:11:52 up 2:14, 1 user, load average: 0.00, 0.01, 0.05
文件/目录的权限和归属
访问权限
- 读取
r
:允许查看文件内容、显示目录列表
- 写入
w
:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行
x
:允许运行程序、切换目录
归属
- 属主:拥有该文件或目录的用户帐号
- 属组:拥有该文件或目录的组帐号
查看文件/目录的权限和归属
- 使用带
“-l”
选项的 ls
命令时,将以长格式显示文件或目录的详细信息,其中包括该文件的权限和归属等参数。
[[email protected] ~]# ls -l /etc/passwd //以长格式查看passwd文件
-rw-r--r--. 1 root root 2218 8月 21 23:27 /etc/passwd //显示文件信息
- 在上述输出信息中,第
3
、4
字段的数据分别表示该文件(或目录)的属主、属组,上例中/etc/passwd
文件属于root
用户、root
组;而第 1 字段的数据表示该文件(或目录)的访问权限,如-rw-r--r--
。权限字段由四部分组成,各自的含义如下:
字段 |
含义 |
第1字符 |
表示该文件的类型,d 目录、c 字符设备文件、 - 普通文件、字母l 链接文件等。 |
第2~4个字符 |
表示该文件的属主用户对该文件的访问权限。 |
第5~7个字符 |
表示该文件的属组内各成员用户对该文件的访问权限。 |
第8~10个字符 |
表示其他任何用户对该文件的访问权限。 |
第11个字符 |
这里的. 与 SELinux 有关,目前不必关注。 |
权限的数字标识形式
chmod
命令——设置文件或目录的权限
- 命令格式
chmod [ugoa] [+-=] [rwx] 文件或目录...
或
chmod nnn 文件或目录...
[ugoa…][+-=][rwx]
的形式中,三个组成部分的含义及用法如下:
ugoa
表示该权限设置所针对的用户类别。u
代表文件属主,g
代表文件属组内的用户, o
代表其他任何用户, a
代表所有用户(u
、g
、o
的总和)。
+-=
表示设置权限的操作动作。 +
代表增加相应权限, -
代表减少相应权限,=
代表仅设置对应的权限。
rwx
是权限的字符组合形式,也可以拆分使用,如r
、rx
等
nnn
为需要设置的具体权限值,如755
、644
等
[[email protected] opt]# ls -l siti.txt //以长格式查看siti.txt文件信息
-rw-r--r--. 1 root root 0 8月 22 01:19 siti.txt
[[email protected] opt]# chmod guo+x siti.txt //设置文件所有用户可执行权限
[[email protected] opt]# ls -l siti.txt //以长格式查看siti.txt文件信息
-rwxr-xr-x. 1 root root 0 8月 22 01:19 siti.txt //文件成功添加多有用户可只执行权限
[[email protected] opt]# chmod 666 siti.txt //设置文件所有用户可读、可写权限
[[email protected] opt]# ls -l siti.txt //以长格式查看siti.txt文件信息
-rw-rw-rw-. 1 root root 0 8月 22 01:19 siti.txt //文件成功设置权限
umask
应用
umask
就是默认指定目前用户在新建文件或目录是的权限默认值。执行umask 022
即可以设置当前用户的默认权限。直接执行umask
命令就是查看当前系统的默认权限。需要注意的是,umask
的分数指的是“该默认值需要减掉的权限”,如果执行umask 022
代表 group
和other
被拿掉了权限2
,也就是被拿掉了“写”权限。如果执行命令umask 000
,代表文件的默认权限是777
[[email protected] opt]# umask 000
[[email protected] opt]# mkdir sisi
[[email protected] opt]# ls -ld sisi
drwxrwxrwx. 2 root root 6 8月 22 01:42 sisi
[[email protected] opt]# umask 022
[[email protected] opt]# mkdir sisi2
[[email protected] opt]# ls -ld sisi2
drwxr-xr-x. 2 root root 6 8月 22 01:44 sisi2
chown
命令——设置目录和文件的归属
- 命令格式
chown 属主[:[属组]] 文件或目录...
- 常用选项
[[email protected] opt]# chown -R sun sisi2 //更改sisi2目录属主为sun
[[email protected] opt]# ls -ld sisi2 //以长格式友好查看sisi2目录信息
drwxr-xr-x. 2 sun root 6 8月 22 01:44 sisi2 //sisi2目录属主成功更改
[[email protected] opt]# chown -R :sun sisi2 //更改sisi2目录属组为sun
[[email protected] opt]# ls -ld sisi2 //以长格式友好查看sisi2目录信息
drwxr-xr-x. 2 sun sun 6 8月 22 01:44 sisi2 //sisi2目录属组成功更改
[[email protected] opt]# chown -R root:root sisi2 //更改sisi2目录属主、属组为root
[[email protected] opt]# ls -ld sisi2 //以长格式友好查看sisi2目录信息
drwxr-xr-x. 2 root root 6 8月 22 01:44 sisi2 //成功更改sisi2目录属主、属组信息
补充内容
- 用户账号的初始配置文件
添加新的用户账号后useradd
命令会在用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/
,基本上都是隐藏文件,较常用的初始配置文件包括.bash_logout
、.bash_profile
、.bashrc
。其中.bash_profile
”文件中的命令将在该用户每次登录时被执行;; .bashrc
文件中的命令会在每次加载/bin/Bash
程序(当然也包括登录系统)时执行;而.bash_logout
文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。
在.bashrc
等文件中,可以添加用户自己设置的可执行语句(如 Linux
命令行、脚本控制语句等),以便自动完成相应的任务。如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc
目录下的类似文件,如/etc/bashrc
文件、/etc/profile
文件。
原文地址:https://blog.51cto.com/14473285/2431591
时间: 2024-11-08 15:20:11