/etc/passwd文件
[root@tzPC ~]# head -2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
root用户的UID为0
所有运行在后台的服务都有一个系统用户,系统用户是系统上运行各种服务进程访问资源用的特殊账户。
Linux系统预留了500以下的UID值
各字段意思如下
- 登陆用户名
- 用户密码
- 用户账户UID
- 用户账户组ID
- 用户账户描述信息
- 用户HOME目录位置
- 用户的默认shell
/etc/shadow文件
[root@tzPC ~]# cat /etc/shadow|grep tz tz:$6$JRBWbFqS$oy:18461:0:99999:7:::
只有root账户或者特定程序(如登陆程序)才能访问
[root@tzPC ~]# ll /etc/shadow ----------. 1 root root 2580 Jul 18 21:50 /etc/shadow
9个字段意思如下
- 登陆用户名
- 加密后的密码
- 从上次修改密码后过去的天数(自1970年1月1日开始算)
- 多少天后更改密码
- 多少天后必须更改密码
- 密码过期前提前多少天提醒用户更改密码
- 密码过期后多少天禁用用户账户
- 用户账户被禁用的日期(自1970年1月1日到当天)
- 预留字段给将来使用
添加用户
useradd命令
命令默认在/usr/sbin/useradd,如果不能用需要查看是否安装以及加入到PATH变量中
不加参数则使用默认值创建用户
默认值配置文件在/etc/default/useradd中
可使用-D参数查看
[root@tzPC ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
各字段含义如下
- 新用户会被添加到GID为100的公共组
- HOME目录将会位于/home/loginname
- 新用户密码过期后不会被禁用
- 新用户账号未设置过期日期
- 新用户的默认shell为bash shell
- 系统会将/etc/skel目录下的内容复制到用户的HOME目录下
- 系统为新用户在mail目录下创建一个用于接收邮件的文件
[root@tzPC ~]# ls /var/spool/mail/ tz tz1 tz10 tz2 tz3 tz4 tz5 tz6 tz7 tz8 tz9
注意:useradd默认会默认创建用户家目录,但userdel不会默认删除用户家目录,需要加-r参数
-D参数可修改系统默认设置
参数 | 描述 |
-b | 修改默认Home目录位置 |
-e | 更改新用户过期时间 |
-f | 更改新用户密码过期到被禁用的天数 |
-g | 更改默认组名或GID |
-s | 更改默认的登陆shell |
如修改默认shell为tsch
[root@tzPC ~]# useradd -D -s /bin/tsch
删除用户
userdel
-r 同时删除用户家目录,默认不加此参数不删除用户家目录,使用前需要确认该用户家目录是否含有重要文件!
修改用户
usermod
能修改/etc/passwd文件大部分字段
常用参数
参数 | 描述 |
-c | 修改备注字段 |
-e | 修改过期日期 |
-g | 修改默认登陆组 |
-l | 修改用户登陆名 |
-L | 锁定用户使其无法登陆(常用) |
-p | 修改用户密码 |
-U | 解锁用户(常用) |
更改密码
passwd
passwd -e能下次登陆时强制修改密码
chpasswd
用于给大量用户修改密码使用
自动读取一个文件中的登陆名和密码对(如username:passwd)
[root@tzPC ~]# echo tz:321|chpasswd [root@tzPC ~]# chpasswd < users.txt
更改用户登陆shell
chsh
[root@tzPC ~]# chsh -s /bin/sh tz Changing shell for tz. Shell changed.
更改用户备注
chfn
更改/etc/passwd文件的备注字段
[root@tzPC ~]# chfn tz Changing finger information for tz. Name []: tz Office []: zjtd Office Phone []: 8888 Home Phone []: 9999 Finger information changed.
更改后如下
[root@tzPC ~]# cat /etc/passwd | grep tz tz:x:1000:1000:tz,zjtd,8888,9999:/home/tz:/bin/sh
查看用户信息
finger
[root@tzPC ~]# finger tz Login: tz Name: tz Directory: /home/tz Shell: /bin/sh Office: zjtd, x8888 Home Phone: x9999 On since Thu Aug 6 12:02 (CST) on pts/4 from 192.168.149.1 3 hours 28 minutes idle No mail. No Plan.
管理账户有效期
chage
参数 | 描述 |
-d | 设置上次修改密码到现在的天数 |
-E | 设置密码过期的日期 |
-I | 设置密码过期到锁定账户的天数(常用) |
-m | 设置修改密码之间最少要多少天 |
-W | 设置密码过期前多久出现提示信息 |
日期格式可以为
- YYYY-MM-DD
- 从1970年1月1日到该日期天数的数值
Linux组
组权限允许多个用户对系统中的对象(文件或目录等)共享一组共用的权限
/etc/group文件
系统账户用的组会分配低于500的GID值,用户组从500开始分配
[root@tzPC ~]# head -2 /etc/group root:x:0: bin:x:1:
4个字段解释如下
- 组名
- 组密码
- GID
- 属于该组的用户列表
组密码允许非组内成员通过它成为该组成员
创建组
groupadd
[root@tzPC ~]# groupadd shared [root@tzPC ~]# tail -1 /etc/group shared:x:1017:
添加用户到组
需使用usermod -G参数,将该组成为此用户的属组
[root@tzPC ~]# usermod -G shared tz [root@tzPC ~]# usermod -G shared tz1 [root@tzPC ~]# tail -1 /etc/group shared:x:1017:tz,tz1
usermod -g参数将修改默认组
[root@tzPC ~]# usermod -g shared tz [root@tzPC ~]# cat /etc/passwd | grep tz tz:x:1000:1017:tz,zjtd,8888,9999:/home/tz:/bin/sh [root@tzPC ~]# cat /etc/group | grep 1017 shared:x:1017:tz,tz1
修改组
groupmod -g修改已有组的GID
groupmod -n修改已有组的组名
将shared组名更改为sharing
[root@tzPC ~]# groupmod -n sharing shared [root@tzPC ~]# tail -1 /etc/group sharing:x:1017:tz,tz1
文件权限符
[root@tzPC ~]# ls -l total 40 -rw-r--r--. 1 root root 10240 Aug 5 18:04 My.tar -rw-r--r--. 1 root root 10240 Aug 5 18:04 Rich.tar
-代表文件
d代表目录
l代表链接
c代表字符型设备
b代表块设备
n代表网络设备
umask显示默认权限值
[root@tzPC ~]# umask 0022
第一位代表粘着位(sticky bit)
一个文件默认的读写权限是从全权限值减去umask值
文件全权限值为666,减去umask值022,结果为644,所以创建一个文件的权限为644
[root@tzPC ~]# touch test [root@tzPC ~]# ll test -rw-r--r--. 1 root root 0 Aug 6 16:09 test
目录的全权限值为777
修改umask值
[root@tzPC ~]# umask 026
改变权限
chmod
[root@tzPC ~]# chmod 760 test
另外写法
[root@tzPC ~]# chmod o+r test [root@tzPC ~]# chmod u-w test [root@tzPC ~]# chmod g+rw test [root@tzPC ~]# chmod a+rwx test
-R 递归目录及其文件
[root@tzPC ~]# chmod -R a=rwx test1 [root@tzPC ~]# ll | grep test1 drwxrwxrwx. 2 root root 18 Aug 6 16:15 test1 [root@tzPC ~]# ll test1/ total 0 -rwxrwxrwx. 1 root root 0 Aug 6 16:15 test
更改属主跟属组
Linux共享文件的方式就是创建组
chown
[root@tzPC ~]# chown tz test [root@tzPC ~]# ll | grep test -rwxrwxrwx. 1 tz root 0 Aug 6 16:09 test
同时更改属主跟属组
[root@tzPC ~]# chown tz.tz test [root@tzPC ~]# ll | grep test -rwxrwxrwx. 1 tz tz 0 Aug 6 16:09 test
只更改属组
[root@tzPC ~]# chown .tz test
将属组更改为属主的默认属组
[root@tzPC ~]# chown tz. test [root@tzPC ~]# ll | grep test -rwxrwxrwx. 1 tz sharing 0 Aug 6 16:09 test
可以看到属组不写,会更改为属主的默认属组
-R可递归更改目录及文件所属关系
-h可以改变该文件所有符号链接文件的所属关系
chgrp
可以更改文件或目录的属组,前提是用户必须是这个文件的属主,还得是新组的成员,root除外。
[root@tzPC ~]# chgrp root test [root@tzPC ~]# ll | grep test -rwxrwxrwx. 1 tz root 0 Aug 6 16:09 test
SUID跟SGID
SUID
当文件被用户使用时,程序会以文件属主的权限运行
[root@tzPC tz]#chmod u+s test 设置SUID位 [root@tzPC ~]#chmod 4744 /home/tz/test [root@tzPC tz]# ll -rwsr--r--. 1 root root 0 Aug 6 17:10 test [root@tzPC tz]#chmod u-s test 去掉SUID设置
SGID
对文件来说,程序会以文件属组的权限运行,对目录来说,目录中创建的新文件会以目录的默认属组作为属组。
[root@tzPC tz]# chmod g+s testdir [root@tzPC tz]# ll | grep testdir drwxr-sr-x. 2 root tz 16 Aug 6 17:44 testdir [root@tzPC testdir]# ll -rw-r--r--. 1 root tz 0 Aug 6 17:44 xx
锁定文件或文件夹
chattr
+i :给文件或目录加锁,使文件或者文件夹不可删除、移动、修改或者追加内容;
+a :使文件或者文件夹不可删除、移动、修改的操作,但可以追加内容的操作;
+i,+a 可以复制,但复制后的新文件权限变了默认权限;
[root@tzPC tz]# chattr +i xx [root@tzPC tz]# lsattr ----i----------- ./xx [root@tzPC tz]# chattr -i xx
查看隐藏权限
lsattr
-a :查看目录里面包含的子目录和(包括隐藏)文件的隐藏权限;
-R:查看目录里面包含的子目录和文件的隐藏权限(并可快捷查看子目录下的隐藏权限);
-d : 查看当前目录的隐藏权限