用户、组和权限
作者:互联网
- 理解linux的安全模型
- 理解用户账号和组群账号的目的
- 用户和组管理命令
- 理解并设置文件权限
- 默认权限
- 特殊权限
- ACL
安全3A
- 资源分派
Authentication : 认证 Authorization : 授权 AccoutingAudition : 审计
1. 用户user
- 令牌token,identity
linux用户:Username/UID 管理员:root ,0 普通用户:1-60000 自动分配 系统用户:1-499.1-999(Centos7) 对守护进程获取资源进行权限分配 登录用户:500+,1000+(Centos7) 交互式登录
2. 组 group
- 目的是为了授权
- gid 只是当前工作主工作组的展示, 而groups 包含了用户所在的所有组。
Linux组:Groupname/GID 管理员组:root,0 普通组: 系统组:1-499,1-999(centos7) 普通组:500+,1000+(cenos7)
3. 安全上下文
Linux安全上下文
运行中的程序:进程(procees)
以进程发起者的身份运行:
root:/bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份
4. 用户和组的配置文件
Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
passwd文件格式
login name: 登录用名
passwd: 密码(x)
UID: 用户身份编号(1000)
GID: 登录默认所在组编号(1000)
GECOS: 用户全名或注释
home directory:用户主目录(/home/wang)
shell: 用户默认使用shell(/bin/bash)
-
nologin shell 表示不能登陆 作为系统账户,给程序用
- /etc/shadow中
$1:md5加密算法 182bit $6:sha512加密算法 512bit $...$ 表示盐(salt)
-
shadow 文件格式:
例:adong:$6$ThMn8HCsKSBbE0cr$rgsHimcyDkKyEcyZpRwBb3.HY59HJXTFJs/bUC93QuTaZm716AnlE6f5.NMX.weqPakNeotfGQilpwjImvYV4/::0:99999:7::: 登录用名 用户密码:一般用sha512加密 从1970年1月1日起到密码最近一次被变更的时间 密码再过几天可以被变更(0表示随时可以变更) 密码再过几天必须被变更(9999表示永不过期) 密码过期前几天系统提醒用户(默认为一周) 密码过期几天后账号会被锁定 从1970年1月1日算起,多少天后失效
- openssl rand -base64 12 生成base64编码随机口令
- 在cat /etc/login.defs文件中 定义了加密算法
文件操作
vipw =vi /etc/passwd 检查文件格式是否正确
-s 更改shadow
vigr = vi /etc/group
-s 更改gshadow
pwck 检查/etc/passwd文件格式
grpck 检查/etc/shadow 和 /etc/gshadow文件格式
5. 用户和组管理命令
新用户的相关文件和命令
/etc/skel 为新建目录的模板文件夹
/etc/login.defs 账号配置文件
/etc/default/useradd 定义新建账户模板
newusers passwd格式文件 批量创建用户
格式:user1:x:2000:2000:test user1:/home/user1:/bin/csh
创建users文件 users.txt
newusers users.txt 可以批量创建用户
chpasswd 批量修改用户口令
格式:user1:passwd1
user2:passwd2
创建用户密码文件 passwd.txt
cat passwd.txt | chpasswd 将用户密码输出
- getent passwd|shadow|group|gshadow adong 查看用户信息
6. 用户管理命令
- 用户创建:useradd
useradd [OPTINON] LOGIN -u 指定用户的UID -d 指定家目录的位置 -c 指定备注的内容 -s 指定shell程序文件名 -G 指定用户加入某个普通组 -g 指定用户的私有组(群组) -r 创建系统用户(服务账户) -M 不创建用户的家目录 -m 创建用户的家目录(默认) -e 2014/7/25 用户过期时间 -o 配合-u选项,不检查UID的唯一性 例:useradd cyy -d /home/abc -c huaidan -u 2000 -s /sbin/nologin 指定家目录 备注 指定uid 指定 shell
默认值设定:/etc/default/useradd 显示或更改默认设置 useradd -D useradd -D -s SHELL (bin/bash) useradd -D -b BASE_DIR (/home/file) useradd -D -g GROUP (组)
- 用户属性修改:usermod
usermod [OPTION] login -u UID:修改用户ID -g GID:修改用户所属的组 -s SHELL:新的默认SHELL -c 'COMMENT':新的注释信息 -d HOME:新家目录不会自动创建;若要创建新家目录并移动原家目录数据,同时使用-m选项 -(a)G 修改用户所属的附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项 -l login_name:新的名字(为用户更改登录名称) -L lock指定用户,在/etc/shadow 密码栏的增加'!' (锁定用户) -U unlock指定用户,将/etc/shadow 密码栏的'!'拿掉 (解锁用户) -e YYYY-MM-DD:指明用户账号过期日期 -f INACTIVE 设定非活动期限
- 删除用户:userdel
userdel[OPTION]...login -r: 删除用户家目录
- 删除用户附加组
usermod -G "" username usermod -G GROUP username 覆盖组
7. 组账号维护命令
-
创建组:groupadd
groupadd [OPTION] ...group_name -g GID 指明GID号;[GID_MIN,GID_MAX] -r 创建系统组 CentOS6:ID<500 Centos7: ID<1000
- 修改组:groupmod
groupmod [OPTION]...groupmod -n group_name 改组名 -g GID:新的GID
-
删除组:groupdel
groupdel GROUP 如果为用户的私有组,则在用户删除之前,无法删除组
- 更改组密码:gpasswd
gpasswd[option]group
-a user 将user添加至指定组中
-d user 从指定组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
newgrp:临时切换主组
如果用户本身不属于此组,则需要组密码
更改和查看组成员 groupmems
groupmems [options] [action]
options:
-g,--group groupname 更改为指定组(只有root)
-R,--root CHROOT_DIR
Actions:
-a,--add username 指定用户加入组
-d,--delete username 从组中清除成员
-p,--purge 从组中清除所有成员
-l,--list 显示组成员列表
groups [OPTION].[USERNAME]...查看用户所属列表
示例:
查看有哪些用户属于sales组
# groupmems -g sales -l
linda lisa
从sales组中删除lisa
# groupmems -d lisa -g sales
# groupmems -g sales -l
linda
添加用户到组里
# id lxj2
uid=1002(lxj2) gid=0(root) groups=0(root)
# groupmems -a lxj2 -g sales
# id lxj2
uid=1002(lxj2) gid=0(root) groups=0(root),1238(sales)
也可以使用usermod命令将用户添加到组里:
usermod-AG将把用户添加到新的组中,这些组将用作他们的辅助组。
使用usermod将用户linda和lisa添加到组销售,并将lori和bob添加到组账户:
usermod -aG sales linda
usermod -aG sales lisa
usermod -aG account lori
usermod -aG account bob
练习
- (1)创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution""
[root@centos7 ~]#useradd -s /bin/csh -c 'Gentoo Distribution' -G bin,root gentoo [root@centos7 ~]#getent passwd gentoo gentoo:x:1002:1002:Gentoo Distribution:/home/gentoo:/bin/csh [root@centos7 ~]#groups gentoo gentoo : gentoo root bin
- (2)创建下面的用户、组和组成员关系
名字为webs的组
用户nginx,使用webs作为附加组
用户varnish,使用webs作为附加组
用户mysql,不可交互登录系统,且不是webs的成员,nginx,vamish,mysql密码都是magedu# groupadd webs # useradd -G webs nginx # useradd -G webs varnish # useradd -s /sbin/nologin mysql # echo magedu | passwd --stdin nginx Changing password for user nginx. passwd: all authentication tokens updated successfully. # echo magedu | passwd --stdin varnish Changing password for user varnish. passwd: all authentication tokens updated successfully. # echo magedu | passwd --stdin mysql Changing password for user mysql. passwd: all authentication tokens updated successfully.
- (2)创建下面的用户、组和组成员关系
- (3) 当用户docher对/testdir目录无执行权限时,意味着无法做哪些操作?
1. 无法进入目录
2.可以用ls查看列表,但是无法查看文件属性类型
3.就算对目录中文件有rw权限,也无法查看和写入 >>(追加)也不行
- (4) 当用户mongodb对/testdir目录无读权限时,意味着无法做哪些操作?
1.可以进入目录,无法查看列表,可以查看ll file 详细信息
2.可以执行目录内程序,cat file可以查看文件内容
3.如果对文件有w权限,还可以通过>>写入文件
9. 查看用户相关的ID信息
id [OPTION]...[USER]
-u: 显示UID
-g:显示GID
-G: 显示用户所属的组的ID
-n:显示名称,需配合ugG使用
10. 切换用户或以其他用户身份执行命令:su
su [username] 切换身份 不完全切换
非登录式切换,即不会读取用户的配置文件,不改变当前工作目录
su - [username] 完全切换
登录式切换,会读取目标用户的配置文件,切换至家目录
切换身份执行命令
su - root -c 'command'
root su至其他用户无须密码;非root用户切换时需要密码
11. 设置密码
passwd
passwd[OPTIONS]UserName:修改指定用户的密码
常用选项:
-d:删除指定用户密码
-l:锁定指定用户密码
-u:解锁指定用户密码
-e:强制用户下次登录修改密码
-f:强制操作
--stdin:从标准输入接收用户密码
实例:echo "PASSWORD" |passwd --stdin USERNAME
echo PASSWD | passwd --stdin USERNAME &> /dev/null
useradd USERNAME;echo PASSWD | passwd --stdin USERNAME;passwd -e USERNAME
12. 修改用户密码策略
chage[option]...login
-d last_day
-E --expiredate expire_date
-I --inactive inactive
-m --mindays min_days
-M --maxdays max_days
-W --warndays warn_days
-l 显示密码策略
示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 -M 42 -W 14-17 tom
chage -E 2016-09-10 tom
用户相关的其他命令
finger user 查看用户信息
chfn user 更改用户描述信息
chsh -s 更改用户的shell
例: chsh -s /bin/nologin adong
chage [user] 更改用户口令有效期
chage -l [user] 查看用户口令信息
文件权限
文件的权限主要针对三类对象进行定义
owner 属主,u
group 属组,g
other 其他,o
每个文件针对每类访问者都定义了三种权限
r Readable
w Writable
x eXcutable
文件
r 可使用文件查看类工具获取其内容
w 可修改其内容
x 可以把此文件提请内核启动为一个进程
目录
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件呢
x 可以使用ls -l 查看此目录中文件元数据(需配合r),可以cd进入此目录
X 指给目录x权限,不给文件x权限(如果某个文件有执行权限,X会给其他所有者赋予权限)
1. 修改文件的属主和属组
修改文件的属主:chown
chown [OPTION]...[OWNER][:[GROUP]]FILE...
用法说明:
OWNER 更改所有者
OWNER:GROUP 更改所属组
:GROUP 冒号也可用.替换
chown[OPTION]...--reference=REILE FILE
-R:递归
修改文件的属组:chgrp
chgrp[option]...group file
chgrp[option]...--reference=reile file...
-R 递归
更改文件rwx权限:chmod
1.模式法
u=rwx,g=rw,o=r file
2.数字法
rwxrw-r-- file
111110100 转化为10进制764
--- 0
--x
001 1
-w-
010 2
r--
100 4
chmod [option]...octal-mode file...
-R:递归修改权限
chmod[option]...mode[mode]...file...
mode:
修改一类用户的所有权限
u= g= o= ug= a= u= g=
修改一类用户某位或某些权限
u+ u- g+ g- o+ o- a+ a-
chmod[option]...--reference=rfile file...
参考refile文件的权限,将file的修改为同rfile
chgrp修改文件的属组
chgrp[OPTION]...GROUP FILE
chgrp[OPTION]...--reference=REILE FILE
-R 递归
权限设置示例
chgrp sales testfile
chown root:admins testfile
chmod -R g+rwx testdir
chmod 600 file
chown mage testfile
面试题
cp f1 dir/fff 需要的命令
1.cp命令需要执行权限
2.f1需要读权限,所在文件夹需要执行权限,否则进不去,
3.要拷贝的目标文件夹,至少要有执行和写权限
标签:...,组和,passwd,用户,密码,权限,root 来源: https://blog.51cto.com/14451057/2424197