账号和权限的管理
了解账号及权限、组之的关系;管理用户;管理组;设置权限
1.了解账号及权限,组之间的关系
1)用户:包含一个名和密码,人在计算机中的体现
2)组:用户集合,作用批量设置权限
3)权限:限制用户访问资源(如文件,app,进程,硬件等)
用户--权限限制--资源
组--批量限制--资源
文件系统提供权限,不同文件系统权限的实现方式不同。
head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名称:密码占位符:UID:GID:描述:家目录:登录shell
用户分为:root管理员,普通用户,程序用户
UID:root=0;程序用户=1-499;普通用户=500-65535;GID的号与UID相同
家目录:管理员/root,普通用户/home/用户名称
登录shell:正常使用的shell一般为/bin/bash;不能登录为/sbin/nologin(非交互式shell)
ls -lha /etc/passwd /etc/shadow /etc/login.defs /etc/default/useradd /etc/skel/ ##出来Linux中与用户有关的文件
[root@leslie ~]# ls -lha /etc/passwd /etc/shadow /etc/login.defs /etc/default/useradd /etc/skel/ -rw-------. 1 root root 119 11月 20 2009 /etc/default/useradd -rw-r--r--. 1 root root 1.8K 6月 28 2011 /etc/login.defs -rw-r--r--. 1 root root 949 3月 12 2016 /etc/passwd ----------. 1 root root 637 3月 12 2016 /etc/shadow /etc/skel/: 总用量 24K drwxr-xr-x. 3 root root 4.0K 3月 12 2016 . drwxr-xr-x. 81 root root 4.0K 8月 8 22:14 .. -rw-r--r--. 1 root root 18 7月 18 2013 .bash_logout -rw-r--r--. 1 root root 176 7月 18 2013 .bash_profile -rw-r--r--. 1 root root 124 7月 18 2013 .bashrc drwxr-xr-x. 2 root root 4.0K 11月 12 2010 .gnome2
案例:
useradd u01 ##创建账号u01
tail -1 /etc/passwd ##查看新用户的信息
tail -1 /etc/shadow ##查看信用户的密码信息
[root@leslie ~]# [root@leslie ~]# useradd u01 [root@leslie ~]# tail -1 /etc/passwd u01:x:500:500::/home/u01:/bin/bash [root@leslie ~]# tail -1 /etc/shadow u01:!!:17386:0:99999:7:::
shadow文件中第二个字段的四种形态:
!!:表示未初始化密码,用户不能登录,新建用户后的默认形态
加密字符串:修改过密码的形态
!!加密字符串:用户密码被锁定形态
空:用户密码清空的形态
echo 123123 | passwd --stdin u01 ##设置密码
passwd -l u01 ##锁定用户密码
passwd -u u01 ##解锁
passwd -d u01 ##清空用户密码,只能本地登录,不能远程登录
[root@leslie ~]# echo 123123 |passwd --stdin u01 更改用户 u01 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@leslie ~]# tail -1 /etc/shadow u01:$6$YWKTYEPa$NxElemztlCTfvRmpkxTdMcD/Ne6fdXNQ0slECqEO2cth/Ss8hnggSNHEWUdF6erX7TnyeTtOrIgjA8Og6j8qR1:17386:0:99999:7::: [root@leslie ~]# passwd -l u01 锁定用户 u01 的密码 。 passwd: 操作成功 [root@leslie ~]# tail -1 /etc/shadow u01:!!$6$YWKTYEPa$NxElemztlCTfvRmpkxTdMcD/Ne6fdXNQ0slECqEO2cth/Ss8hnggSNHEWUdF6erX7TnyeTtOrIgjA8Og6j8qR1:17386:0:99999:7::: [root@leslie ~]# passwd -u u01 解锁用户 u01 的密码 。 passwd: 操作成功 [root@leslie ~]# passwd -d u01 清除用户的密码 u01。 passwd: 操作成功 [root@leslie ~]# tail -1 /etc/shadow u01::17386:0:99999:7:::
4)组:批量管理用户
/etc/group ##组的账号文件
tail -1 /etc/group
u01:x:500:
组名:每一个用户都有一个基本组,如果把其他用户加入到组中,该组成为其他用户附加组
GID:组ID
组的成员:默认情况下组附加组没有成员,基本的成员为对应的用户。
总结:
新建用户和组:就是在相应文件中添加记录或者根据要求复制基本数据文件。
删除用户和组:与新建相反。
2.管理用户的账号:增useradd,删userdel,改usermod,passwd,用户的文件
1)增:useradd
语法:useradd [选项] 用户名称
[选项]:-d指定用户的家目录,-M不创建家目录,-g指定gid,-G附加组,-s指定登录shell
案例:
useradd --help ##查看帮助
useradd -d /opt/hehe -s /sbin/nologin -g 1000 -G 0 hehe ##创建hehe用户
tail -1 /etc/passwd ##验证
grep hehe /etc/group ##验证hehe是在root组中
groupadd -g 1000 hehe ##创建hehe用户时若没有1000GID的组报错,创建后再新建。
[root@leslie ~]# groupadd -g 1000 hehe [root@leslie ~]# tail -1 /etc/group hehe:x:1000: [root@leslie ~]# useradd -d /opt/hehe -s /sbin/nologin -g 1000 -G 0 hehe [root@leslie ~]# grep hehe /etc/group root:x:0:hehe hehe:x:1000:
2)改usermod,passwd
语法:usermod [选项] 用户
passwd 用户 ##修改密码
案例:
usermod -s /bin/bash hehe
usermod -l admin hehe ##修改hehe登录名称,root登录时不能修改
[root@leslie ~]# usermod -s /bin/bash hehe [root@leslie ~]# usermod -l admin hehe [root@leslie ~]# su - admin [admin@leslie ~]$ id uid=501(admin) gid=1000(hehe) 组=1000(hehe),0(root) [admin@leslie ~]$ whoami admin [admin@leslie ~]$ exit logout [root@leslie ~]# whoami root
usermod -g 0 admin ##修改基本组信息
passwd admin ##交互式中修改密码
[root@leslie ~]# usermod -g 0 admin [root@leslie ~]# passwd admin 更改用户 admin 的密码 。 新的 密码: 无效的密码: 它没有包含足够的不同字符 无效的密码: 过于简单 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。
echo 123123 |passwd --stdin admin ##非交互式修改密码
[root@leslie ~]# echo 123123 |passwd --stdin admin 更改用户 admin 的密码 。 passwd: 所有的身份验证令牌已经成功更新。
passwd -l admin ##锁定账号,与usermod -L功能一样
passwd -S admin ##查看用户状态
passwd -u admin ##解锁账号,与usermod -U功能一样
[root@leslie ~]# passwd -l admin 锁定用户 admin 的密码 。 passwd: 操作成功 [root@leslie ~]# passwd -S admin admin LK 2017-08-08 0 99999 7 -1 (密码已被锁定。) [root@leslie ~]# passwd -u admin 解锁用户 admin 的密码 。 passwd: 操作成功 [root@leslie ~]# passwd -S admin admin PS 2017-08-08 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
3)删userdel
语法:userdel -r 用户
案例:
userdel -r admin ##-r连带家目录等信息彻底删除
[root@leslie ~]# tail -1 /etc/passwd admin:x:501:501::/home/hehe:/bin/bash [root@leslie ~]# userdel -r admin [root@leslie ~]# tail -1 /etc/passwd u01:x:500:500::/home/u01:/bin/bash
3.管理组的账号:增groupadd,删groupdel,改gpasswd
1)增groupadd
语法:groupadd [选项] 组名称
案例:
groupadd -g 999 hh ##创建组hh,gid=999
grep ^hh /etc/group ##验证是否创建
grep root /etc/group ##查看root用户所在所有的组
grep ^root /etc/group ##查看root组信息
[root@leslie ~]# groupadd -g 999 hh [root@leslie ~]# grep hh /etc/group hh:x:999: [root@leslie ~]# grep ^hh /etc/group hh:x:999: [root@leslie ~]# grep root /etc/group root:x:0: [root@leslie ~]# grep ^root /etc/group root:x:0:
2)改gpasswd
语法:gpasswd [选项] 用户 组 ##将用户加入到组中
案例:
useradd u01 ##相同方法创建u02,u03,u04
[root@leslie ~]# useradd u01 useradd: user 'u01' already exists [root@leslie ~]# useradd u02 [root@leslie ~]# useradd u03 [root@leslie ~]# useradd u04 [root@leslie ~]# tail -5 /etc/passwd u01:x:500:500::/home/u01:/bin/bash admin:x:501:501::/home/hehe:/bin/bash u02:x:502:502::/home/u02:/bin/bash u03:x:503:503::/home/u03:/bin/bash u04:x:504:504::/home/u04:/bin/bash
groupadd -g 1001 g01 ##创建g01组
groupadd -g 1002 g02
[root@leslie ~]# groupadd -g 1001 g01 [root@leslie ~]# groupadd -g 1002 g02 [root@leslie ~]# tail -2 /etc/group g01:x:1001: g02:x:1002:
gpasswd -a u01 g01 ##将u01添加到g01组中,相同方法添加u02到g01中
grep ^g01 /etc/group ##验证u01,u02已加入g01组
gpasswd -M u03,u04 g02 ##将g02组的成员设置为u03,u04
grep ^g02 /etc/group ##验证
gpasswd -M u03,u04 g01 ##覆盖原有的成员
grep ^g01 /etc/group ##验证
gpasswd -d u03 g01 ##将u03移除g01
grep ^g01 /etc/group ##验证
[root@leslie ~]# gpasswd -a u01 g01 Adding user u01 to group g01 [root@leslie ~]# grep ^g01 /etc/group g01:x:1001:u01 [root@leslie ~]# gpasswd -M u03,u04 g02 [root@leslie ~]# grep ^g01 /etc/group g01:x:1001:u01 [root@leslie ~]# grep ^g02 /etc/group g02:x:1002:u03,u04 [root@leslie ~]# gpasswd -M u03,u04 g01 [root@leslie ~]# grep ^g01 /etc/group g01:x:1001:u03,u04 [root@leslie ~]# gpasswd -d u03 g01 Removing user u03 from group g01 [root@leslie ~]# grep ^g01 /etc/group g01:x:1001:u04 [root@leslie ~]# grep g01 /etc/group
3)删groupdel
语法:groupdel 组名
案例:
groupdel g01 ##删除g01组
[root@leslie ~]# groupdel g01
总结:用户组的新建和删除都是在操作文件,用户登录后有相应特殊配置一般存放在家目录的配置文件中。
常见的配置存放文件有:
/home/用户名称/.bashrc(bash的配置文件,每一次登录或者执行bash时生效);.bash_profile(用户独立配置文件,一般设置环境变量等在用户登录生效);
.bash_logout(用户退出时的配置文件,一般可以将一些操作写入在退出时执行)
/etc/profile 所有用户的全局配置文件,
home下配置在创建用户时从/etc/skel/.*复制的。
[root@leslie ~]# su - u01 [u01@leslie ~]$ ls -a . .. .bash_logout .bash_profile .bashrc .gnome2 [u01@leslie ~]$ ls /etc/skel/. ./ ../ .bash_logout .bash_profile .bashrc .gnome2/
4.设置权限:查看、改
1)查看权限
用户、组---访问控制---文件或目录
控制有:读(r)、写(w)、执行(x),目录和文件的控制有区别详见p72-4-1表。
注意:写的不能轻易给。
ls -l /etc/hosts ##查看文件的权限列表
ls -ld /home/u01 ##查看目录的权限列表
[root@leslie ~]# ls -l /etc/hosts -rw-r--r--. 1 root root 158 1月 12 2010 /etc/hosts [root@leslie ~]# ls -ld /home/u01 drwx------ 3 u01 u01 4096 8月 8 23:02 /home/u01
权限列表 inode数量 用户 组 日期 文件或目录名称
权限列表:
第一个表示文件的类型,如d目录,-(f)普通文件,L链接,b块设备,c字符设备,p管道文件,s套接字文件
2-4表示用户权限,如rwx,“-”表示没有权限
5-7表示组的权限,同上
8-10表除用户和组外的其他人的权限,一般为“r--”表只读
2)改:chmod改权限列表,chown改用户和组
语法:
chmod [ugoa][+-=][rwx] 文件或目录
chmod 数字 文件或目录
chmod -R 权限 文件或者目录 ##表示递归执行
案例:
mkdir /opt/test
touch /opt/test/a
ls -ld /opt/test
chmod u-w /opt/test ##去除用户写的权限
chmod u+w,g+w,o= /opt/test ##设置用户和组加写,其他人没有权限
chmod 775 /opt/test ##设置用户和组的权限为rwx,其他人权限为rx;r=4,w=2,x=1,用户权限=4+2+1=rwx
chmod -R 755 /opt/test ##递归设置权限,即目录下的所有内容都使用此权限
[root@leslie ~]# mkdir /opt/test [root@leslie ~]# touch /opt/test/a [root@leslie ~]# ls -ld /opt/test/ drwxr-xr-x 2 root root 4096 8月 8 23:04 /opt/test/ [root@leslie ~]# chmod u-w /opt/test/ [root@leslie ~]# ls -ld /opt/test/ dr-xr-xr-x 2 root root 4096 8月 8 23:04 /opt/test/ [root@leslie ~]# chmod u+w,g+w,o= /opt/test/ [root@leslie ~]# ls -ld /opt/test/ drwxrwx--- 2 root root 4096 8月 8 23:04 /opt/test/ [root@leslie ~]# chmod 755 /opt/test/ [root@leslie ~]# ls -ld /opt/test/ drwxr-xr-x 2 root root 4096 8月 8 23:04 /opt/test/ [root@leslie ~]# chmod -R 755 /opt/test/ [root@leslie ~]# ls -l /opt/test/ 总用量 0 -rwxr-xr-x 1 root root 0 8月 8 23:04 a
useradd lx
echo 123123 |passwd --stdin lx
分析:lx目前属于其他人,有rx的权限
chmod o= /opt/test
su - lx ##切换账号
cd /opt/test ##报错权限拒绝
exit
chmod o+x /opt/test
su - lx
cd /opt/test ##进入目录成功,结论:要进入目录必须给x的权限
ls ##权限拒绝
exit
chmod o+r /opt/test
su - lx
cd /opt/test
ls ##查看到a文件,结论:要查看目录中内容必须给r的权限
exit
chmod o+w /opt/test
ls -l /opt/test ##目录的权限为o=rwx,a文件的权限为o=r
su - lx
cd /opt/test
[root@leslie ~]# useradd lx [root@leslie ~]# echo 123123|passwd --stdin lx 更改用户 lx 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@leslie ~]# chmod o= /opt/test/ [root@leslie ~]# ls -ld /opt/test/ drwxr-x--- 2 root root 4096 8月 8 23:04 /opt/test/ [root@leslie ~]# su - lx [lx@leslie ~]$ cd /opt/test/ -bash: cd: /opt/test/: 权限不够 [lx@leslie ~]$ exit logout [root@leslie ~]# chmod +x /opt/test/ [root@leslie ~]# su - lx [lx@leslie ~]$ cd /opt/test/ [lx@leslie test]$ ls ls: 无法打开目录.: 权限不够 [lx@leslie test]$ exit logout [root@leslie ~]# chmod o+r /opt/test/ [root@leslie ~]# su - lx [lx@leslie ~]$ cd /opt/test/ [lx@leslie test]$ ls a [lx@leslie test]$ exit logout [root@leslie ~]# chmod o+w /opt/test/ [root@leslie ~]# ls -l /opt/test 总用量 0 -rwxr-xr-x 1 root root 0 8月 8 23:04 a [root@leslie ~]# ls -ld /opt/test drwxr-xrwx 2 root root 4096 8月 8 23:04 /opt/test [root@leslie ~]# su - lx [lx@leslie ~]$ cd /opt/test/ [lx@leslie test]$ rm -rf a
rm -rf a ##删除a文件,结论:只要对目录有写权限,目录写内容可以被删除、修改、移动,不管子文件有无权限,因此w权限一般不给其他人,慎重给u,g。
3)修改用户列表:chown
语法:
chown 用户:组 文件或目录 ##同时修改资源的用户和组
chown 用户 文件或目录 ##只修改用户
chown :组 文件或目录 ##只修改组
使用-R可以递归设置。
案例:
chown lx /opt/test ##修改用户为lx
ls -ld /opt/test
chown :g01 /opt/test ##修改组为g01
ls -ld /opt/test ##验证
[root@leslie ~]# ls -ld /opt/test/ drwxr-xrwx 2 root root 4096 8月 8 23:12 /opt/test/ [root@leslie ~]# chown lx /opt/test [root@leslie ~]# ls -ld /opt/test/ drwxr-xrwx 2 lx root 4096 8月 8 23:12 /opt/test/ [root@leslie ~]# chown :g02 /opt/test [root@leslie ~]# ls -ld /opt/test/ drwxr-xrwx 2 lx g02 4096 8月 8 23:12 /opt/test/
chown u01:g02 /opt/test ##同时修改用户和组
chown -R u01:g02 /opt/test ##递归设置权限
[root@leslie ~]# touch /opt/test/a.txt [root@leslie ~]# chown u01:g02 /opt/test [root@leslie ~]# ls -ld /opt/test/ drwxr-xrwx 2 u01 g02 4096 8月 8 23:18 /opt/test/ [root@leslie ~]# ls -l /opt/test 总用量 0 -rw-r--r-- 1 root root 0 8月 8 23:18 a.txt [root@leslie ~]# chown -R u01:g02 /opt/test/ [root@leslie ~]# ls -l /opt/test 总用量 0 -rw-r--r-- 1 u01 g02 0 8月 8 23:18 a.txt