最新帖子

页: [1] 2 3 ... 5
1
Linux网络安全配置 / linux下查看所有用户及所有用户组
« 最后发表 作者 virtual 十一月 30, 2018, 09:35:11 上午 »
groups 查看当前登录用户的组内成员
groups gliethttp 查看gliethttp用户所在的组,以及组内成员
whoami 查看当前登录用户名

/etc/group文件包含所有组
/etc/shadow和/etc/passwd系统存在的所有用户名

1、/etc/group 解说;
/etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组,那么这个用户就可以浏览root用户家目录的文件,如果root用户把某个文件 的读写执行权限开放,root用户组的所有用户都可以修改此文件,如果是可执行的文件(比如脚本),root用户组的用户也是可以执行的;

用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去,

2、/etc/group 内容具体分析
/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录;格式如下:
group_name:passwd:GID:user_list

在/etc/group 中的每条记录分四个字段:
第一字段:用户组名称;
第二字段:用户组密码;
第三字段:GID
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
============================================================================
Linux 用户(user)和用户组(group)管理概述
参考网址:http://fedora.linuxsir.org/main/?q=node/91
一、理解Linux的单用户多任务,多用户多任务概念;

Linux 是一个多用户、多任务的操作系统;我们应该了解单用户多任务和多用户多任务的概念;

1、Linux 的单用户多任务;
单用户多任务;比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;当然beinan这个用户,其它的人还能以远程登录过来,也能做其它的工作。

2、Linux 的多用户、多任务;
有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说;

举个例子,比如LinuxSir.Org 服务器,上面有FTP 用户、系统管理员、web 用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma 或Yuking 兄在管理他们的主页系统和FTP ;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody 用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样;

值得注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的;

3、用户的角色区分;
用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;
root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

4、多用户操作系统的安全;
多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如beinan用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佳,Linux能很好的保护每个用户的安全,但我们也得学会Linux 才是,再安全的系统,如果没有安全意识的管理员或管理技术,这样的系统也不是安全的。

从服务器角度来说,多用户的下的系统安全性也是最为重要的,我们常用的Windows 操作系统,它在系纺权限管理的能力只能说是一般般,根本没有没有办法和Linux或Unix 类系统相比;

二、用户(user)和用户组(group)概念;

1、用户(user)的概念;
通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;

当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org 的网页程序,就是nobody用户;我们匿名访问ftp 时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看 /etc/passwd ;

2、用户组(group)的概念;
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

举例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的;

用户和用户组的对应关系是:一对一、多对一、一对多或多对多;
一对一:某个用户可以是某个组的唯一成员;
多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

三、用户(user)和用户组(group)相关的配置文件、命令或目录;

1、与用户(user)和用户组(group)相关的配置文件;

1)与用户(user)相关的配置文件;
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;

2)与用户组(group)相关的配置文件;
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;

2、管理用户(user)和用户组(group)的相关工具或命令;

1)管理用户(user)的工具或命令;

 
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具 id 注:查看用户的UID、GID及所归属的用户组 chfn 注:更改用户信息工具
su 注:用户切换工具 sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,
但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
 
2)管理用户组(group)的工具或命令;

groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;
 
3、/etc/skel 目录;

/etc/skel目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel 目录下的文件都是隐藏文件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;

程序代码: [选择]
[root@localhost beinan]# ls -la /etc/skel/
总用量 92
drwxr-xr-x    3 root root  4096  8月 11 23:32 .
drwxr-xr-x  115 root root 12288 10月 14 13:44 ..
-rw-r--r--    1 root root    24  5月 11 00:15 .bash_logout
-rw-r--r--    1 root root   191  5月 11 00:15 .bash_profile
-rw-r--r--    1 root root   124  5月 11 00:15 .bashrc
-rw-r--r--    1 root root  5619 2005-03-08  .canna
-rw-r--r--    1 root root   438  5月 18 15:23 .emacs
-rw-r--r--    1 root root   120  5月 23 05:18 .gtkrc
drwxr-xr-x    3 root root  4096  8月 11 23:16 .kde
-rw-r--r--    1 root root   658 2005-01-17  .zshrc

/etc/skel 目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改 /etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel 下的文件复制到用户的家目录下,然后要用chown 来改变新用户家目录的属主;

4、/etc/login.defs 配置文件;
/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;

比如Fedora 的 /etc/logins.defs 文件内容;

 
# *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
# #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail 注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件; #MAIL_FILE .mail
# Password aging controls: #
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
 # PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
 # PASS_MAX_DAYS 99999 注:用户的密码不过期最多的天数;
 PASS_MIN_DAYS 0 注:密码修改之间最小的天数;
PASS_MIN_LEN 5 注:密码最小长度;
PASS_WARN_AGE 7 注: #
# Min/max values for automatic uid selection in useradd
# UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的; UID_MAX 60000 注:最大UID为60000; #
 # Min/max values for automatic gid selection in groupadd # GID_MIN 500 注:GID 是从500开始; GID_MAX 60000 #
 # If defined, this command is run when removing a user.
 # It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument). #
 #USERDEL_CMD /usr/sbin/userdel_local #
# If useradd should create home directories for users by default
 # On RH systems, we do. This option is ORed with the -m flag on
 # useradd command line
. # CREATE_HOME yes 注:是否创用户家目录,要求创建;
 
5、/etc/default/useradd 文件;
通过useradd 添加用户时的规则文件;
# useradd defaults file
GROUP=100
HOME=/home  注:把用户的家目录建在/home中;
INACTIVE=-1  注:是否启用帐号过期停权,-1表示不启用;
EXPIRE=   注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash  注:所用SHELL的类型;
SKEL=/etc/skel   注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;

后记:
关于用户(user)和用户组(group)管理内容大约就是这么多;只要把上面所说的内容了解和掌握,用户(user)和用户组(group)管理就差不多了;由于用户(user)和用户组(group)是和文件及目录权限联系在一起的,所以文件及目录权限的操作也会独立成文来给大家介绍;

本文只是让新手弟兄明白用户(user)和用户组(group)一些原理,所以我在写此文的时候,大多是解说内容,我的意思是通过解说和索引一些命令,让新手弟兄明白一点理论是比较重要的,技术操作无非是命令的用法;

=================================================================
Linux用户、用户组、文件权限学习笔记
参考网址:http://www.sourcejoy.com/other_dev_tech/linux-user-and-file-manage.html

最近打算更仔细学习一下linux操作系统。先是恶补了一下用户、用户组、文件权限这三样比较重要的知识。
学习这几样东西,得先掌握linux的权限系统相关知识。
linux的权限系统主要是由用户、用户组和权限组成。
用户就是一个个的登录并使用linux的用户。linux内部用UID表示。
用户组就是用户的分组。linux内部用GID表示。
权限分为读、写、执行三种权限。

linux的用户信息保存在/etc/passwd文件中,另外,/etc/shadow文件存放的是用户密码相关信息。

/etc/passwd文件格式:
用户名:密码:UID:GID:用户信息:HOME目录路径:用户shell
其中UID为0则是用户root,1~499为系统用户,500以上为普通用户

/etc/shadow保存用户密码信息,包括加密后的密码,密码过期时间,密码过期提示天数等。

用户组信息保存在/etc/group文件中.
格式如下:
用户组名:组密码:GID:组内帐号(多个帐号用逗号分隔)

用户登录后,/etc/passwd文件里的GID为用户的初始用户组。
用户的初始用户组这一事实不会再/etc/group中体现。

查看当前用户的用户组命令:
程序代码: [选择]
[root@local opt]#groups
root bin daemon sys adm disk wheel
输出的信息中,第一个用户组为当前用户的有效用户组(当前用户组)

切换有效用户组命令:
程序代码: [选择]
[root@local opt]#newgrp 用户组名
要离开新的有效用户组,则输入exit回车。

新建用户命令:
程序代码: [选择]
[root@local opt]#useradd 用户名 -g 初始用户组 -G 其他用户组(修改/etc/group) -c 用户说明 -u 指定UID
建完用户需要为用户设置密码:
程序代码: [选择]
[root@local opt]#passwd 用户名
用户要修改自己密码命令:
程序代码: [选择]
[root@local opt]#passwd
修改用户信息命令:
程序代码: [选择]
[root@local opt]#usermod 参数 用户名
参数:
 -c 说明
 -g 组名 初始用户组
-e 过期日期 格式:YYYY-MM-DD
 -G 组名 其他用户组
 -l 修改用户名
 -L 锁定账号(在/etc/shadow文件中用户对应密码密码串的前面加上两个叹号(!!))
 -U 解锁

删除用户命令:
程序代码: [选择]
[root@local opt]#userdel [-r] 用户名
其中,参数-r为删除用户的home目录。
其实,可能在系统其他地方也有该用户文件,要完整删除一个用户和其文件要先找到属于他的文件:
程序代码: [选择]
[root@local opt]#find / -user 用户名
然后删除,再运行userdel删除用户。

查看可用shell命令:
程序代码: [选择]
[root@local opt]#chsh -l
修改自己的shell命令:
程序代码: [选择]
[root@local opt]#chsh -s
查看自己或某人UID/GID信息:
程序代码: [选择]
[root@local opt]#id [用户名]
返回信息中groups为有效用户组

新增用户组命令:
程序代码: [选择]
[root@local opt]#groupadd 用户组名
修改用户组名命令:
程序代码: [选择]
[root@local opt]#groupmod -n 名称
删除用户组命令:
程序代码: [选择]
[root@local opt]#groupdel 用户组名
设置用户组密码命令:
程序代码: [选择]
[root@local opt]#gpasswd 用户组名
如果gpasswd加上参数则有其他功能

设置用户组管理员命令:
程序代码: [选择]
[root@local opt]#gpasswd -A 用户名 用户组名
添加某帐号到组命令:
程序代码: [选择]
[root@local opt]#gpasswd -M 用户名 用户组名
从组中删除某帐号命令:
程序代码: [选择]
[root@local opt]#gpasswd -d 用户名 用户组名
passwd相关参数操作:
-l 锁用户
-u 解锁用户
-n 天数  密码不可改天数
-x 天数  密码过期天数
-w 天数  警告天数

 文件权限知识

先看个实例:
程序代码: [选择]
[root@local opt]#ls -al
ls -al 命令是列出目录的所有文件,包括隐藏文件。隐藏文件的文件名第一个字符为'.'
-rw-r--r--  1 root root    81 08-02 14:54 gtkrc-1.2-gnome2
-rw-------  1 root root   189 08-02 14:54 ICEauthority
-rw-------  1 root root    35 08-05 10:02 .lesshst
drwx------  3 root root  4096 08-02 14:54 .metacity
drwxr-xr-x  3 root root  4096 08-02 14:54 nautilus

列表的列定义如下:
[权限属性信息] [连接数] [拥有者] [拥有者所属用户组] [大小] [最后修改时间] [文件名]

权限属性列表为10个字符:
第一个字符表示文件类型,d为目录 -为普通文件 l为连接 b为可存储的接口设备 c为键盘鼠标等输入设备
2、3、4个字符表示所有者权限,5、6、7个字符表示所有者同组用户权限,8、9、10为其他用户权限
第二个字符表示所有者读权限,如果有权限则为r,没有权限则为-
第三个字符表示所有者写权限,如果有权限则为w,没有权限则为-
第四个字符表示所有者执行权限,如果有权限则为x,没有权限则为-
第五个字符表示所有者同组用户读权限,如果有权限则为r,没有权限则为-
第六个字符表示所有者同组用户写权限,如果有权限则为w,没有权限则为-
第七个字符表示所有者同组用户执行权限,如果有权限则为x,没有权限则为-
第八个字符表示其他非同组读权限,如果有权限则为r,没有权限则为-
第九个字符表示其他非同组写权限,如果有权限则为w,没有权限则为-
第十个字符表示其他非同组执行权限,如果有权限则为x,没有权限则为-

修改文件所属组命令:
[root@local opt]#chgrp [-R] 组名 文件名
其中-R为递归设置

修改文件的所有者和组命令:
[root@local opt]#chown [-R] 用户[:用户组] 文件名

修改文件访问权限命令:
[root@local opt]#chmod [-R] 0777 文件名

至此,用户、文件和权限相关的东西,就总结个7788了,接下来的就是,平常要敢于用各种命令,勤于看看本篇总结啦。
====================================================================
linux 查看用户及用户组的方法
程序代码: [选择]
whois功能说明:查找并显示用户信息。
语  法:whois [帐号名称]
补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别。
---------------------------------------------------------
whoami
功能说明:先似乎用户名称。
语  法:whoami [--help][--version]
补充说明:显示自身的用户名称,本指令相当于执行"id -un"指令。
参  数:
--help  在线帮助。
--version  显示版本信息。
---------------------------------------------------
who
功能说明:显示目前登入系统的用户信息。
语  法:who [-Himqsw][--help][--version][am i][记录文件]
补充说明:执行这项指令可得知目前有那些用户登入系统,单独执行who指令会列出登入帐号,使用的    终端机,登入时间以及从何处登入或正在使用哪个X显示器。
参  数:
-H或--heading  显示各栏位的标题信息列。
-i或-u或--idle  显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。
-m  此参数的效果和指定"am i"字符串相同。
-q或--count  只显示登入系统的帐号名称和总人数。
-s  此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题。
-w或-T或--mesg或--message或--writable  显示用户的信息状态栏。
--help  在线帮助。
--version  显示版本信息。
----------------------------------------------------
w
功能说明:显示目前登入系统的用户信息。
语  法:w [-fhlsuV][用户名称]
补充说明:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w
指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
参  数:
-f  开启或关闭显示用户从何处登入系统。
-h  不显示各栏位的标题信息列。
-l  使用详细格式列表,此为预设值。
-s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
-u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。
-V  显示版本信息。
-----------------------------------------------------
finger命令
finger 命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。
该命令的一般格式为:
finger [选项] [使用者] [用户@主机]
命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。 
[例]在本地机上使用finger命令。
程序代码: [选择]
$ finger xxqLogin: xxq Name:
Directory: /home/xxq Shell: /bin/bash
Last login Thu Jan 1 21:43 (CST) on tty1
No mail.
No Plan. 
程序代码: [选择]
$ fingerLogin Name Tty Idle Login Time Office Office Phone
root root *1 28 Nov 25 09:17
……
------------------------------------------------------------------
/etc/group文件包含所有组
/etc/shadow和/etc/passwd系统存在的所有用户名
修改当前用户所属组的方法
usermod 或者可以直接修改 /etc/paaawd文件即可
----------------------------------------------------------------
vlock(virtual console lock)
功能说明:锁住虚拟终端。
语  法:vlock [-achv]
补充说明:执行vlock指令可锁住虚拟终端,避免他人使用。
参  数:
-a或--all  锁住所有的终端阶段作业,如果您在全屏幕的终端中使用本参数,则会将用键盘
切换终端机的功能一并关闭。
-c或--current  锁住目前的终端阶段作业,此为预设值。
-h或--help  在线帮助。
-v或--version  显示版本信息。
--------------------------------------------------------
usermod
功能说明:修改用户帐号。
语  法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
参  数:
-c<备注>  修改用户帐号的备注文字。
-d登入目录>  修改用户登入时的目录。
-e<有效期限>  修改帐号的有效期限。
-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
-g<群组>  修改用户所属的群组。
-G<群组>  修改用户所属的附加群组。
-l<帐号名称>  修改用户帐号名称。
-L  锁定用户密码,使密码无效。
-s  修改用户登入后所使用的shell。
-u  修改用户ID。
-U  解除密码锁定。
-------------------------------------------------------
userdel
功能说明:删除用户帐号。
语  法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
参  数:
-f  删除用户登入目录以及目录中所有文件。
----------------------------------------------------------
userconf
功能说明:用户帐号设置程序。
语  法:userconf [--addgroup <群组>][--adduser <用户ID><群组><用户名称>][--delgroup <群组>][--deluser <用户ID>][--help]
补充说明:userconf实际上为linuxconf的符号连接,提供图形界面的操作方式,供管理员建立与管理各类帐号。若不加任何参数,即进入图形界面。
参  数:
--addgroup<群组>  新增群组。
--adduser<用户ID><群组><用户名称>  新增用户帐号。
--delgroup<群组>  删除群组。
--deluser<用户ID>  删除用户帐号。
--help  显示帮助。
------------------------------------------------------
useradd
功能说明:建立用户帐号。
语  法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
参  数:
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 
-d<登入目录>  指定用户登入时的启始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s   指定用户登入后所使用的shell。
-u  指定用户ID。
2
Linux网络安全配置 / linux 新建用户、用户组 以及为新用户分配权限
« 最后发表 作者 virtual 十一月 30, 2018, 09:31:34 上午 »
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。

一、Linux系统用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1、添加新的用户账号使用 useradd命令,其语法如下:
代码:
useradd 选项 用户名
其中各选项含义如下:
代码:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名 指定新账号的登录名。
例1:
代码:
#
程序代码: [选择]
useradd –d /usr/sam -m sam此命令创建了一个用户sam,
其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。
例2:
代码:
#
程序代码: [选择]
useradd -s /bin/sh -g group –G adm,root gem此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm 
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
2、删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:
代码:
userdel 选项 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:
代码:
#
程序代码: [选择]
userdel sam此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
3、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
代码:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用如下选项:
代码:
-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:
代码:
#
程序代码: [选择]
usermod -s /bin/ksh -d /home/z –g developer sam此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
4、用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
代码:
passwd 选项 用户名
可使用的选项:
代码:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
代码:
$
程序代码: [选择]
passwdOld password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
代码:
#
程序代码: [选择]
passwd samNew password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
代码:
#
程序代码: [选择]
passwd -d sam
此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
代码:
#
程序代码: [选择]
passwd -l sam新建用户异常:
程序代码: [选择]
useradd -d /usr/hadoop -u 586 -m hadoop -g hadoop1 Creating mailbox file: 文件已存在
删除即可 rm -rf /var/spool/mail/用户名
2 useradd: invalid numeric argument 'hadoop'
这是由于hadoop组不存在 请先建hadoop组
通过cat /etc/passwd 可以查看用户的pass
cat /etc/shadow 可以查看用户名
cat /etc/group 可以查看 组


linux下创建用户(二)
二、Linux系统用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1、增加一个新的用户组使用groupadd命令。 其格式如下:

代码:
groupadd 选项 用户组

可以使用的选项有:
代码:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

例1:

代码:
#
程序代码: [选择]
groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

例2:

代码:
#
程序代码: [选择]
groupadd -g 101 group2
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

2、如果要删除一个已有的用户组,使用groupdel命令, 其格式如下:

代码:
groupdel 用户组

例如:

代码:
#
程序代码: [选择]
groupdel group1
此命令从系统中删除组group1。

3、修改用户组的属性使用groupmod命令。 其语法如下:

代码:
groupmod 选项 用户组

常用的选项有:
代码:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

例1:

代码:
#
程序代码: [选择]
groupmod -g 102 group2
此命令将组group2的组标识号修改为102。

例2:

代码:
#
程序代码: [选择]
groupmod –g 10000 -n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3。

4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。 例如:

代码:
$
程序代码: [选择]
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。


权限分配
分配权限
程序代码: [选择]
chown -R hadoop:hadoop /usr/hadoop/
让普通用户拥有root的权限
1.root登录
2.adduser 用户名
3.passwd 用户名
确定密码
4.修改/etc/passwd即可,把用户名的ID和ID组修改成0。
3
Linux网络安全配置 / CentOS生成自签名证书配置Apache https
« 最后发表 作者 virtual 十一月 29, 2018, 05:54:45 下午 »
CentOS生成自签名证书配置Apache https

apache的安装就不用说了

1.安装完apache之后,安装mod_ssl和openssl

程序代码: [选择]
yum install mod_ssl openssl
2.安装完成之后,配置iptables打开443端口, 这时其实已经可以访问https了,但是我们看证书详情的时候显示
程序代码: [选择]
Issued to: localhost.localdomain
Issued by: localhost.localdomian

颁发者: localhost.localdomain
颁发给: localhost.localdomain

 ----------------------------------------------------------------------

下面我们生成自签证书

3.生成密钥
程序代码: [选择]
openssl genrsa -out test.com.key 2048
4. 生成证书请求文件,运行之后会出现一大堆要输入的东西,输入之后就生成.csr的文件了
程序代码: [选择]
openssl req -new -key test.com.key -out test.com.csr
程序代码: [选择]
You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [XX]:CN
 State or Province Name (full name) []:Beijing
 Locality Name (eg, city) [Default City]:Beijing
 Organization Name (eg, company) [Default Company Ltd]:test.com
 Organizational Unit Name (eg, section) []:test
 Common Name (eg, your name or your server's hostname) []:www.test.com

Email Address []:root@test.com
Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:123456

An optional company name []:test

5.生成证书crt
程序代码: [选择]
openssl x509 -req -days 365 -in test.com.csr -signkey test.com.key -out test.com.crt
6.复制文件到相应的目录
程序代码: [选择]
cp test.com.crt /etc/pki/tls/certs
cp test.com.key /etc/pki/tls/private/
cp test.com.csr /etc/pki/tls/private/

7.修改配置文件
vim /etc/httpd/conf.d/ssl.conf
程序代码: [选择]
SSLCertificateFile /etc/pki/tls/certs/test.com.crt
 SSLCertificateKeyFile /etc/pki/tls/private/test.com.key

8.重启apache
程序代码: [选择]
service httpd restart
9.这时再使用https访问,查看证书详情的时候就会看到
程序代码: [选择]
Issued to: www.test.com
Issued by: www.test.com

颁发者: www.test.com
颁发给: www.test.com
4
之前在Linux centos 7 上安装了apache 和mysql,当时并没有设置开机自动启动。

最近又重新练习网页,每次开机总是要手动启动httpd和mysqld,不方便,就想设置成开机自动启动apache和mysql。

Linux centos 7 怎样设置开机自动启动httpd和mysqld服务呢?

我在网上找到了下面两条命令:

程序代码: [选择]
systemctl enable httpd.service

systemctl enable mysqld.service

如果要取消开机自动启动apache和mysql,则用下面的命令

程序代码: [选择]
systemctl disable httpd.service
systemctl disable mysqld.service

可是,我想起了以前我看过开机自动运行httpd服务好像不是上面的命令,而是
程序代码: [选择]
chkconfig –level 3 httpd on
那么chkconfig 和systemctl 这两个命令又有什么区别与联系呢?

我在网上找到了下面这个关于systemctl 和chkconfig 指令用法比较的表格

任务旧指令新指令
使某服务自动启动chkconfig –level 3 httpd onsystemctl enable httpd.service
使某服务不自动启动chkconfig –level 3 httpd offsystemctl disable httpd.service
检查服务状态service httpd statussystemctl status httpd.service
显示所有已启动的服务chkconfig –listsystemctl list-units –type=service
启动某服务service httpd startsystemctl start httpd.service
停止某服务service httpd stopsystemctl stop httpd.service
重启某服务service httpd restartsystemctl restart httpd.service

systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起

centos7开机启动程序

2、有两种方法可以解决:

a.在系统启动过程中,会根据运行级别执行/etc/rcx.d/*(其中x为运行级别)。这里的文件实际上软链接到/etc/init.d/下的脚本文件,

那么,怎么创建这些软链接呢?可以使用systemctl或chkconfig指令(它们的关系参考RHEL 7 中 systemctl 的用法(替代service 和 chkconfig))。

systemctl 指令实例: 
设置开机启动指令:systemctl enable tomcat 
取消设置:systemctl disable tomcat 
查看设置:systemctl list-unit-files 

chkconfig 指令实例: 
使用chkconfig时需要注意,/etc/init.d/下有对应的脚本(这里就是tomcat),且该脚本头部包含如下注释以支持chkconfig, 
注释表示在rc2|3|4|5.d下生成优先级96的启动脚本软链接,另外在rc0|6.d下生成优先级04的停止脚本软链接: 
#chkconfig: 2345 96 04 
 
设置开机启动指令: chkconfig --add tomcat 
取消设置: chkconfig --del tomcat 
查看设置: chkconfig 


这里,我先用systemctl设置开机启动,但是因为它是从/usr/lib/systemd/system/下的软链接到/etc/systemd/system/multi-user.target.wants,而奇怪的是/usr/lib/systemd/system/tomcat这个文件中的环境配置是错误的。
为了防止其他不必要的麻烦,决定使用chkconfig,用chkconfig设置开机启动后重启机子,发现tomcat未启动。orz。后来尝试把文件名tomcat改成test,执行chkconfig --add test后重启机子,发现tomcat启动了。Orz。再后来执行chkconfig指令时发现这么一段话。

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。   
      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。 
      欲查看对特定 target 启用的服务请执行 
      'systemctl list-dependencies [target]'。 
恩,看了下systemctl list-unit-files的执行结果,"tomcat.servicedisabled"。估计chkconfig的设置被systemctl的覆盖了。
所以现在的情况是,用systemctl设置的因为配置错误不能成功启动tomcat,而不用systemctl的设置的话,chkconfig的设置又会被systemctl覆盖。MDZZ。

如果你照着我的配置走到这里,想骂娘?别急,除了把文件名tomcat改掉之外,我们可以剑走偏峰。请看方法b。

b.借用/etc/rc.d/rc.local实现开机启动:

在Linux系统启动过程中,在执行完对应运行级别的脚本文件(/etc/rcx.d/*)后,还会执行/etc/rc.local(前提是该文件权限是可执行的)。

所以我直接在/etc/rc.local最后加上

程序代码: [选择]
/usr/local/tomcat/bin/startup.sh 
同时,为了在系统重启/关闭时停止tomcat,执行下面两条指令:
程序代码: [选择]
ln -s /etc/init.d/tomcat /etc/rc0.d/K04tomcat 
ln -s /etc/init.d/tomcat /etc/rc6.d/K04tomcat 
5
Linux网络安全配置 / VirtualBox 常用命令汇总
« 最后发表 作者 virtual 十一月 20, 2018, 10:10:23 下午 »
VirtualBox 命令汇总

在Linux平台安装的VirtualBox虚拟机,可以通过如下命令操作虚拟机:

查看有哪些虚拟机
VBoxManage list vms

查看虚拟的详细信息
VBoxManage list vms --long

查看运行着的虚拟机
VBoxManage list runningvms

开启虚拟机在后台运行
VBoxManage startvm backup -type headless

开启虚拟机并开启远程桌面连接的支持
VBoxManage startvm <vm_name> -type vrdp

改变虚拟机的远程连接端口,用于多个vbox虚拟机同时运行
VBoxManage controlvm <vm_name> vrdpprot <ports>

关闭虚拟机
VBoxManage controlvm <vm_name> acpipowerbutton

强制关闭虚拟机
VBoxManage controlvm <vm_name> poweroff

杀掉某个虚拟机的进程方法(强制关闭虚拟机)

经常遇到强制关闭虚拟机后,虚拟关不了的现象,状态一直是 stopping,而且一直卡死在这,没办法关闭,所以需要强制关闭这个虚拟机

(1) 查看所有virtualbox进程

ps -aux|grep virtualbox

会查出如下 信息:(蓝色背景文字 为 进程id 和 虚拟机名)

 vnc      19499 54.7  3.3 3746624 2177960 ?     Sl   15:46  55:49 /usr/lib/virtualbox/VirtualBox --comment SwiftSync2.0_Synctest25 --startvm 7fa1f49b-4dc2-4a7f-865d-5e0456f5482d --no-startvm-errormsgbox

....

然后强制杀进程id为 19499的进程,这个进程就是 虚拟机SwiftSync2.0_Synctest25的进程

kill -9 194999
6
Linux网络安全配置 / ubuntu 把软件源修改为国内源和更新
« 最后发表 作者 virtual 十一月 14, 2018, 02:00:55 下午 »
1. 备份原始文件

程序代码: [选择]
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
2. 修改文件并添加国内源

程序代码: [选择]
vi /etc/apt/sources.list
3. 注释元文件内的源并添加如下地址

#cn99.com 源更新服务器(江苏省常州市电信,推荐电信用户使用):
程序代码: [选择]
deb http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ gutsy-backports main restricted universe multiverse
#Mirror.lupaworld.com 源更新服务器(浙江省杭州市双线服务器,网通同电信都可以用,亚洲地区官方更新服务器):
程序代码: [选择]
deb http://mirror.lupaworld.com/ubuntu gutsy main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu gutsy-backports main restricted universe multiverse

#Ubuntu 官方源
程序代码: [选择]
deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse

#台湾的官方源
程序代码: [选择]
deb http://tw.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu gutsy-proposed main restricted universe multiverse
#或者这些源

#阿里云
程序代码: [选择]
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

#网易163
程序代码: [选择]
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
4. 放置非官方源的包不完整,可在为不添加官方源

程序代码: [选择]
deb http://archive.ubuntu.org.cn/ubuntu-cn/ feisty main restricted universe multiverse
5. 更新源

程序代码: [选择]
sudo apt-get update
6. 更新软件

程序代码: [选择]
sudo apt-get dist-upgrade
7. 常见的修复安装命令

程序代码: [选择]
sudo apt-get -f install
7
Mysql数据库技术交流 / ubuntu安装DBI,DBD-MYSQL
« 最后发表 作者 virtual 十一月 13, 2018, 01:01:34 下午 »
CPAN进入后,

>install DBI



DBD-MYSQL:

sudo apt-get install libdbd-mysql-perl
8
Linux网络安全配置 / 如何判断Linux是32位还是64位
« 最后发表 作者 virtual 十一月 07, 2018, 01:52:22 下午 »
如何判断Linux是32位还是64位
方法一:getconf LONG_BIT
在linux终端输入 getconf LONG_BIT 命令
如果是32位机器,则结果为32
程序代码: [选择]
[root@localhost ~]# getconf LONG_BIT
32
如果是64位机器,则结果为64
程序代码: [选择]
[root@localhost ~]# getconf LONG_BIT
64
方法二:uname -a
如果是64位机器,会输出x86_64
程序代码: [选择]
[chenzhou@testweb01 ~]$ uname -a
Linux testweb01 2.6.18-308.4.1.el5 #1 SMP Tue Apr 17 17:08:00 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
可以看到,uname-a执行后的结果中输出了x86_64,说明该机器是64位的,否则代表该机器是32位的
程序代码: [选择]
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
方法三:file /sbin/init 或者 file /bin/ls
示例:32位机器
file /sbin/init
程序代码: [选择]
[root@localhost ~]# file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
file /bin/ls
程序代码: [选择]
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
示例:64位机器
file /sbin/init
程序代码: [选择]
[chenzhou@testweb01 ~]$ file /sbin/init
/sbin/init: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
file /bin/ls
程序代码: [选择]
[chenzhou@testweb01 ~]$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
可以通过命令结果中的64-bit或者32-bit来判断该机器是64位还是32位
9
PHP技术交流 / TCPDF不能保存中文文件名的解决方法
« 最后发表 作者 virtual 十月 30, 2018, 04:37:28 下午 »
PHP使用TCPDF生成PDF文件时,如果文件名是中文会被直接过滤掉,以下是TCPDF不能保存中文文件名的解决方法:

打开tcpdf.php文件,找到output函数,大约在7554行。

1、注释以下代码,大约在7565-7568行:

if ($dest[0] != 'F') {
    $name = preg_replace('/[\s]+/', '_', $name);
    $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);
}
2、搜索该方法代码,替换如下代码,大约分别在7639、7670、7693、7718行。

header('Content-Disposition: attachment; filename="'.basename($name).'"');
替换为

header('Content-Disposition: attachment; filename="'.$name.'"');
上述代码分别在该方法的case 'I':(打印PDF)、case 'D':(下载PDF)、case 'FD':(保存到本地文件)语句中。

这样PHP使用TCPDF生成PDF文件时就可以保存为中文名称了。
10
SqlServer数据库安装 / 快速入门: 安装 SQL Server 并在 Ubuntu 上创建数据库
« 最后发表 作者 virtual 十月 30, 2018, 01:35:36 下午 »
在本快速入门,SQL Server 2017 或 SQL Server 2019 CTP 2.0 上安装 Ubuntu 16.04。 然后使用连接sqlcmd创建第一个数据库和运行查询。
 提示

本教程需要用户输入和 Internet 连接。 如果您对无人参与或脱机安装感兴趣,请参阅 Linux 上的 SQL Server 的安装指南。
必要條件
您必须具有的 Ubuntu 16.04 计算机至少 2 GB的内存。
若要在自己的计算机上安装 Ubuntu,请转到 http://www.ubuntu.com/download/server 。 此外可以在 Azure 中创建 Ubuntu 虚拟机。 请参阅创建和管理 Linux Vm 使用 Azure CLI。
 备注

在此期间,适用于 Linux 的 Windows 子系统作为安装目标不支持 Windows 10。
其他系统要求,请参阅Linux 上的 SQL Server 的系统要求。
安装 SQL Server
若要在 Ubuntu 上配置 SQL Server ,在终端中运行以下命令安装mssql server包。
导入公共存储库 GPG 密钥:
程序代码: [选择]
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
注册 Microsoft SQL Server Ubuntu 存储库:

程序代码: [选择]
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-2017.list)"


如果你想要试用 SQL Server 2019,则必须改为注册预览版 (2019) 存储库。 对于 SQL Server 2019 安装中使用以下命令:

程序代码: [选择]
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/16.04/mssql-server-preview.list)"
运行以下命令,安装 SQL Server:

程序代码: [选择]
sudo apt-get update
sudo apt-get install -y mssql-server
程序包安装完成后,请运行 mssql-conf setup 命令并按提示设置 SA 密码,然后选择版本。

程序代码: [选择]
sudo /opt/mssql/bin/mssql-conf setup


自由授权以下 SQL Server 2017 版本: Evaluation、 Developer 和 Express。
 备注

请确保为 SA 帐户指定强密码(最少 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号)。
配置完成后,请验证服务是否正在运行:
程序代码: [选择]
systemctl status mssql-server
如果你打算远程连接,你可能还需要打开防火墙上的 SQL Server TCP 端口 (默认值为 1433)。
在此情况下,SQL Server 在 Ubuntu 计算机上运行并已准备好使用 !
安装 SQL Server 命令行工具
若要创建数据库,需要使用一个能够在 SQL Server 上运行 Transact-SQL 语句的工具进行连接。 以下步骤安装 SQL Server 命令行工具: sqlcmd和bcp。
使用以下步骤来安装mssql 工具Ubuntu 上。

导入公共存储库 GPG 密钥。

程序代码: [选择]
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
注册 Microsoft Ubuntu 存储库。

程序代码: [选择]
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
更新源列表,并使用 unixODBC 开发人员包运行安装命令。

程序代码: [选择]
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev

若要更新到最新版mssql 工具运行以下命令:

程序代码: [选择]
sudo apt-get update
sudo apt-get install mssql-tools
可选: 添加/opt/mssql-tools/bin/到你路径bash shell 中的环境变量。
若要使sqlcmd/bcp可从登录会话的 bash shell 访问修改你路径中 ~/.bash_profile文件使用以下命令:

程序代码: [选择]
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
若要使sqlcmd/bcp能从交互式/非登录会话,bash shell 访问修改路径中 ~/.bashrc文件使用以下命令:

程序代码: [选择]
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
本地连接
以下步骤使用 sqlcmd 本地连接到新的 SQL Server 实例。
使用 SQL Server 名称 (-S),用户名 (-U) 和密码 (-P) 的参数运行 sqlcmd。 在本教程中,用户进行本地连接,因此服务器名称为 localhost。 用户名为 SA,密码是在安装过程中为 SA 帐户提供的密码。

程序代码: [选择]
sqlcmd -S localhost -U SA -P '<YourPassword>'
提示

可以在命令行上省略密码,以收到密码输入提示。
 提示

如果以后决定进行远程连接,请指定 -S 参数的计算机名称或 IP 地址,并确保防火墙上的端口 1433 已打开。
如果成功,应会显示 sqlcmd 命令提示符:1>。
如果连接失败,请首先尝试根据错误消息诊断问题。 然后查看连接故障排除建议。
创建和查询数据
下面各部分将逐步介绍如何使用 sqlcmd 新建数据库、添加数据并运行简单查询。
新建数据库
以下步骤创建一个名为 TestDB 的新数据库。
在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:
SQL

程序代码: [选择]
CREATE DATABASE TestDB
在下一行中,编写一个查询以返回服务器上所有数据库的名称:
SQL
程序代码: [选择]
SELECT Name from sys.Databases
前两个命令没有立即执行。 必须在新行中键入 GO 才能执行以前的命令:
SQL

程序代码: [选择]
GO 提示

若要详细了解如何编写 Transact-SQL 语句和查询,请参阅教程:编写 Transact-SQL 语句。
插入数据
接下来创建一个新表 Inventory,然后插入两个新行。
在 sqlcmd 命令提示符中,将上下文切换到新的 TestDB 数据库:
SQL

程序代码: [选择]
USE TestDB
创建名为 Inventory 的新表:
SQL

程序代码: [选择]
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
将数据插入新表:
SQL

程序代码: [选择]
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
要执行上述命令的类型 GO:
SQL

程序代码: [选择]
GO
选择数据
现在,运行查询以从 Inventory 表返回数据。
通过 sqlcmd 命令提示符输入查询,以返回 Inventory 表中数量大于 152 的行:
SQL

程序代码: [选择]
SELECT * FROM Inventory WHERE quantity > 152;
执行命令:
SQL

程序代码: [选择]
GO退出 sqlcmd 命令提示符
要结束 sqlcmd 会话,请键入 QUIT:
SQL

程序代码: [选择]
QUIT
性能最佳实践
在 Linux 上安装 SQL Server 后, 查看配置 Linux 和 SQL Server 来提高生产方案的性能的最佳做法。 有关详细信息,请参阅的性能最佳实践和 Linux 上的 SQL Server 配置准则。
跨平台数据工具
除了sqlcmd,可以使用以下跨平台工具来管理 SQL Server:
Azure 数据 Studio   跨平台 GUI 数据库管理实用程序。
mssql-cli   用于运行 TRANSACT-SQL 命令的跨平台命令行界面。
Visual Studio Code   运行 TRANSACT-SQL 语句,mssql 扩展通过一个跨平台 GUI 代码编辑器。
从 Windows 连接
Windows 上的 SQL Server 工具连接到 Linux 上的 SQL Server 实例,操作方式与连接到任何远程 SQL Server 实例一样。
如果有一台可以连接到 Linux 计算机的 Windows 计算机,请从运行 sqlcmd 的 Windows 命令提示符尝试执行本主题中的相同步骤。 仅验证所使用的是目标 Linux 计算机名称或 IP 地址,而非 localhost,并确保 TCP 端口 1433 已打开。 如果从 Windows 进行连接存在任何问题,请参阅连接故障排除建议。
有关在 Windows 上运行,但连接到 Linux 上的 SQL Server 的其他工具,请参阅:
SQL Server Management Studio (SSMS)
Windows PowerShell
SQL Server Data Tools (SSDT)
页: [1] 2 3 ... 5