账号和权限的管理

了解账号及权限、组之的关系;管理用户;管理组;设置权限

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