站长资讯网
最全最丰富的资讯网站

linux 文件与用户管理

1、Linux上的文件管理类命令

(1)ls 显示文件

ls [OPTION]… [FILE]…

-a 显示所有文件

-A:显示除.和..之外的所有文件

-l:显示文件的详细属性信息 ,也可以用ll来表示

-h:对文件大小进行单位换算,可能影响精度

-d:查看目录本身而非其内部的文件

–S: 按从大到小排序

-r:逆序显示文件

-R:递归显示文件

-X 按类别显示文件

示例:ll -ah /–详细显示根目录下的所有文件(包括隐藏文件)

ll -dh /etc–详细显示/etc目录本身

ll -hv /–倒序显示/目录下所有文件(包括隐藏文件)

ls -R /etc –递归显示/etc下所有文件

l. 只显示隐藏文件

ls -d */ 只显示当前目录所有子目录

ls */ 显示当前文件目录及目录下的文件

(2)mkdir:创建目录

mkdir [OPTION]… DIRECTORY…

-p:自动按需创建父目录

-m:创建目录时给定权限

示例:mkdir -p /data/A/B –在/data目录下递归创建date/A/B三个目录

(3) rmdir:删除目录只能删除空目录

rmdir [OPTION]… DIRECTORY…

-p:删除目录后如果其父目录为空,则一并删除

示例:rmdir -p /data/test/A –删除A目录后,test目录为空,一并删除

(4)cd:切换目录

示例:cd ..:切换到上级目录

cd ~:切换回自己的家目录

cd -:在上一次目录与当前目录直接来回切换

(5)pwd:显示当前目录

(6)cp:复制

单源复制:cp [OPTION]… [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)

多源复制:cp [OPTION]… SOURCE… DIRECTORY(DEST必须为directory)

-i:交互式复制,即覆盖前提醒用户确认(默认)

-a:保留原文件属性的前提下复制文件,支持目录复制,备份常用选项

-f:强制覆盖目标文件

-r,-R:递归复制目录

–backup=numbered 选项会创建一个在文件名末尾用数字标记(~)的备份文件

-u 只覆盖最新文件

示例:cp -f /data/[1-3].txt /data/test test必须为目录,把三个文件一起复制到test中

cp -a /data /practice 把data目录及目录下的内容一起复制到practice中

(7)mv:剪切

单源复制:mv [OPTION]… [-T] SOURCE DEST(如果DEST不存在则创建,存在则覆盖)

多源复制:mv [OPTION]… SOURCE… DIRECTORY(DEST必须为directory)

-i:交互式复制,即覆盖前提醒用户确认

-f:强制覆盖目标文件

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

-t : 即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

示例:mv -i /data/[1-3].txt /practice 把/data目录下三个txt文件剪切到/practice下

alias rm='mv -t /data' 把rm 替代为mv 把要删除的文件移动到/data 目录下

(8)rm:删除

rm [OPTION]… FILE…

-i:交互式复制,即覆盖前提醒用户确认

-f:强制覆盖目标文件

-r,-R:递归处理,将制定目录下的所有文件包括目录一并删除

示例:rm -rf /practice 递归删除/practice目录

(9)cat:正向查看文本内容

cat [OPTION]… [FILE]…

-n:给显示的文本行编号

-E:显示行结束符号$

示例:cat -n /etc/fstab 查看/etc/fatab内容并显示行号

(10)tac:倒叙查看文本内容

tac [OPTION]… [FILE]…

示例:tac /etc/passwd 倒叙查看文本内容

(11)head:显示文本内容,默认显示头10行

head [OPTION]… [FILE]…

-n #:显示文本头#行内容

示例:head -5 /etc/passwd 显示/etc/passwd文件头5行内容

(12)tail:显示文本内容,默认显示后10行

tail [OPTION]… [FILE]…

-n #:显示文本后#行内容

-f:查看文件尾部内容结束后不退出,跟随显示新增的行

示例:tail -8 /etc/passwd 显示/etc/passwd文件后8行内容

(13)more:分屏显示文本内容,每次显示一屏显示完停止

more [options] file […]

Space键:显示文本下一屏内容

Enter键:只显示文本下一行内容

b键:显示文本上一屏内容

q键:退出

(14)less:分屏显示文本内容,不主动退出

less [options] file […]

Space键:显示文本下一屏内容

Enter键:只显示文本下一行内容

b键:显示文本上一屏内容

q键:退出

(15) ln 链接文件

ln [OPTION]… [-T] TARGET LINK_NAME (1st form)

ln [OPTION]… TARGET (2nd form)

ln [OPTION]… TARGET… DIRECTORY (3rd form)

ln [OPTION]… -t DIRECTORY TARGET… (4th form)

-b  删除,覆盖以前建立的链接

-d  创建指向目录的硬链接(只适用于超级用户)

-f  强制执行,操作前不询问

-i  交互模式,文件存在则提示用户是否覆盖

-n  把符号链接视为一般目录

-s  软链接(符号链接)

-v  显示详细的处理过程

示例:ln -s a.txt a 为a.txt创建软链接

ln a.txt a 为a.txt创建硬链接

1)软连接和Windows系统中的快捷方式有点类似

2)硬链接,相当于多了一个文件名指向同一块内存空间,目录无法创建硬链接,不可以跨文件系统创建

(16) file 检查文件的类型

file [options] …

-f filelist 列出文件filelist中文件名的文件类型 (把需要判断的文件名写入一个文件中批量判断)

-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符(输出结果修改)

2、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b

执行命令mkdir -pv /tmp/a{1/{a,b},2}

mkdir: created directory ‘/tmp/a1’

mkdir: created directory ‘/tmp/a1/a’

mkdir: created directory ‘/tmp/a1/b’

mkdir: created directory ‘/tmp/a2’

执行命令tree /tmp/

/tmp/

├── a1

│ ├── a

│ └── b

└── a2

在/tmp目录下创建目录:x_y, x_z, q_y, q_z

执行命令mkdir -pv {x,q}_{y,z}

mkdir: created directory ‘x_y’

mkdir: created directory ‘x_z’

mkdir: created directory ‘q_y’

mkdir: created directory ‘q_z’

执行tree查看效果

.

├── q_y

├── q_z

├── x_y

└── x_z

3、文件的元数据信息包括

Size 文件大小(字节)

Blocks 文件使用的数据块总数

IO Block 数据块的大小

regular file:文件类型(常规文件)

Device 设备编号

Inode 文件所在的Inode

Links 硬链接次数

Access 权限 Uid 属主id/用户 Gid 属组id/组名

Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间

Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。

Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

查看文件的元数据信息用stat命令

[root@centos7 ~]#stat hello.sh

File: ‘hello.sh’

Size: 32 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 100663387 Links: 1

Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:admin_home_t:s0

Access: 2018-10-31 20:37:17.757059440 +0800

Modify: 2018-10-28 21:25:08.485016670 +0800

Change: 2018-10-28 21:26:26.959023084 +0800

Birth: –

修改文件的时间戳信息

touch [OPTION]…FILE…

-a:only atime

-m:only mtime

-t:使用指定的日期时间,而非现在的时间;[[CC]YY]MMDDhhmm[.ss]

4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

执行命令 touch /tmp/tfile-`date "+%Y-%m-%d-%H-%M-%S"`

ll /tmp/

total 0

-rw-r–r–. 1 root root 0 Nov 22 19:36 tfile-2018-11-22-19-36-45

5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

执行命令mkdir /tmp/mytest1;cp -a /etc/p*[^0-9] /tmp/mytest1

结果如下

ls /tmp/mytest1/

pam.d pbm2ppa.conf plymouth popt.d prelink.conf.d profile.d purple

passwd pinforc pm postfix printcap protocols python

passwd- pki pnm2ppa.conf ppp profile pulse

6、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack

执行命令groupadd jack;useradd -u 5001 -d /tmp/tom -s /bin/zsh -U -G jack tom

结果如下tom:x:5001:5001::/tmp/tom:/bin/zsh

uid=5001(tom) gid=5001(tom) groups=5001(tom),1003(jack)

ll -a /tmp/tom

total 12

drwx——. 3 tom tom 78 Nov 22 19:55 .

drwxrwxrwt. 10 root root 217 Nov 22 19:55 ..

-rw-r–r–. 1 tom tom 18 Aug 3 2017 .bash_logout

-rw-r–r–. 1 tom tom 193 Aug 3 2017 .bash_profile

-rw-r–r–. 1 tom tom 231 Aug 3 2017 .bashrc

drwxr-xr-x. 4 tom tom 39 Oct 17 20:27 .mozilla

7、常用的用户以及文件管理命令

(1)查看当前用户:whoami 和who 或者 who am i

(2)useradd :添加用户命令

useradd [options] LOGIN

-u UID -o 配合-u 选项,不检查UID的唯一性

-g GID:指明用户所属基本组,可为组名,也可以GID

-c "COMMENT":用户的注释信息

-d HOME_DIR: 以指定的路径(不存在)为家目录

-s SHELL: 指明用户的默认shell程序 可用列表在/etc/shells文件中

-G GROUP1[,GROUP2,…]:为用户指明附加组,组须事先存在 -N 不创建私用组做主组,使用users组做主组

-r: 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000

-m 创建家目录,用于系统用户

-M 不创建家目录,用于非系统用户

示例:useradd -s /bin/sh -g group –G adm,root abc 增加用户abc,并指定它的shell ,主组和附加组

useadd 默认配置文件/etc/default/useradd

/etc/login.defs这个文件就是用来设置用户创建时默认属性的文件

(3)usermod:修改用户信息命令

usermod [options] LOGIN

-u UID: 新UID

-g GID: 新主组 -G GROUP1[,GROUP2,…[,GROUPN]]]:新附加组,原来的 附加组将会被覆盖;若保留原有,则要同时使用-a选项

-s SHELL:新的默认SHELL -c 'COMMENT':新的注释信息

-d HOME: 新家目录不会自动创建;若要创建新家目录并移 动原家数据,同时使用-m选项

-l login_name: 新的名字;

-L: lock指定用户,在/etc/shadow 密码栏的增加 !

-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

-e YYYY-MM-DD: 指明用户账号过期日期

-f INACTIVE: 设定非活动期限

示例:usermod -s /bin/ksh -d /home/z –g developer sam 修改sam用户的shell和目录以及主组

(4)userdel 删除用户

userdel [OPTION]… login

-r: 删除用户家目录

userdel -r sam 删除sam用户并清空相关目录

(5)su 切换用户

su [options…] [-] [user [args…]]

su – 完全切换

(6)passwd 更改密码

passwd [OPTIONS] UserName

-l:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-n mindays: 指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-i inactivedays:非活动期限

–stdin:从标准输入接收用户密码

示例:echo magedu | passwd –stdin varnishs 非交互式更改密码

(7)chage 修改用户密码策略

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 下一次登录强制重设密码

(8)groupadd 增加组

groupadd [OPTION]… group_name

-g GID: 指明GID号;

-r: 创建系统组

(9)groupmod 修改组信息

groupmod [OPTION]… group

-n group_name 新名字

-g 修改gid

示例:groupmod -n linux linux2

(10)groupdel 删除组

groupdel GROUP

(11)chown 修改文件所属组

chown [OPTION]… [OWNER][:[GROUP]] FILE…

-R: 递归

示例:chown -R myuser:mygroup /test

chown myuser test

chown :mygroup test 修改test所属组

(12)chmod 修改文件权限 (rwxX)(421)

chmod [OPTION]… OCTAL-MODE FILE…

-R: 递归修改权限

对于文件来说rwx分别是可读可写可执行权限

对于目录目录r权限可以看到文件列表~ w可以删文件 x可以进入目录和文件具体属性 无法操作该目录 目录基本权限

+X:只给目录x权限,不给文件x权限,或者给有执行权限的文件 加执行权限 如-rwxrw-rw- 变成 -rwxrwxrwx

root不受rw限制受x权限限制

示例:chmod u+wx,g-r,o=rx file

chmod -R g+rwX /testdir 给目录的所属组递归增加rwx权限,该目录下文件所属组只增加rw权限

chmod 600 file

(13)SUID, SGID, Sticky 特殊权限

suid u+s 4777 作用于二进制程序,权限与程序所有者有关

guid g+s 2777 作用于二进制程序,权限与程序所属组有关;作用于文件夹中,文件夹里新建文件继承目录所属组

stick o+t 1777 作用目录,此目录的文件只能被所有者删除

chattr +i +a(只能追加) 锁定文件 +A 不能修改atime(访问时间) lsattr file查看特殊权限

(14)umask 系统默认生成权限

新建FILE权限: 666-umask 如果所得结果某位存在执行(奇数)权限,则将其权限+1 (结果偶数不变,奇数加一)

新建DIR权限: 777-umask

(15)ACL高级权限

centos6版本需要手动加acl权限功能

tune2fs –o acl /dev/sdb1

mount –o acl /dev/sdb1 /mnt/test

ACL生效顺序:所有者,自定义用户,自定义组,其他人

应用ACL后 文件本身组权限变成acl中的mask,而非传统的组权限

常用命令

getfacl: 获取文件或目录的ACL设置信息

getfacl [-bkndRLP] { -m|-M|-x|-X … } file …

-a , –access:显示文件或目录的访问控制列表

-d , –default:显示文件或目录的默认(缺省)的访问控制列表

-R , –recursive:操作递归到子目录

setfacl: 设置文件或目录的ACL设置信息

setfacl [-bkndRLP] { -m|-M|-x|-X … } file …

-m, –modify=acl:修改文件或目录的扩展ACL设置信息

-x, –remove=acl:从文件或目录删除一个扩展的ACL设置信息

-b, –remove-all:删除所有的扩展的ACL设置信息

-k, –remove-default:删除默认的acl设置信息

-n, –no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定

-d, –default:设置默认的ACL设置信息(只对目录有效)

-R, –recursive:操作递归到所有子目录和 文件

示例:getfacl file

setfacl -m u:wang:rwx txt

setfacl -Rm g:sales:rwX directory

setfacl -m d:u:wang:rx /data 设定该目录的默认权限,只对目录有效 或者setfacl -dmu:wang:rx /data

setfacl -x u:wang file 移除设置好的wang账号对该文件权限

备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 参数。

但是tar等常见的备份工具是不会保留目录 和文件的ACL信息

getfacl -R /tmp/dir1 > acl.txt 把目录的acl保存在acl.txt文件中

setfacl -R -b /tmp/dir1 删除该目录所有acl权限

setfacl -R –set-file=acl.txt /tmp/dir1 恢复权限到目录中

setfacl –restore acl.txt

getfacl -R /tmp/dir1 查看目录acl权限

(16)pwck grpck 检查/etc/passwd 和 /etc/group 文件正确性

用文件批量创建用户密码: newusers chpasswd

创建user文件,写入用户列表,格式与/etc/passwd 一致

如:

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

tomcat:x:1001:1002::/home/tomcat:/bin/bash

tom:x:5001:5001::/tmp/tom:/bin/zsh

然后newusers txt 创建这些用户

在创建password文件,格式

用户:密码

tomcat:123456

tom:123456

然后cat password |chpasswd 自动添加密码

newgrp 切换当前用户主组

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号