前面已经介绍过,useradd是新增用户,但是在创建一个新用户之后,会在下面文件中自动生成内容:
/etc/passwd:生成用户信息
/etc/shadow:生成密码信息
/etc/group:生成用户组信息
/etc/gshadow:生成用户组密码信息
/home/tom:创建家目录
/var/spool/mail/tom:创建用户邮箱目录
上面出现了很多默认值,用户默认值文件如下:
file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。
file(选项)(参数)
-b:列出辨识结果时,不显示文件名称;
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号连接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
7.-z:尝试去解读压缩文件的内容。
文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
stat命令
stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。
stat(选项)(参数)
选择参数:
-L:支持符号链接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
反斜杠“\”
经常看到linux软件的作者在介绍安装软件时,在命令前面加一个反斜杠,不解其意,后来查阅资料才知道,这是为了取消别名的调用,使用原命令。
alias是shell的内置命令,可以用来设置命令的别名,如使用alias ls='ls --color=auto'设置使用ls时以彩色输出
在命令前加上反斜杠,可以临时取消使用别名
例如:\ls
则直接调用ls的原始命令,而不会使用alias设置的带有color选项的命令
同样的事情,常常出现在安装软件的介绍上,作者为了保证你使用的命令和他使用的一致,而不是各种系统别名,经常会在命令前面加一个反斜杠来去除别名。
例如:Perlbrew.pl网站,在介绍安装perlbrew时候,使用了下面命令:
这就是为了保证你使用的wget和作者使用的wget一致,而不是其他的命令的别名。
比如cp复制命令,一般情况下我们进行相同文件复制都会进行询问是否覆盖,而\cp是最原始的复制命令,而不会进行询问。
install命令
install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。
在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。
选择参数:
install -m 666 -o xxx -g xxx /etc/fstab fstab.test
支持多个,类似mkdir -p
支持递归。例如:install -d a/b/c e/f
结果和mkdir -p a/b/c e/f
一样。
复制SOURCE文件(测试不能是目录)到DEST file(文件):
选项-D:
install -D x a/b/c
效果类似:mkdir -p a/b && cp x a/b/c
复制多个SOURCE文件到目的目录:
setfacl/getfacl命令
setfacl,命令名,设置文件访问控制列表,即ACL规则。而Acl(Access Control List)就是访问控制列表
setfacl常见参数:
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... }
file
...
-m, --modify=acl 更改文件的访问控制列表
-M, --modify-
file
=
file
从文件读取访问控制列表条目更改
-x, --remove=acl 根据文件中访问控制列表移除条目
-X, --remove-
file
=
file
从文件读取访问控制列表条目并删除
-b, --remove-all 删除所有扩展访问控制列表条目
-k, --remove-default 移除默认访问控制列表
--
set
=acl 设定替换当前的文件访问控制列表
--
set
-
file
=
file
从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n, --no-mask 不重新计算有效权限掩码
-d, --default 应用到默认访问控制列表的操作
-R, --recursive 递归操作子目录
-L, --logical 依照系统逻辑,跟随符号链接
-P, --physical 依照自然逻辑,不跟随符号链接
--restore=
file
恢复访问控制列表,和“getfacl -R”作用相反
--
test
测试模式,并不真正修改访问控制列表属性
-
v
, --version 显示版本并退出
-h, --help 显示本帮助信息
getfacl常见参数:
getfacl 2.2.49 -- get
file
access control lists
Usage: getfacl [-aceEsRLPtpndvh]
file
...
-a, --access display the
file
access control list only
-d, --default display the default access control list only
-c, --omit-header
do
not display the comment header
-e, --all-effective print all effective rights
-E, --no-effective print no effective rights
-s, --skip-base skip files that only have the base entries
-R, --recursive recurse into subdirectories
-L, --logical logical walk, follow symbolic links
-P, --physical physical walk,
do
not follow symbolic links
-t, --tabular use tabular output
format
-n, --numeric print numeric user
/group
identifiers
-p, --absolute-names don
't strip leading '
/'
in
pathnames
-
v
, --version print version and
exit
-h, --help this help text
chage命令
chage命令是用来修改帐号和密码的有效期限。
chage [选项] 用户名
可变参数:
可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:
当然在/etc/default/useradd可以找到如下2个参数进行设置:
# useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。
我的服务器root帐户密码策略信息如下:
[root@linuxde ~]# chage -l root 最近一次密码修改时间 :9月 10, 2018 密码过期时间 :从不 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :99999 在密码过期之前警告的天数 :7
我可以通过如下命令修改我的密码过期时间:
[root@linuxde ~]# chage -M 60 root [root@linuxde ~]# chage -l root 最近一次密码修改时间 : 9月 10, 2018 密码过期时间 : 5月 11, 2013 密码失效时间 :从不 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :60 在密码过期之前警告的天数 :9
然后通过如下命令设置密码失效时间:
[root@linuxde ~]# chage -I 5 root [root@linuxde ~]# chage -l root 最近一次密码修改时间 : 9月 10, 2018 密码过期时间 : 11月 9, 2018 密码失效时间 : 11月 14, 2018 帐户过期时间 :从不 两次改变密码之间相距的最小天数 :0 两次改变密码之间相距的最大天数 :60 在密码过期之前警告的天数 :9
从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。
补充:
在linux操作系统(CentOS 7)中,有一种局部截图的方式,用命令就可以实现
gnome -screenshot -a(注意:只能在输入命令的shell终端窗口使用,而是临时的)
alias命令
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''
将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc
中。
alias(选项)(参数)
可变参数:
命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。
alias 的基本使用方法为:
alias 新的命令='原命令 -选项/参数'
例如:alias l=‘ls -lsh'
将重新定义ls命令,现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。
要删除一个别名,可以使用 unalias 命令,如 unalias l。
查看系统已经设置的别名:
alias -p alias cp='cp -i' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
bashrc与profile的区别
要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。
交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。系统中存在许多bashrc和profile文件,下面逐一介绍:
/etc/pro此文件为系统的每个用户设置环境信息,当第一个用户登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。有些linux版本中的/etc目录下已经没有了bashrc文件。
~/. pro每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,它设置一些环境变量,然后执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
linux的 .bashrc文件
使用man bash命令查看到的联机帮助文件中的相关解释如下:
.bashrc - The individual per-interactive-shell startup file.
这个文件主要保存个人的一些个性化设置,如命令别名、路径等。下面是个例子:
# User specific aliases and functions
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
LANG=zh_CN.GBK
export PATH LANG
alias rm='rm -i'
alias ls='/bin/ls -F --color=tty --show-control-chars'
例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。
每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。
一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了。