`
中华国锋
  • 浏览: 41813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux创建新用户及权限

 
阅读更多
建立一个新用户


  修改用户的个人设置


文件目录的权限设置


两个重要文件:passwd与group


建立一个新用户


建立一个新的用户包括两个步骤,第一步是使用useradd命令完成一个新用户的初始化设置工作;第二步是用passwd为这个新用户设置密码。例如,我们要给系统添加一个用户叫platformuser,密码为platformuser,那相关的操作是:


useradd platformuser <回车>


这时候系统没有任何显示。接着:


passwd platformuser <回车>


系统显示:


Changing password for user platformuser


New UNIX password:


你输入:


platformuser<回车>


注意,由于linux并不采用类似windows的密码回显(显示为*号)——为避免你输入密码时被人注意到有多少位——所以,输入的这些字符你是看不见的。


系统显示:


Retype new UNIX password:


你再重新输入一次密码,然后回车确认,这时系统会显示:


passwd:all authentication tokens updated successfully


表示你修改密码成功了。


到这里,新用户的创建工作就算完成了。下面,我们再补充一些有关增加新用户的常识:


1、useradd所做的初始化操作已经包括在/home目录下为platformuser帐号建立一个名为platformuser的主目录。如果你不想使用这个缺省的目录,而希望把他的主目录放在/home/goal里(还放在/home下,只是一种良好的习惯,没有其他什么特别的要求),可以使用useradd的参数-d,命令如下:


useradd -d /home/goal platformuser


2、useradd的初始化操作还包括为用户单独建立一个与用户名同名的组(platformuser组)。这叫用户私有组的机制,与默认组机制相对应。对用户分组一是方便管理,二是可以明确权限。复杂的我们将在以后的深入内容中探讨。我们如果想让此用户加入一个已有的组的话,可以使用-g参数。例如我们想让platformuser加入webusers组,那么可以使用以下命令:


useradd -g webusers platformuser


同样的,我们还可以使用-G参数使他同时加入多个组,例如webusers和ftpusers:


useradd -G ftpusers,webusers platformuser


3、passwd命令为一个用户设置密码,但它实质上是一个修改密码的程序。只有超级用户和用户自己可以修改密码,其它的普通用户没有给他修改密码的 权利。用户密码的组成要尽量的复杂,最好包括字母、数字和特殊符号,而且最好设成6位以上。太短passwd程序不允许,只是单纯的字母或单纯的数 字,passwd也会有意见。你都会看见passwd出现的提示的,不要害怕,仔细看看到底它是怎么说的:)


4、你在增加一个新用户的时候,也可以设置用户登录的shell。缺省的,系统提供了/bin/bash。你如果非要指定的话,可以使用-s参数就可以了。例如


useradd -d /www -s /usr/bin/passwd platformuser


注意,这些参数是可以一块使用的,如上例所示,它表示增加新用户,并把其主目录路径设置在/www,登录的shell为/usr/bin/passwd。关于shell的更详细的说明,请参考下面的修改用户的个人设置相关内容。


5、删除一个用户可以使用userdel命令,直接带用户名做参数就可以了。


修改用户的设置


对现有用户的修改,比较常用的主要是修改密码(使用passwd就好了),修改用户的登录shell,修改用户所属的默认组,设置帐号有效期,修改用户的说明信息等等,偶尔也会用到修改用户主目录。


 修改用户的登录shell


使用chsh命令可以修改自己的shell,只有超级用户才能用chsh username为其它用户修改shell设置。注意,指定的shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。


一般,比较常见的shells文件包括下面这些shell:


/bin/bash2


/bin/bash


/bin/sh


/bin/ash


/bin/bsh


/bin/tcsh


/bin/csh


而网管们还喜欢在里面加上/usr/bin/passwd,这是为了不然用户通过控制台或telnet登录系统,却可以使用修改帐户密码(比如在FTP里 用)。以及/bin/false,也就是不让这个用户登录的意思喽^&^,连FTP也不能用。


你也可以使用usermod命令修改shell信息,如下所示:


usermod -s /bin/bash platformuser


其中/bin/bash和platformuser应取相应的shell路径文件名及用户名。


还有一种情况,就是你为用户设置了一个空的shell(就是""),也就是说,这个用户没有shell。呵呵,绝对没有在我还未曾见过,因为这种用户登录后,系统还是会给它一个shell用的。不信你试试:


usermod -s "" platformuser


这种用户根据系统的不同,会有一个sh或bash进行操作,我也没有看出功能上和其它普通用户登录有什么不同。


修改用户所属的默认组


这个功能也可以通过usermod命令来实现,使用-g参数,例如把platformuser的默认组改为nobody,可以使用如下命令:


usermod -g nobody platformuser


nobody在类UNIX系统中一般都意味着没有任何权限。


设置帐号有效期


如果使用了影子口令,则可以使用如下命令来修改一个帐号的有效期:


usermod -e MM/DD/YY username


例如把用户platformuser的有效期定为2001年12月31日:


usermod -e 12/31/01 platformuser


如果把该用户的有效期设为已经过去的时间,就可以暂时禁止该用户登录系统。


修改用户的说明信息


修改用户的说明信息,最简单的方法莫过于直接修改/etc/passwd文件,找到对应的用户记录行,例如下列行:


platformuser:x:503:503::/home/platformuser:/bin/bash


你可以直接在第四个冒号和第五个冒号之间插入该用户的说明就可以了。其实,很多用户设置都可以在这修改,比如该行最后一部分/bin/bash就是用户登录shell的设置。关于这个/etc/passwd文件,我们后面将进一步的深入探讨。


修改用户主目录


修改用户的主目录主要使用usermod命令的-d参数,例如:


usermod -d /www platformuser


这一行将platformuser的主目录改到/www。如果想将现有主目录的主要内容转移到新的目录,应该使用-m开关,如下所示:


usermod -d -m /www platformuser


文件目录的权限


linux下,每一个文件、每一个目录都有一个属主,并针对用户自己、用户所在组、其它所有帐号(组)分别设定读、写、执行三种权限。例如,我(假定是webusers组的platformuser帐户的拥有者)使用如下命令建立一个新的文件


touch mytestfile


然后我们使用ls -l mytestfile这一命令来查看这个文件的权限状态(关于ls命令,可以查阅本站的命令查询),可以得到如下的屏幕输出显示:


-rw-rw-r-- 1 platformuser webusers 0 Feb 6 21:37 mytestfile


输出由空格分为9个部分,我们比较关心第一、三、四个字段,分别表示文件权限属性、文件所有者帐户、文件所属组。


◆使用chown命令修改文件的主人


当你新建立一个文件的时候,文件的所有者当然就是你了。这一事实只有超级用户(比如说root)才可以通过chown命令改变(例如chown otheruser mytestfile,把mytestfile文件的属主改为otheruser)。普通用户不能把自己的文件“送”给别人,不然你把有特殊目的的程序给 了root怎么办?:)


chown命令的用法比较简单。这里我先假设你现在拥有超级用户权限,那么你就可以使用如下命令将一个文件“送给”platformuser了:


chown platformuser /home/platformuser/thefileisrootcreate.txt(假定该文件是由root创建的)


修改一个目录的所有者也是类似的:


chown platformuser /home/newboat


当然,如果这个目录还有子目录及文件需要同时送给platformuser,chown也是支持-R参数的:


chown -R platformuser /home/newboat


如果你同时想修改文件/目录所属的组的话,你可以使用以下命令方便的达到目的:


chown -R platformuser.ftpusers /home/newboat


这样,不但文件主人得到了修改,文件所属的组也变成了ftpusers


◆修改文件的组属性


文件所属组你倒是可以改变,前提是:


 1、你的超级用户。


2、你同时属于两个或两个以上的组。


两个条件你至少具备一个,你才能够把文件所属旧组变为新组。使用如下的命令将当前目录下所有html文件所属的组改为httpd:


chgrp httpd *.html


和chown命令一样,chgrp也可以使用-R参数对一个目录内的所有文件和子目录进行递归的修改组属性。


<提示>:你可以使用不带参数的groups命令查看自己属于哪个组。


文件权限的设定是我们这一小节讨论的核心,我们主要介绍chmod命令的两种用法。


◆使用访问字符串设置文件目录权限


正如前面所说的,每一个文件、目录都针对用户自己、用户所在组、其它所有帐号(组)分别有读、写、执行三种权限及其组合。当一个普通用户新建一个文件 的时候,它默认的访问权限显示就如我们刚才所举例子的第一个字段所示。总共十位字符“-rw-rw-r--”,第一位是目录区分标志,如果是d的话,表示 这是一个目录。第二到四位分别表示文件所有者的读(r:read)、写(w:write)、执行(x:execute)属性,第五到七位是文件所属组的 读、写、执行权限,第八到第十位则是其它用户的读、写、执行权限。如果对应的位是相应的字母,就是有这相应权限,否则为“-”,表示没有获得这个许可。象 刚才例子中的文件就是自己可读写,本组可读写,其它用户可读,所有的用户(包括自己)都不能执行它。


我们的用u、g、o分别来指代用户(user)、组(group)、其它帐户(other),就可以方便的设置文件和目录的权限了。当然,我们也可以用a来表示所有的这三项。


例如,我们要对所有perl的脚本文件设定权限,对所有用户都可以读和执行,文件所有者还允许写许可,那么我们可以使用如下命令:


chmod a+rx,u+w *.pl


注意:如果要使用多个访问字符串,它们之间要用逗号隔开,各个许可字符串之间不允许有空格。正如上例所示。


如果要修改目录中所有文件和子目录的权限属性,可以使用chmod提供的-R参数来递归修改。例如,下列命令将/www/site1目录及其下面的子目录的权限属性设定为所有者和组可读、写、执行,其它用户不可访问:


chmod -R a+rwx,o-rwd /www/site1


注意,不要轻易使用-R选项,这可能会带来安全隐患。


使用字符串方便了理解,单输入那么多字母还是有点累,如果你对8进制有些概念的话,可以使用下面介绍的方法来做权限设置。


◆使用八进制数设置文件目录权限


我们知道,在ls -l的输出中,文件权限表示为“-rw-rw-r--”,前一位只和是否为目录有关,其它九位正好可以分成三段,每段三位,“rw-”、“rw-”和 “r--”,“-”代表无效“0”,其它字符代表有效“1”,那么这个文件的权限就是“110”、“110”、“100”,把这个2进制串转换成对应的8 进制数就是6、6、4,也就是说该文件的权限为664(三位八进制数)。我们也可以使用类似这种三位八进制数来设定文件授权,如上边两个例子,就也可以写 为:


chmod 755 *.pl


chmod -R 770 /www/site1


是不是很简洁?关键在于你能根据你需要设定的权限正确的选择八进制数(利用八进制数的二进制表示可以非常轻易的做到这一点)。


◆读、写、执行的权限说明


1、所谓写的权限,也就是对文件修改和删除的权限。如果目录的写权限也对你开放了,则可以创建、删除或修改该目录下的任何文件或自目录——即使该文件和子目录并不属于你。


2、对目录有只读许可的用户,不能用cd命令进入该目录;还必须同时有执行许可才可以进入该目录。


3、必须同时拥有读和执行权限才可以使用ls这样的程序列出目录内容清单。


4、只对目录有执行权限的用户,想访问该目录下的文件有读权限的文件,必须知道该文件名才可以访问。


两个重要文件:passwd与group


在linux的安全机制里,/etc/passwd与/etc/group这两个文件占着非常重要的地位。它们控制着linux的用户和组一些重要设置。


◆/etc/passwd文件说明


下面是一个RHlinux里普通的passwd文件的例子:


root:x:0:0:root:/root:/bin/bash


bin:x:1:1:bin:/bin:


daemon:x:2:2:daemon:/sbin:


……


operator:x:11:0perator:/root:


games:x:12:100:games:/usr/games:


gopher:x:13:30:gopher:/usr/lib/gopher-data:


ftp:x:14:50:FTP User:/home/ftp:


nobody:x:99:99:Nobody:/:


xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false


named:x:25:25:Named:/var/named:/bin/false


postgres:x:26:26ostgreSQL Server:/var/lib/pgsql:/bin/bash


lanf:x:500:500::/home/hujm:/bin/bash


mysql:x:101:101:MySQL server:/var/lib/mysql:/bin/bash


imnotroot:x:0:0::/home/imnotroot:/bin/bash


在这个文件里只有一个普通帐号lanf。其它都是系统或系统服务的进程需要的帐号,包括我们非常熟悉的root这个超级用户。在passwd的文件里,每一行被冒号(":")分成7个部分,分别是:


[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]


其中:


⒈[用户名]是passwd文件里各记录行唯一的有"唯一性"要求的域。也就是说每一行的第一个区域的内容都不能相同,其它区域就无所谓了。


⒉[密码]区域在以前,保存着一个经过不可逆的哈希算法进行DES加密的13位字符,但不包括单引号和冒号。这13位字符中,前两位是密钥,在加密的 时候随机生成的。由于这个字符串不包括单引号,所以以前有一种不修改密码又禁止用户登录的方式就是在密码前面加一个单引号。值得注意的是,现在由于使用了 shadow口令,在密码区域只有一个x字符。


⒊[UID]虽然是系统用来标志文件归属,确定各种权限的标志,但这个区域的内容并不要求唯一的。比较常见而又与安全问题相关的一个例子是有多个 UID和GID均为0的用户帐号。注意到在该文件最后一行还有一个UID和GID为0的用户imnotroot,虽然它声称自己不是root,但是它却有 和root完全相同的权限,因为系统并非根据[用户名],而是根据UID和GID来分用户的权力的。所以,这种情况无疑为系统埋下了安全的。但是,当 imnorroot做锁定屏幕等操作的时候,如果它的密码和root的不一样,它将无法解锁,因为系统只是查到第一个UID为0的用户(自然是root) 后,就不在往下查找了——它当UID也是唯一的。


⒋[GID]用户默认的组ID,这个ID可以在文件/etc/group里查到对应的组名。


⒌[身份描述]:就是用户的身份说明,默认的是无任何说明,可人工添加。


⒍[主目录]:用户的主目录,可以使用前面介绍的命令修改。


⒎[登录shell]:用户登录时系统提供的shell,请参考前面的有关内容。


<注意>:[UID]和[GID]小于500的一般都是系统自己保留,不做普通用户和组的标识的,所以新增加的用户和组一般都是UID和GID大于500的。


◆/etc/group文件说明


下面是RH的一个group文件的例子:


root:x:0:root,hujm,hjm


bin:x:1:root,bin,daemon


daemon:x:2:root,bin,daemon


sys:x:3:root,bin,adm


adm:x:4:root,adm,daemon


tty:x:5:


disk:x:6:root


lp:x:7:daemon,lp


mem:x:8:


kmem:x:9:


wheel:x:10:root


mail:x:12:mail


news:x:13:news


uucp:x:14:uucp


……


hujm:x:503:root,mynoshell,hjm


mysql:x:101:


mynoshell:x:505:


ftpusers:x:506:


它总共分四个部分:


[组名]:[密码域]:[GID]:[组员列表]


意思非常明显,需要说明一下的是,由于组一般都不用密码保护,所以虽然看起来密码域有个X字符,其实那只表示使用了SHADOW(对应文件为 gshadow)。组员列表用逗号分隔各个帐号。另外,一个组的组员如果默认登录组就是它的话,那么在组员列表里将不显示这个组员的帐号,例如用如下命令 增加的用户:


useradd -g ftpusers platformuser


在/etc/group文件里ftpusers的组员列表将不显示这个组员(真是失败),而只是在passwd文件中的GID被设置为506。而使用如下命令:


usermod -G ftpusers,mysql,webusers platformuser


就可以看见相关的组后边加上了platformuser帐号。当然,你可以直接用vi来直接编辑这个文件。


group文件和passwd文件是通过GID联系在一起的,这有点象关系数据库。根据passwd文件中一个帐户的GID,可以在group文件中 找到对应的组名。如果采用了用户私有组机制的话,那么一般新增一个帐号,就会有对应的一个与帐号同名的组增加到group文件中。虽然这时passwd文 件中具有唯一性的[用户名]字段和group文件中具有唯一性的[组名]字段一样,并不代表着它们是通过这两个字段形成一一对应的关系的。千万别忘记,系 统对数字(UID,GID)更加敏感^_^。
分享到:
评论

相关推荐

    linux系统创建SFTP用户及权限限制实战步骤

    在linux系统创建SFTP用户及权限限制,文档目录如下: 一、 说明 1 二、 操作步骤 1 2.1 创建sftp用户组 1 2.2 配置chroot目录 1 2.3 创建sftp新用户 2 2.4 配置用户目录权限 3 2.5 配置sshd_config文件 5 2.6 重启...

    linux用户创建

     增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。这几个文件的内容在后面会做详细介绍。  Linux提供了集成的系统管理工具userconf,它可以用来对...

    linux下添加用户并赋予root权限

    * 用户名:指定新用户的登录名 例如: $ useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam。 四、删除帐号 如果一个用户的账号不再使用,可以从...

    如何在Linux创建FTP帐号

    2. 点击“添加用户”选项,然后“创建新用户”对话框将出现。在这个对话框中,我们需要添加两个帐号(picolight 和 saepicolight),然后填写帐号的属性! 备注:在“创建家目录”选项中,输入正确的家目录,这个...

    Linux中创建新用户并赋予指定目录的相关权限

    主要介绍了Linux中创建新用户并赋予指定目录的相关权限,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    详解Linux系统中设置SFTP服务用户目录权限的方法

    前言 在工作或者学习的时候...1.创建新用户ui,禁止ssh登录,不创建家目录 useradd -s /sbin/nologin -M www 2.设置用户密码 passwd www 3.创建用户的根目录,用户就只能在此目录下活动 mkdir /home/www 4.设置目录

    linux创建用户、文件夹、用户组的添加和删除的命令及解说

    Linux 用户、文件夹、用户组的添加和删除命令及解说 Linux 操作系统中创建用户、文件夹、用户组是非常常见的操作,下面将详细介绍相关的命令和解说。 创建用户 创建用户的命令是 `useradd`,其格式为 `useradd ...

    Linux下SFTP用户权限设置条件及实现命令

    众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置。必要条件: 你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置...

    linux下非root权限的mysql安装

    Linux 下非 root 权限的 MySQL 安装是指在 Linux 操作系统中,使用非 root 用户权限来安装和配置 MySQL 数据库服务器的过程。这种安装方式可以避免使用 root 权限,从而提高系统的安全性。 安装准备 在开始安装 ...

    Linux下如何进行SFTP用户权限设置.docx

    本文将详细介绍 Linux 下如何进行 SFTP 用户权限设置,包括创建用户组、创建用户、修改 ssh 配置文件、设置用户权限等步骤。 必要条件 在进行 SFTP 用户权限设置之前,需要确保 openssh-server 的版本至少是 4.8p1...

    linux文件权限设置.docx

    在 Linux 中,每个文件都有其所属的用户和组,并且每个用户和组都有其对应的权限。 基本权限 -------- 在 Linux 中,文件权限有三种基本权限:读(r)、写(w)和执行(x)。 * 读权限(r):可以读取文件,对...

    查阅Linux缺省的存取控制权限具体步骤.docx

    2. 使用以下命令创建新帐户 anyuser: /usr/sbin/useradd anyuser 3. 为 anyuser 帐户设置密码: /usr/sbin/passwd anyuser 4. 注销并且以 anyuser 帐户登录。 5. 查看 Linux 密码文件内容: /bin/cat /etc/passwd ...

    在Linux中添加普通新用户.docx

    在 Linux 中添加普通新用户 在 Linux 中,添加普通新用户是非常重要的,因为超级用户(root)拥有修改系统中任何文件的权力,可能会导致巨大的损失。因此,在日常工作中,不建议使用超级用户账号进入系统。 创建新...

    Linux下用户和进程的管理

     创建一个新用户user01,设置其主目录为/home/user01:#adduser –d /home/user01 -m user01  查看/etc/passwd文件的最后一行,看看是如何记录的。  查看文件/etc/shadow文件的最后一行,看看是如何记录的。 ...

    Linux系统中守护进程的创建方法.pdf

    守护进程的创建步骤包括脱离终端和会话期、更改当前目录、关闭打开的文件描述符、忽略信号、屏蔽信号、创建新会话期等。 在 Linux 中,守护进程可以使用 C 语言编程来实现,通过 fork 和 setsid 函数来创建守护进程...

    linux十二章-虚拟用户访问ftp.mp4

    anon_umask=022 (允许匿名用户上传文件有r权限,没有r权限不可下载) vim /var/ftp/pub/.message (切换目录提示信息) dirmessage_enable=YES (开始主配置文件该功能默认开启) 4.构建本地用户验证的FTP服务器,...

    linux用户和用户组管理

    每个部门具有不同的管理权限,每个人有不同的工作目录。为了管理方便,现要求为每个员工分配工作空间(登录目录)和工作部门(用户组),员工命名为 user01~user60,部门用户组名为 group1~group5, 其中用户ID从1000...

    linux中mkdir创建目录命令使用说明.docx

    Linux 操作系统中,mkdir 命令是一种基本的文件管理命令,用于创建新的目录结构。mkdir 命令的基本格式为:mkdir [选项] 目录...,其中选项部分是可选的,目录部分是必需的。 mkdir 命令的功能是创建一个新的目录,...

    linux手册.pdf

    用户可以使用 useradd 命令创建新的用户,使用 passwd 命令设置密码。 3. 内核 (Kernel) Linux 的内核是操作系统的核心部分,它负责管理硬件资源、进程调度、内存管理等。Linux 的内核版本号是 2.4.20-8。 4. ...

Global site tag (gtag.js) - Google Analytics