前面已经介绍过,useradd是新增用户,但是在创建一个新用户之后,会在下面文件中自动生成内容:

  /etc/passwd:生成用户信息

  /etc/shadow:生成密码信息

  /etc/group:生成用户组信息

  /etc/gshadow:生成用户组密码信息

  /home/tom:创建家目录

  /var/spool/mail/tom:创建用户邮箱目录

 

上面出现了很多默认值,用户默认值文件如下:

linux用户和组权限(补充)_用户和组权限

linux用户和组权限(补充)_LINUX_02

file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

file(选项)(参数)

-b:列出辨识结果时,不显示文件名称;

-c:详细显示指令执行过程,便于排错或分析程序执行的情形;

-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;

-L:直接显示符号连接所指向的文件类别;

-m<魔法数字文件>:指定魔法数字文件;

-v:显示版本信息;

    7.-z:尝试去解读压缩文件的内容。

文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

linux用户和组权限(补充)_用户和组权限_03

linux用户和组权限(补充)_用户和组权限_04

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 -O - https://install.perlbrew.pl | bash

这就是为了保证你使用的wget和作者使用的wget一致,而不是其他的命令的别名。

比如cp复制命令,一般情况下我们进行相同文件复制都会进行询问是否覆盖,而\cp是最原始的复制命令,而不会进行询问。

install命令

install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户。install命令和​​cp​​命令类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。

install [OPTION]... [-T] SOURCE DEST
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
install [OPTION]... -d DIRECTORY...

在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。

选择参数:

--backup[=CONTROL]:为每个已存在的目的地文件进行备份。
-b:类似 --backup,但不接受任何参数。
-c:(此选项不作处理)。
-d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。
-D:创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用。
-g,--group=组:自行设定所属组,而不是进程目前的所属组。
-m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。
-o,--owner=所有者:自行设定所有者 (只适用于超级用户)。
-p,--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。
-s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。
-S,--suffix=后缀:自行指定备份文件的<后缀>。
-v,--verbose:处理每个文件/目录时印出名称。
--help:显示此帮助信息并离开。
--version:显示版本信息并离开。

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(文件):

install a/e c
结果类似:
cp a/e c #注意c必须是文件。

选项-D:

install -D x a/b/c

效果类似:mkdir -p a/b && cp x a/b/c

install [option] SOURCE [SOURCE...] DIRECTORY

复制多个SOURCE文件到目的目录:

install a/* d              //其中d是目录。

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 [选项] 用户名

可变参数:

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

PASS_MAX_DAYS   99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

当然在/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(选项)(参数)

可变参数:

-p:打印已经设置的命令别名。

命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。

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也就得到执行了,你的个性化设置也就生效了。