Linux初学—Linux系统中的账户与权限
一、管理用户和组账号
1、用户和组账号概述
(1)Linux基于用户身份对资源访问进行控制
用户账号 | 组账号 | UID和GID |
---|---|---|
超级用户 | 基本组(私有组) | UID ( User IDentity,用户标识号) |
普通用户 | 附加组(公共组) | GID ( Group IDentify,组标识号) |
程序用户 |
2、用户账号管理
1>>用户帐号文件/etc/passwd
(1)保存用户名称、宿主目录、登录Shell等基本信息
文件位置: /etc/passwdx
每一行对应一个用户的帐号记录
[ root@localhost ~]# head -2 /etc/passwd
root: x:0:0:root: / root: /bin/bash
bin: x:1:1:bin: /bin: / sbin/nologin
[ root@localhost ~]# tail -1 /etc/passwd
teacher: x: 1001: 1001 : teacher: /home/ teacher: /bin/bash
不同部分含义:
root: 用户账号
x:密码占位符
0:用户账号ID
0:组账号ID
root:用户说明
/root:宿主目录
/bin/bash:登录shell
(2)保存用户的密码、账号有效期等信息
文件位置: /etc/shadow
每一行对应一个用户的密码记录
[root@localhost ~]# head -2 /etc/ shadow
root:$1 $ 55HB4pbx$acHqk4l Zi HTZ9cw0ZJe8f0:14374:0:99999:7: : :
bin:*:14374:0:99999:7:::
[root@localhost ~]# tail -1 /etc/ shadow
teacher:
1
1
1BT7teaYX$s2sr 6uFUwKhtU.8/ 8VpzB1:14374:0:99999:7:: :
注:文件的每一行内容包含九个用冒号":" 分隔的配置字段
2>>添加用户账号
(1)useradd命令
格式:useradd [选项]...用户名
常用命令选项
-u:指定UID标记号
-d :指定宿主目录,缺省为/home/用户名
-e :指定帐号失效时间
-g :指定用户的基本组名(或UID号)
-G :指定用户的附加组名(或GID号)
-M :不为用户建立并初始化宿主目录
-S :指定用户的登录Shell
(2)用户添加演示
例:指定alan的基本组为mike ,并加入到ftpuser组,指定主目录为/ftphome/alan,不允许mike通过本地登录服务器
[ root@localhost ~]# useradd -d / ftphome/alan -g alan -G ftpuser -S /sbin/nologin alan
3>>用户账号的初始配置文件
文件来源:新建用户帐号时,从/etc/skel目录中复制而来
主要的用户初始配置文件
●~/.bash profile :用户每次登录时执行
●~/.bashrc :每次进入新的Bash环境时执行
●~/.bash_logout :用户每次退出登录时执行
4>>设置账号密码
passwd命令
格式:passwd [选项]... 用户名
常用命令选项
●-d :清空用户的密码,使之无需密码即可登录
●-I :锁定用户帐号
●-S :查看用户帐号的状态(是否被锁定)
●-u:解锁用户帐号
5>>修改账号属性
usemod命令
格式:usermod [选项]... 用户名
常用命令选项
●-I:更改用户帐号的登录名称
●-L :锁定用户账户
-U :解锁用户账户
注:以下选项与useradd命令中的含义相同:-u、-d、-e、-9、-G、-S
6>>删除用户账号
userdel命令
格式:userdel [-r]用户名
例:
添加-r选项时,表示连用户的宿主目录并删除
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -Id /home/stu01/
drwx----- 2 stu01 stu01 4096 01-01 19:12 /home/stu01/
[root@localhost ~]# userdel -r stu01
[root@localhost ~]# ls -ld /home/stu01/
ls: /home/stu01/:没有那个文件或目录
3、组账号管理
1>>组账号文件
与用户帐号文件相类似
/etc/group :保存组帐号基本信息
/etc/gshadow :保存组帐号的密码信息
[ root@localhost ~]# grep “adm” /etc/ group
sys: x: 3: root, bin, adm
2>>添加组账号groupadd
单独添加组账号:groupadd [-g GID]组账号名
[ rootdlocalhost ~]# groupadd -g 1000 alan *添加组账号alan
[ root@localhost ~]# tail -1 /etc/ group
alan: x:1000:
3>>用户加入组gpasswd
gpasswd命令:设置组帐号密码(极少用)、添加/删除组成员
格式:gpasswd [选项]... 组帐号名
常用命令选项
●-a :向组内添加一个用户
●-d :从组内删除-一个用户成员
●-M :定义组成员列表,以逗号分隔
4>>删除组账号groupdel
groupdel命令
groupdel 组帐号名
例:
[ root@localhost ~]# groupdel alan 删除组帐号alan
[ root@localhost ~]# grep “market" / etc/ group
●删除组后,组成员除权限外,不受影响。
4、查询账号信息
1>>账号的查询命令
id命令:查询用户身份标识
格式:id [用户名]
groups命令:查询用户所属的组
格式:groups [用户名]
finger命令:查询用户帐号的详细信息
格式:finger [用户名]
users、w、who命令:查询已登录到主机的用户信息
二、管理目录和文件的属性
访问权限:读取r、写入w、可执行x
●读取r :允许查看文件内容、显示目录列表
●写入w :允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
●可执行x :允许运行程序、切换目录
归属(所有权):
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
1、查看文件/目录的权限和归属
权限项 | 读 | 写 | 执行 |
---|---|---|---|
字符表示 | r | w | x |
数字表示 | 4 | 2 | 1 |
权限分配类型:文件所有者、文件所属组、其他用户
1>>chmod命令
格式:chmod [ugoa ] [+-=] [rwx ] 文件或目录..
或
chmod nnn文件或目录. .
注:
u、g、o、a分别表示属主、属组、其他用户、所有用户
+、-、=分别表示增加、去除、设置权限
nnn代表三位八进制数
常用命令选项-R :递归修改指定目录下所有子项的
2、设置目录与文件归属
1>>chown命令
chown属主 文件或目录
chown :属组 文件或目录
chown属主:属组 文件或目录
常用命令选项-R :递归修改指定目录下所有文件、子目录的归属
3、文件底层属性
1>>权限控制之上的对象底层属性:用Isattr查看
“-”代表次控制位没有附加任何底层属性
例:lsattr /var/log/messages
2>>使用chattr修改
例:chattr +a , var/ log/messages
+,-,=用法同chmod
-i:全锁
目录:可修改已有子对象,不可建立删除子对象
文件:不可删除,改名,追加,修改。
-a:修改锁
目录:可以建立修改子对象,不可以删除子对象
文件:可以追加内容,不可以修改删除。(多用于日志)
3>>附加权限SET位
SET位权限
为可执行的文件设置,权限字符为”s"
其他用户执行该文件时,将拥有属主或属组权限
SET为权限类型
Suid :对属主用户增加SET位权限
Sgid :对属组内的用户增加SET位权限
[root@localhost ~]# chmod u+s /sbin/ifconfig
[root@localhost ~]# ls -l /sbin/ ifconfig
-rwsr-xr-x. 1 root root 81888 6月12 2020 /sbin/ifconfig
4>>粘滞位
粘滞位:让多个用户在同一个设置了开放权限的目录中只可以修改属于自己的文件
例:
[rootdlocalhost ~]# chmod o+t /share
[root@localhost ~]# ls -ld /share
使用其他账户在目录中创建一些文件测试
[ root@localhost ~]# ls -l / share/
rw-rw-r–. 1 wangwu wangwu 0 1月 19 18:48 test1
没有设置粘滞位,用户互相干扰
例:
[lisi@localhost share]$ ls
test1 test2
[lisi@localhost share]$ rm -rf test1
[lisi@localhost share]$ ls
test2z
设置粘滞位,用户只能管理自己
[lisillocalhost share]$ ls
test1 test2
[lisi@localhost share]$ rm -rf test1 //rm:无法删除"test1":不允许的操作
[lisi@localhost share]$ ls
test1 test2