用户、组和权限
Linux组的类别
用户必须属于一个且只有一个主组
组名同用户名,且仅包含一个用户,私有组
用户的附加组(supplementary group)
一个用户可以属于零个或多个辅助组
chsh 更改用户shell类型
chsh -s /etc/nologin wang :更改wang的shell类型为nologin类型
修改用户口令属性
[root@laobai ~]#chage root Changing the aging information for root Enter the new value, or press ENTER for the default Minimum Password Age [0]: 5 最短口令有效期 Maximum Password Age [99999]: 56 最长口令有效期 Last Password Change (YYYY-MM-DD) [2018-04-03]: 2018-040-04 修改口令时间 Password Expiration Warning [7]: 9 口令过期警报时间 Password Inactive [-1]: 宽限期 Account Expiration Date (YYYY-MM-DD) [-1]: 账号有效期
修改新建账号默认用户口令的属性
nano /etc/login.defs
PASS_MAX_DAYS 42 最长有效期 PASS_MIN_DAYS 3 最短有效期 PASS_MIN_LEN 5 PASS_WARN_AGE 7
用户和组的配置文件
Linux用户和组的主要配置文件:
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
在shadow文件内 用户后面会有!号,表示锁定。
useradd -U +用户名 可解锁用户
useradd -L +用户名 锁定用户
passwd -e +用户名 让用户口令立即失效,从新登陆后提示输入旧口令,然后输入新口令
useradd 创建用户
- -u:指定uid
- -g:指定gid为主组
- -G:指定附加组
- -o:不检查uid唯一性,结合-u使用
- -c:添加描述信息
- -d:指定家目录
- -s:指定默认shell
- -N:不创建主组,并且加入users组为主组
- -r:创建系统用户
- -m:创建系统用户时强制创建家目录,结合-r使用
- -M:创建登录用户时不创建家目录
- -D:修改/etc/default/useradd文件
- -s SHELL
- -b HOME
- -g GROUP
usermod 修改用户
- -u:修改uid
- -g:修改gid
- -G:修改附加组,结合-a可以追加附加组
- -s:修改默认shell
- -c:修改描述信息
- -d:修改家目录,结合-m可以搬家
- -l:修改用户名
- -L:锁定账户
- -U:解锁账户,在新系统上不支持对空密码用户解锁
- -e YYYY-MM-DD:设置账户过期时间
- -f INACTIVE:设定非活动期限
userdel 删除用户
- -r:删除用户时连家目录一并删除
id 查看用户信息
- -u:查看uid
- -g:查看gid
- -G:查看用户所属的组的ID
- -n:显示名称,配合-ugG使用
su 切换用户
- su USERNAME 非完全切换,部分变量还是原用户的变量
- su - USERNAME 完全切换,相当于重新登录
- su [-] USERNAME -c 'CMD' 登录到新用户执行CMD命令后返回旧用户
passwd 修改用户密码
- -d:删除指定用户名密码
- -l:锁定用户密码 == usermod -L
- -u:解锁用户密码 == usermod -U
- -e:强制用户下次登录必须修改密码
- -f:强制操作
- -n MINDATS:最短使用期限
- -x MAXDAYS:最长使用期限
- -w WARNDAYS:提前多少天警告
- -i INACTIVEDAYS:非活动期限
- --stdin 从标准输入接受用户密码,如:echo "user1" | passwd --stdin user1 修改user1用户的密码为user1
chage 修改用户密码默认策略 /etc/login.defs
- -d LAST_DAY
- -E --expiredate EXPIRE_DATE
- -I --inactive INACTIVE
- -m --mindays MIN_DAYS
- -M --maxdays MAX_DAYS
- -W --warndays WARN_DAYS
- –l 显示密码策略
练习
1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
[root@laobai ~]#useradd -s /bin/csh -G bin,root gentoosss -c "hello" [root@laobai ~]#genent passwd gentoosss -bash: genent: command not found [root@laobai ~]#getent passwd gentooss [root@laobai ~]#id gentoosss uid=517(gentoosss) gid=518(gentoosss) groups=518(gentoosss),0(root),1(bin)
2、创建下面的用户、组和组成员关系
名字为webs 的组
用户nginx 使用webs 作为附属组
用户varnish,也使用webs 作为附属组
用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,mysql密码都是magedu
[root@laobai ~]#groupadd web [root@laobai ~]#useradd -G web aaaaa [root@laobai ~]#useradd -G web bbbbb [root@laobai ~]#useradd -s /sbin/nologin ccccc [root@laobai ~]#echo magedu |passwd --stdin aaaaa Changing password for user aaaaa. passwd: all authentication tokens updated successfully. [root@laobai ~]#echo magedu |passwd --stdin bbbbb Changing password for user bbbbb. passwd: all authentication tokens updated successfully. [root@laobai ~]#echo magedu |passwd --stdin ccccc Changing password for user ccccc. passwd: all authentication tokens updated successfully
批量创建用户,设置密码
[root@laobai date]#touch user.txt [root@laobai date]#cat user.txt app22:x:508:509::/home/app:/bin/bash bcd22:x:509:511::/etc/data/bcdhome:/bin/bash bcde22:x:510:512::/etc/data/bcdhome:/bin/bash bbb22:x:511:513::/etc/data/bbbhome:/bin/bash [root@laobai date]#newusers /date/user.txt [root@laobai date]#nano pass.txt [root@laobai date]#cat pass.txt app22:123456 pcd22:123456 bcde22:123456 bbb22:123456 [root@laobai date]#cat pass.txt | chpasswd
用户属性修改
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
[root@laobai ~]#usermod -aG bin haha [root@laobai ~]#id haha uid=513(haha) gid=514(haha) groups=514(haha),0(root),1(bin)
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字;
[root@laobai ~]#usermod -l didida didi
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限
查看用户相关的ID信息
id [OPTION]... [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
切换用户或以其他用户身份执行命令
su +用户名 切换用户(不完全切换)
su - +用户名 切换用户(完全切换)
换个身份执行命令,再退回到原账号
[wang@laobai ~]#su - root -c 'cat /etc/shadow'
设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码
常用选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f: 强制操作
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
echo "PASSWORD" | passwd --stdin USERNAME
创建组
groupadd [OPTION]... group_name
-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组
修改和删除组
组属性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID
组删除:groupdel
groupdel GROUP
更改组密码
组密码:gpasswd
gpasswd [OPTION] GROUP
-a user 将user添加至指定组中
[root@laobai ~]#gpasswd -a varn g1 Adding user varn to group g1 [root@laobai ~]#id varn uid=521(varn) gid=523(varn) groups=523(varn),521(webs),526(g1)
-d user 从指定组中移除用户user
[root@laobai ~]#gpasswd -d varn g1
Removing user varn from group g1
-A user1,user2,... 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
更改和查看组成员
groupmems [options] [action]
options:
-g, --group groupname 更改为指定组 (只有root)
Actions:
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
groups [OPTION].[USERNAME]... 查看用户所属组列表
将用户加入组
[root@laobai ~]#groupmems -a varn -g g1 [root@laobai ~]#id varn uid=521(varn) gid=523(varn) groups=523(varn),521(webs),526(g1)
将用户移除该组
[root@laobai ~]#groupmems -d varn -g g1 [root@laobai ~]#id varn uid=521(varn) gid=523(varn) groups=523(varn),521(webs)
文件权限总结
普通用户对于读写执行权限都是有严格控制的
对于读写权限,root不受控制,但对于执行权限,如果root没有执行权限,那就无法执行操作
读权限对于二进制文件来说并不是必不可少的
普通用户不能修改文件所有者
删除文件不是对文件的权限,而是对文件所在目录的写权限
对于目录而言,没有执行权限意味着不可以cd进去看文件的详细属性,也不能访问目录里的文件内容
文件能否被删除要看目录是否有执行权限
文件获取权限的顺序是先看所有者 再看组,最后看其他,如果所有者满足条件,直接继承所有者权限,即使权限最小也不例外。
修改文件的属主和属组
修改用户权限
shown + 所有者 +文件名
chgrp +所有者 +文件名
文件权限
文件的权限主要针对三类对象进行定义
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限
r: Readable
w: Writable
x: eXcutable
修改文件权限
chmod
方法1
chmod who opt per file
who:u 、g、o
otp:+ 、--、==
per:r、w、x、X
例 :chmod u+x,g-x,o= file
方法2
参考前文件,修改后面的文件
chmod --reference=f1 f2 f3
方法3
数字法
u g o
rwx rw- r--
111 110 100
r:4 w:2 x:1