From: Gene Czarcinski <gene@czarc.net>
To: Stefan Behrens <sbehrens@giantdisaster.de>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] Btrfs-progs: Exit if not running as root
Date: Fri, 25 Jan 2013 07:03:19 -0500 [thread overview]
Message-ID: <51027487.9060701@czarc.net> (raw)
In-Reply-To: <51026F74.4020307@giantdisaster.de>
On 01/25/2013 06:41 AM, Stefan Behrens wrote:
> On Fri, 25 Jan 2013 06:32:30 -0500, Gene Czarcinski wrote:
>> This patch hits a lot of files but adds little code. It
>> could be considered a bugfix, Currently, when one of the
>> btrfs user-space programs is executed by a regular user,
>> the result if oftem a number of strange error messages
>> which do not indicate the real problem. This patch changes
>> that situation.
>>
>> A test is performed as to whether the program is running
>> as root. If it is not, issue an error message and exit.
>> Signed-off-by: Gene Czarcinski <gene@czarc.net>
>> ---
>> btrfs-corrupt-block.c | 5 +++++
>> btrfs-image.c | 5 +++++
>> btrfs-map-logical.c | 5 +++++
>> btrfs-select-super.c | 5 +++++
>> btrfs-show-super.c | 5 +++++
>> btrfs-show.c | 5 +++++
>> btrfs-vol.c | 5 +++++
>> btrfs-zero-log.c | 5 +++++
>> btrfs.c | 6 ++++++
>> btrfsck.c | 5 +++++
>> btrfsctl.c | 5 +++++
>> btrfstune.c | 5 +++++
>> calc-size.c | 5 +++++
>> convert.c | 6 ++++++
>> debug-tree.c | 5 +++++
>> dir-test.c | 5 +++++
>> find-root.c | 5 +++++
>> ioctl-test.c | 6 ++++++
>> mkfs.c | 5 +++++
>> quick-test.c | 6 ++++++
>> restore.c | 5 +++++
>> 21 files changed, 109 insertions(+)
>>
>> diff --git a/btrfs-corrupt-block.c b/btrfs-corrupt-block.c
>> index b57e757..083fd50 100644
>> --- a/btrfs-corrupt-block.c
>> +++ b/btrfs-corrupt-block.c
>> @@ -296,6 +296,11 @@ int main(int ac, char **av)
>>
>> srand(128);
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt_long(ac, av, "l:c:b:eEk", long_options,
>> diff --git a/btrfs-image.c b/btrfs-image.c
>> index 7dc131d..fd9b28a 100644
>> --- a/btrfs-image.c
>> +++ b/btrfs-image.c
>> @@ -831,6 +831,11 @@ int main(int argc, char *argv[])
>> int ret;
>> FILE *out;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while (1) {
>> int c = getopt(argc, argv, "rc:t:");
>> if (c < 0)
>> diff --git a/btrfs-map-logical.c b/btrfs-map-logical.c
>> index fa4fb3f..59f2f0e 100644
>> --- a/btrfs-map-logical.c
>> +++ b/btrfs-map-logical.c
>> @@ -116,6 +116,11 @@ int main(int ac, char **av)
>> int out_fd = 0;
>> int err;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt_long(ac, av, "l:c:o:b:", long_options,
>> diff --git a/btrfs-select-super.c b/btrfs-select-super.c
>> index 0c4f5c0..049379d 100644
>> --- a/btrfs-select-super.c
>> +++ b/btrfs-select-super.c
>> @@ -46,6 +46,11 @@ int main(int ac, char **av)
>> int num;
>> u64 bytenr = 0;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt(ac, av, "s:");
>> diff --git a/btrfs-show-super.c b/btrfs-show-super.c
>> index a9e2524..2fa4776 100644
>> --- a/btrfs-show-super.c
>> +++ b/btrfs-show-super.c
>> @@ -63,6 +63,11 @@ int main(int argc, char **argv)
>> int arg, i;
>> u64 sb_bytenr = btrfs_sb_offset(0);
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while ((opt = getopt(argc, argv, "ai:")) != -1) {
>> switch (opt) {
>> case 'i':
>> diff --git a/btrfs-show.c b/btrfs-show.c
>> index 8210fd2..6b3b91a 100644
>> --- a/btrfs-show.c
>> +++ b/btrfs-show.c
>> @@ -122,6 +122,11 @@ int main(int ac, char **av)
>> "** Please consider to switch to the btrfs utility\n"
>> "**\n");
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt_long(ac, av, "", long_options,
>> diff --git a/btrfs-vol.c b/btrfs-vol.c
>> index ad824bd..7e02f72 100644
>> --- a/btrfs-vol.c
>> +++ b/btrfs-vol.c
>> @@ -83,6 +83,11 @@ int main(int ac, char **av)
>> "** Please consider to switch to the btrfs utility\n"
>> "**\n");
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt_long(ac, av, "a:br:", long_options,
>> diff --git a/btrfs-zero-log.c b/btrfs-zero-log.c
>> index 1ea867b..80e4e38 100644
>> --- a/btrfs-zero-log.c
>> +++ b/btrfs-zero-log.c
>> @@ -45,6 +45,11 @@ int main(int ac, char **av)
>> struct btrfs_trans_handle *trans;
>> int ret;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> if (ac != 2)
>> print_usage();
>>
>> diff --git a/btrfs.c b/btrfs.c
>> index 687acec..328966b 100644
>> --- a/btrfs.c
>> +++ b/btrfs.c
>> @@ -18,6 +18,7 @@
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <string.h>
>> +#include <unistd.h>
>>
>> #include "crc32c.h"
>> #include "commands.h"
>> @@ -261,6 +262,11 @@ int main(int argc, char **argv)
>> {
>> const struct cmd_struct *cmd;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> crc32c_optimization_init();
>>
>> argc--;
>> diff --git a/btrfsck.c b/btrfsck.c
>> index 6274ff7..bdfdfc5 100644
>> --- a/btrfsck.c
>> +++ b/btrfsck.c
>> @@ -3501,6 +3501,11 @@ int main(int ac, char **av)
>> int init_csum_tree = 0;
>> int rw = 0;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt_long(ac, av, "as:", long_options,
>> diff --git a/btrfsctl.c b/btrfsctl.c
>> index 049a5f3..cbe41e7 100644
>> --- a/btrfsctl.c
>> +++ b/btrfsctl.c
>> @@ -113,6 +113,11 @@ int main(int ac, char **av)
>> "** Please consider to switch to the btrfs utility\n"
>> "**\n");
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> if (ac == 2 && strcmp(av[1], "-a") == 0) {
>> fprintf(stderr, "Scanning for Btrfs filesystems\n");
>> btrfs_scan_one_dir("/dev", 1);
>> diff --git a/btrfstune.c b/btrfstune.c
>> index 6950f74..d4017f1 100644
>> --- a/btrfstune.c
>> +++ b/btrfstune.c
>> @@ -79,6 +79,11 @@ int main(int argc, char *argv[])
>> int seeding_value = 0;
>> int ret;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c = getopt(argc, argv, "S:");
>> if (c < 0)
>> diff --git a/calc-size.c b/calc-size.c
>> index c4adfb0..0d3442c 100644
>> --- a/calc-size.c
>> +++ b/calc-size.c
>> @@ -194,6 +194,11 @@ int main(int argc, char **argv)
>> int opt;
>> int ret = 0;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while ((opt = getopt(argc, argv, "vb")) != -1) {
>> switch (opt) {
>> case 'v':
>> diff --git a/convert.c b/convert.c
>> index 1de2a44..1b0e27c 100644
>> --- a/convert.c
>> +++ b/convert.c
>> @@ -2770,6 +2770,12 @@ int main(int argc, char *argv[])
>> int datacsum = 1;
>> int rollback = 0;
>> char *file;
>> +
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c = getopt(argc, argv, "dinr");
>> if (c < 0)
>> diff --git a/debug-tree.c b/debug-tree.c
>> index f6bd5d8..5b2f531 100644
>> --- a/debug-tree.c
>> +++ b/debug-tree.c
>> @@ -129,6 +129,11 @@ int main(int ac, char **av)
>> u64 block_only = 0;
>> struct btrfs_root *tree_root_scan;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> radix_tree_init();
>>
>> while(1) {
>> diff --git a/dir-test.c b/dir-test.c
>> index c7644d6..9fa5b06 100644
>> --- a/dir-test.c
>> +++ b/dir-test.c
>> @@ -433,6 +433,11 @@ int main(int ac, char **av)
>> int err = 0;
>> int initial_only = 0;
>> struct btrfs_trans_handle *trans;
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> radix_tree_init();
>>
>> root = open_ctree(av[ac-1], &super, 0);
>> diff --git a/find-root.c b/find-root.c
>> index 83f1592..06465eb 100644
>> --- a/find-root.c
>> +++ b/find-root.c
>> @@ -414,6 +414,11 @@ int main(int argc, char **argv)
>> int opt;
>> int ret;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while ((opt = getopt(argc, argv, "vo:")) != -1) {
>> switch(opt) {
>> case 'v':
>> diff --git a/ioctl-test.c b/ioctl-test.c
>> index 1c27d61..299d2af 100644
>> --- a/ioctl-test.c
>> +++ b/ioctl-test.c
>> @@ -1,5 +1,6 @@
>> #include <stdio.h>
>> #include <stdlib.h>
>> +#include <unistd.h>
>> #include "kerncompat.h"
>> #include "ioctl.h"
>>
>> @@ -28,6 +29,11 @@ unsigned long ioctls[] = {
>> int main(int ac, char **av)
>> {
>> int i = 0;
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while(ioctls[i]) {
>> printf("%lu\n" ,ioctls[i]);
>> i++;
>> diff --git a/mkfs.c b/mkfs.c
>> index a129ec4..501e384 100644
>> --- a/mkfs.c
>> +++ b/mkfs.c
>> @@ -1274,6 +1274,11 @@ int main(int ac, char **av)
>> u64 source_dir_size = 0;
>> char *pretty_buf;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", av[0]);
>> + exit(1);
>> + }
>> +
>> while(1) {
>> int c;
>> c = getopt_long(ac, av, "A:b:l:n:s:m:d:L:r:VMK", long_options,
>> diff --git a/quick-test.c b/quick-test.c
>> index 05d73fd..e2d6f78 100644
>> --- a/quick-test.c
>> +++ b/quick-test.c
>> @@ -19,6 +19,7 @@
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <fcntl.h>
>> +#include <unistd.h>
>> #include "kerncompat.h"
>> #include "radix-tree.h"
>> #include "ctree.h"
>> @@ -49,6 +50,11 @@ int main(int ac, char **av) {
>> buf = malloc(512);
>> memset(buf, 0, 512);
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> radix_tree_init();
>>
>> root = open_ctree(av[1], BTRFS_SUPER_INFO_OFFSET, O_RDWR);
>> diff --git a/restore.c b/restore.c
>> index 80afb84..4efc8b5 100644
>> --- a/restore.c
>> +++ b/restore.c
>> @@ -771,6 +771,11 @@ int main(int argc, char **argv)
>> int super_mirror = 0;
>> int find_dir = 0;
>>
>> + if (geteuid() != 0) {
>> + fprintf(stderr,"Error: %s must run as root\n", argv[0]);
>> + exit(1);
>> + }
>> +
>> while ((opt = getopt(argc, argv, "sviot:u:df:")) != -1) {
>> switch (opt) {
>> case 's':
>>
> 21 times copy & paste, you set a new record :)
>
I was very tempted to do a little more. I know that there is no
standard that says the two parameters of main() are named argc and argv
but it is traditional. I could not believe I got errors because it was
named av instead of argv. But, patches like this should stay on topic.
Gene
next prev parent reply other threads:[~2013-01-25 12:03 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-25 11:32 [PATCH] Btrfs-progs: Exit if not running as root Gene Czarcinski
2013-01-25 11:41 ` Stefan Behrens
2013-01-25 12:03 ` Gene Czarcinski [this message]
2013-01-25 12:17 ` Stefan Behrens
2013-01-25 13:22 ` Gene Czarcinski
2013-01-25 11:55 ` Roman Mamedov
2013-01-25 12:29 ` Gene Czarcinski
2013-01-25 12:43 ` Hugo Mills
2013-01-25 15:19 ` Brendan Hide
2013-01-25 13:00 ` Roman Mamedov
2013-01-25 13:52 ` Russell Coker
2013-01-25 15:04 ` Gene Czarcinski
2013-01-25 15:10 ` Gene Czarcinski
2013-01-25 15:30 ` cwillu
2013-01-25 16:06 ` Eric Sandeen
2013-01-26 2:18 ` Russell Coker
2013-01-26 7:46 ` Goffredo Baroncelli
2013-01-25 15:07 ` Eric Sandeen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51027487.9060701@czarc.net \
--to=gene@czarc.net \
--cc=linux-btrfs@vger.kernel.org \
--cc=sbehrens@giantdisaster.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).